[ka-Map-users] Kamap removeMapLayer
Paul Spencer
pspencer at dmsolutions.ca
Thu Sep 6 22:04:16 EDT 2007
Hi Stéphane,
Is this working for you? We are looking at a 1.1 release soon and I
would like to include this in it.
Paul
On 6-Sep-07, at 8:38 AM, Stéphane RIFF wrote:
> Hi,
>
> I have made a workaround for the kaLegend draw() function.
> I don't know if it's totally ok but it seems to work.
>
> Can you have look and tell me if you see some problem so I can
> improve it ?
>
> Here is the draw function :
> Remove the line with "--" and add the ones with "++"
>
> /**
> * legend.draw( szContents )
> *
> * render the contents of a legend template into a div
> */
> kaLegend.prototype.draw = function() {
> /*modificato da kappu non trova url corretto se non lo metto anche
> qui*/
> this.urlBase = this.kaMap.server;
> this.urlBase += (this.urlBase!=''&&this.urlBase.substring(-1)!
> ='/')?'':'/';
>
> var oMap = this.kaMap.getCurrentMap();
>
> this.expanders = [];
> this.queryCBs = [];
>
> if (this.domObj.childNodes.length == 0) {
> this.domObj.appendChild(this.createHeaderHTML());
> }
>
> var aLayers = oMap.getAllLayers();
> -- for (var i=(aLayers.length-1);i>=0;i--) {
> -- if (aLayers[i].kaLegendObj == null) {
> -- this.createLayerHTML( aLayers[i] );
> -- } else {
> -- try{this.domObj.removeChild( aLayers[i].kaLegendObj );}
> -- catch(e){};
> -- }
> -- }
> ++ var childs = this.domObj.childNodes;
> ++ for (var i=(childs.length-1);i>=0;i--) {
> ++ if(childs[i].className == "kaLegendLayer") {
> ++ try{this.domObj.removeChild( childs[i] );}
> ++ catch(e){};
> ++ }
> ++ }
>
> for (var i=(aLayers.length-1);i>=0;i--) {
> ++ this.createLayerHTML( aLayers[i] );
> this.domObj.appendChild( aLayers[i].kaLegendObj );
> }
>
> if (this.kaMap.isIE4) {
> for(var i=0; i<this.queryCBs.length; i++) {
> this.queryCBs[i].checked = this.queryCBs[i].oLayer.visible;
> }
> }
> return;
> };
>
> Thanks,
> Hope this help.
>
> Stephane
>
> Paul Spencer wrote:
>
>> this appears to be a bug in kaLegend draw() method, it rebuilds
>> the legend based on the layers in the map but in doing so it only
>> removes legend entries for layers that are in the map - so once a
>> layer is removed, and draw is called (through
>> KAMAP_LAYERS_CHANGED event), the legend entry will not be removed.
>>
>> Patches welcome.
>>
>> Cheers
>>
>> Paul
>>
>> On 31-Aug-07, at 10:57 AM, Stéphane RIFF wrote:
>>
>>> Hi,
>>>
>>> I use the removeMapLayer but I have a problem.
>>> With addMapLayer, the layer is added to the legend too but with
>>> removeMapLayer the layer isn't remove from legend.
>>>
>>> Can someone tell me how to remove a layer from the legend ?
>>>
>>> Thanks
>>> Steff
>>> _______________________________________________
>>> ka-Map-users mailing list
>>> ka-Map-users at lists.maptools.org
>>> http://lists.maptools.org/mailman/listinfo/ka-map-users
>>
>>
>> +-----------------------------------------------------------------+
>> |Paul Spencer pspencer at dmsolutions.ca |
>> +-----------------------------------------------------------------+
>> |Chief Technology Officer |
>> |DM Solutions Group Inc http://www.dmsolutions.ca/ |
>> +-----------------------------------------------------------------+
>>
>>
>>
>>
>>
>>
>
+-----------------------------------------------------------------+
|Paul Spencer pspencer at dmsolutions.ca |
+-----------------------------------------------------------------+
|Chief Technology Officer |
|DM Solutions Group Inc http://www.dmsolutions.ca/ |
+-----------------------------------------------------------------+
More information about the ka-Map-users
mailing list