欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

百度地图清除指定覆盖物

程序员文章站 2022-07-02 09:25:03
...

1.清除marker标注

   var allOverlay = this.map.getOverlays();
   if (allOverlay.length) {
      for (var i = 0; i < allOverlay.length; i++) {
          if (allOverlay[i].toString() == "[object Marker]") {
              this.map.removeOverlay(allOverlay[i]);
          }
      }
   }

2.清除路线

var allOverlay = this.map.getOverlays();
if (allOverlay.length) {
   for (var i = 0; i < allOverlay.length; i++) {
       if (allOverlay[i].toString() == "[object Polyline]") {
          this.map.removeOverlay(allOverlay[i]);
       }
   }
}

3.清除所有覆盖物

this.map.clearOverlays();

4.也可以添加自定义属性(亲测时好时坏,原因还没有找到,大佬可否指点一二?)

//添加标注
var point = new BMap.Point(
    Number(this.selectedPoint.jingweidu.split(",")[0]),
    Number(this.selectedPoint.jingweidu.split(",")[1])
);
var marker = new BMap.Marker(point,{
    icon: new BMap.Symbol(BMap_Symbol_SHAPE_POINT, {
          scale: 1,
          fillColor: "#F19E0F",
          fillOpacity: 0.8,
         }),
    });
marker.customData = {biaoshi: 'ziyuan' }
this.map.addOverlay(marker);

//清除标注
var allOverlay = this.map2.getOverlays();
    if (allOverlay.length) {
        for (var i = 0; i < allOverlay.length; i++) {
            if (allOverlay[i].toString() == "[object Marker]" && allOverlay[i].customData .biaoshi=="ziyuan") {//有时候这个biaoshi就是undefined,就没实现
              this.map2.removeOverlay(allOverlay[i]);
            }
         }
 }

所以就转换思路,在代码里做文章,可以先清除所有再对需要的进行打点,目前我是这么做的,哈哈哈,大佬可以提供参考意见,必定虚心领教。