openlayers中根据id获取指定layer并删除该layer中的指定的feature要素

步骤:先获取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]);
        }

猜你喜欢

转载自blog.csdn.net/qq_37967853/article/details/128970952
今日推荐