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]);
        }
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

定位算法工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值