删除功能数组(OpenLayers 4)



我试图从OpenLayers 4地图中删除一系列特征。 我不想清除源中的所有功能。向阵列中添加了一些选定的功能。

目前,正在迭代数组并使用它。source.removeFeature(array[index]);

除了多次循环之外,还有什么方法可以一次删除数组中的特征?

注意:我不想删除源中的所有功能,而只想删除 我已添加到数组中的功能

法典:

var docketSource = new ol.source.Vector({
url: dataUrl,
format: new ol.format.TopoJSON()
});
var redFeatures = [];
function removeRedFeature(redFeatures) {
for (var i = 0; i < redFeatures.length; i++) {
docketSource.removeFeature( redFeatures[i] );
}
}

您的解决方案是一个解决方案,但您也可以使用返回ol.Featuresol.CollectiondocketSource.getFeaturesCollection()。然后,您可以操作返回的集合并使用函数remove

所以,你可以做docketSource.getFeaturesCollection().remove(yourfeature);但是,如果需要循环访问集合,则将使用集合forEach方法,该方法类似于解决方案。

看看ol.Collection方法,看看它们是否更适合你的目的。

假设您的sourceol.source.Vector,您可以通过执行以下操作来执行clear()

source.clear()

我对你的问题有点困惑,但你提到了"选定的功能"。也许这就是你所追求的?

var select = new ol.interaction.Select();
select.getFeatures().forEach(function(feature){
docketSource.removeFeature(feature);
});

有关详细信息,请参阅 http://openlayers.org/en/v3.0.0/apidoc/ol.source.Vector.html#clear。

更新OL 2.13.1中有一个removeFeatures函数。

删除功能:功能(功能,选项(

从图层中移除要素。 这将拭除所有绘制的要素,并将其从图层的控制中移除。 将为每个功能触发之前的功能删除和功能删除事件。 删除所有功能后,将触发功能删除事件。 要禁止事件触发,请使用静默选项。

请参阅:http://dev.openlayers.org/releases/OpenLayers-2.13.1/doc/apidocs/files/OpenLayers/Layer/Vector-js.html#OpenLayers.Layer.Vector.removeFeatures

removeFeature 是唯一从 ol.source.Vector 中删除某些功能的 API 函数。(见 https://github.com/openlayers/openlayers/blob/v4.6.5/src/ol/source/vector.js(

如果你遇到触发大量事件或类似事件的问题,你可以扩展 ol.source.Vector 类并实现一个 removeFeatures 函数,例如修改 clear 函数或将 clear 与 removeFeature 合并。

相关内容

  • 没有找到相关文章

最新更新