On Sep 25, 2011, at 10:27 PM, Puneet Kishor wrote:

> Hmmmm... the mystery deepens. Turns out, when I do the following 
> 
>       var lyrs = map.getLayersByName("a_layer");
>       map.removeLayer(lyres[0]);
> 
> 
> The layer does get removed from the layer switcher, but its features remain 
> drawn on the map. That's not good because subsequent drawing of that layer 
> results in twice as many features on the map.
> 
> On the other hand, if I do the following
> 
>       var lyrs = map.getLayersByName("a_layer");
>       lyrs[0].removeAllFeatures();
> 
> Then the features get removed from the layer but the layer itself remains in 
> the layer switcher. That's not good because while my map now looks fine, the 
> layer switcher now has two layers (and more if I rinse, lather, repeat) 
> called "a_layer".
> 
> I am not sure what the right terminology is, but I effectively want to remove 
> the layer so its features disappear. Then I can redraw that layer.
> 




The following code does what I want --

        var lyr_list = map.getLayersByName("a_layer");
        if (typeOf(lyr_list) === "array") {
                for (var i in lyr_list) {
                        lyr_list[i].removeAllFeatures();
                        removeLayer(lyr_list[i]);
                }
        }

Surely, the above couldn't be the most optimum way, could it?





> Suggestions?
> 
>       
> On Sep 25, 2011, at 9:42 PM, Puneet Kishor wrote:
> 
>> Am at my wit's end trying to remove a layer. Would welcome any suggestion on 
>> the following. Essentially, I want to remove a layer called "foo" from my 
>> map, so I may redraw "foo" with new data.
>> 
>> 
>> On Sep 25, 2011, at 9:04 AM, Mr. Puneet Kishor wrote:
>> 
>>> I spoke too soon...
>>> 
>>> On Sep 24, 2011, at 3:58 PM, Mr. Puneet Kishor wrote:
>>> 
>>>> I would like to remove a layer by name. The only method I see for removing 
>>>> layer seems to take a layer object, which implies something like so
>>>> 
>>>> var lyr_list = map.getLayersByName(name);
>>>> 
>>>> Why does the above return a list? Under what use case would one have more 
>>>> than one layer by the same name? In any case, I have all layers with 
>>>> unique names, so the list would always have only one element.
>>>> 
>>>> map.removeLayer(lyr_list[0]);
>>>> 
>>>> The above works, but is there a more efficient or better way?
>>> 
>>> 
>>> Here is my code that does not work
>>> 
>>>  var lyrs = map.getLayersByName("a_layer");
>>>  alert("got " + typeof(lyrs[0]) + 
>>>      " called " + lyrs[0].name + 
>>>      " with id " + lyrs[0].id);
>>>  map.removeLayer(lyrs[0]);
>>> 
>>> The alert window shows the correctly that it got an object with the right 
>>> layer name and id. Yet, the layer is not removed from the map... at least, 
>>> it is still visible, so when the new layer draws, I see a mess of features.
>>> 
>>> What is my error?
>>> 
>>> Thanks,
>>> 
>>> Puneet.
>> 
> 

_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to