javascript – 无法从地图中删除所有图层

前端之家收集整理的这篇文章主要介绍了javascript – 无法从地图中删除所有图层前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个大的地图应用程序,所以为了代表我将只提供一大块代码.所以,这是我尝试从地图中删除所有图层的方式:

map.getLayers().forEach(function (layer) {
    map.removeLayer(layer);
});

//map.getOverlays().clear(); <-- also tried this,but to no effect

而且我有一些随机的行为 – 有时候所有的图层都会删除,有时则不会.这是完全随机的,因此无法保证您将能够重现此问题.所以,我可能只是在概念上知道它为什么会发生.

这显然是一个ol3错误,因为如果我循环和删除两次,那么它开始工作:

map.getLayers().forEach(function (layer) {
    map.removeLayer(layer);
});
//for some crazy reason I need to do it twice.
map.getLayers().forEach(function (layer) {
    map.removeLayer(layer);
});

可能,这不是一个错误,并且有一些秘密方法可以清除地图.但我不知道.

最佳答案
这不是一个错误.您的代码不起作用的原因是因为您在循环遍历它时修改了图层集合.这样做会更改每个图层的索引,并会导致意外的结果.

清除地图所有图层的正确方法是使用ol.Map#setLayerGroup():

map.setLayerGroup(new ol.layer.Group());
原文链接:https://www.f2er.com/js/429105.html

猜你在找的JavaScript相关文章