gpt4 book ai didi

javascript - 无法从 map 中删除所有图层

转载 作者:数据小太阳 更新时间:2023-10-29 04:38:09 26 4
gpt4 key购买 nike

我有一个大型 map 应用程序,因此为了具有代表性,我将不得不提供一小段代码。所以,这就是我尝试从 map 中删除所有图层的方法:

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);
});

可能这不是错误,并且有一些 secret 方法可以清除 map 。但我不知道。

最佳答案

这不是错误。您的代码不起作用的原因是因为您在循环遍历图层集合时正在修改它。这样做会改变每一层的索引,并会导致意想不到的结果。

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

map.setLayerGroup(new ol.layer.Group());

关于javascript - 无法从 map 中删除所有图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40862706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com