清除OpenLayers 3中的BUG

时间:2016-12-17 12:02:47

标签: javascript openlayers openlayers-3

我正在使用OpenLayers 3(v3.20)。我想要实现的只是从特定图层中删除所有功能。我看到有一个clear方法和文档说,

  

清晰(opt_fast)

     

从源中删除所有功能。

然而,当我将它应用于我的图层源时,如下所示:

layer.getSource().clear();

我看到一个闪烁(功能被删除),然后我看到一个服务器请求,以便再次重新加载功能。因此,文档不完整,或者存在错误。

我还试图删除这样的功能:

features = source.getFeatures();
for (i = 0; i < features.length; i += 1) {
    source.removeFeature(features[i]);
}

但它真的很奇怪。例如,如果我有四个特征,当我循环一次时,它只删除两个特征,当我循环两次时,一个额外的特征被删除。总而言之,我必须循环三次(确实不是DRY)才能删除所有功能。我真的很想知道,为什么会这样,我该如何解决它。谢谢!

1 个答案:

答案 0 :(得分:0)

正如Karl-JohanSjögren所指出的,在遍历它时删除数组成员会修改数组本身,因此,您使用反向数组或使用数组MDN reference中的本机函数:

features = source.getFeatures();
features.forEach(function (feature){
  source.removeFeature(feature);
});