繁体   English   中英

OpenLayers 3中的源代码清除BUG

[英]source clear BUG in OpenLayers 3

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

清除(opt_fast)

从源中删除所有功能。

但是,当我像这样将其应用于图层源时:

layer.getSource().clear();

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

我还尝试删除以下功能:

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

但这确实很奇怪。 例如,如果我有四个功能,则当我循环一次时,它将仅删除两个功能,而当我循环两次时,将删除一个额外的功能。 总而言之,我必须循环3次(实际上不是DRY)才能删除所有功能。 我真的很好奇,为什么会这样以及如何解决它。 谢谢!

正如Karl-JohanSjögren指出的那样,在迭代遍历时删除数组成员会修改数组本身,因此,您可以使用反向数组或使用Array MDN参考中的本机函数:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM