2016-07-08 57 views
0

因此,我正在检查是否有办法删除Openlayers 3中图像图层上存在的特征(例如ol.layer.Image({}))。下面是我用它来创建层代码:如何删除图层中的特征,Openlayers 3

var vector = new ol.layer.Image({ 
    tethys_legend_title: titleName, 
    zIndex: 1, 
    source: new ol.source.ImageVector({ 
     source: vectorSource, 
     style: styleFunction, 
    }), 
}); 

// Make sure that the layer is not already existing, remove it if the layer does exist 
map = TETHYS_MAP_VIEW.getMap(); 
for (i = 0; i < map.getLayers().getProperties().length ; i ++){ 
    if (map.getLayers().item(i).getProperties().tethys_legend_title === titleName) 
     map.removeLayer(map.getLayers().item(i)); 
} 
vector.tethys_legend_title = 'Water Table'; 
map.addLayer(vector); 

我目前了解,可以的OpenLayers被删除功能的方法是通过.removeFeature()方法。但是,removeFeature()方法仅适用于矢量图层。有没有办法删除与图像图层有关的功能?谢谢

+0

您是否试过从原始vectorSource中删除功能?你可以像这样得到你的特性:'vector.getSource()。getSource()',然后从那里调用'removeFeature'。 –

+0

这就像一个魅力,谢谢你!如果你让它成为答案,我会选择它作为正确的答案。 我注意到没有通用的方法来删除图像图层特征,所以如果图像图层的来源不是矢量特征,那么openlayers似乎没有从图像图层去除特征的一般方法。 – Jacob

回答

1

首先,您需要访问图像源中的矢量源:vector.getSource().getSource()。然后,您将可以使用removeFeature方法,即从ol.source.Vector返回的对象。

相关问题