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