百度地图清除指定覆盖物
程序员文章站
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]);
}
}
}
所以就转换思路,在代码里做文章,可以先清除所有再对需要的进行打点,目前我是这么做的,哈哈哈,大佬可以提供参考意见,必定虚心领教。