我正在使用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)才能删除所有功能。我真的很想知道,为什么会这样,我该如何解决它。谢谢!
答案 0 :(得分:0)
正如Karl-JohanSjögren所指出的,在遍历它时删除数组成员会修改数组本身,因此,您使用反向数组或使用数组MDN reference中的本机函数:
features = source.getFeatures();
features.forEach(function (feature){
source.removeFeature(feature);
});