步骤:先获取layer数组,再根据id取出指定layer,对该layer中的featrue进行遍历,在根据条件操作遍历得到的feature。
//需要在加入map前设置id
const mapLayer = new VectorLayer({//map的第三个图层
source: new VectorSource({
features: []
})
});
mapLayer.set('maplayer', mapLayer);
map.addLayer(mapLayer);
//feature也是需要在加入layer前设置id
let polygonFeature = new Feature(polygon);
// 设置要素的图标
polygonFeature.setStyle(polygonStyle);
polygonFeature.setId('polygonFeature');
利用layer.getSource().forEachFeature((feature: any) => { })方法进行删除
let layerarr = map..getLayers().getArray();
//判断指定的那个Feature是否存在,若存在就删除并添加新的feature,不存在就直接添加新的feature
if (layerarr[3].get('maplayer').getSource()?.getFeatureById('polygonFeature')) {
layerarr[3]
.get('maplayer')
.getSource()
.forEachFeature((feature: any) => {
//取出feature的id为'polygonFeature'的要素并删除
if (feature.id_ === 'polygonFeature') {
let polygonfeature = layerarr[3]
.get('maplayer')
.getSource()
?.getFeatureById('polygonFeature');
layerarr[3].get('maplayer').getSource().removeFeature(polygonfeature);
layerarr[3].get('maplayer').getSource().addFeatures([polygonFeature]);
}
});
}else {
layerarr[3].get('maplayer').getSource().addFeatures([polygonFeature]);
}