从OpenLayers矢量层删除/删除要素


15

我有一个OpenLayers图层,上面有几个向量。我知道OpenLayers功能ID(例如OpenLayers.Feature.Vector_241),我想知道如何删除此功能,而仅删除此功能?

我考虑过将它们全部删除,然后循环遍历数组以重绘它们,但这似乎有点不雅,而且很费劲。

我尝试了以下版本的各种代码:

layer.removeFeatures( featureID );

layer.removeFeatures( [featureID] );

layer.removeFeatures( {feature : featureID });

等等...

欢迎所有帮助!

谢谢

C

Answers:


20

我认为OpenLayers无法通过提供来删除功能featureID。似乎只能通过提供一个功能或一组功能来删除功能:

layer.removeFeatures(featureObject);

但是您可以先定位该功能,然后删除找到的功能:

layer.removeFeatures(layer.getFeatureById(featureID));

或类似(如果不是您拥有的OpenLayers FeatureID),则

layer.removeFeatures(layer.getFeatureBy('myId', myID));

我喜欢这种想法!问题是尽管“ layer.getFeatureById(featureID))”语句返回null,所以removeFeature()不起作用。我100%表示我拥有正确的FeatureID。...还有其他想法吗?
CatchingMonkey

1
刮一下。我使用了错误的featureID。我使用您的第二个示例,它运行完美。好一个!
CatchingMonkey

5

这为我工作:

*layer.removeFeatures(featureObject);*

但是我已经将该功能作为全局变量使用,也许在其他情况下,您应该尝试保留功能ID以便搜索将其删除。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.