vuebaidumap 删除覆盖物_百度地图api清除指定覆盖物

1、首先在官网api demo有如下例子:(地址:http://lbsyun.baidu.com/jsdemo.htm?a#c1_17)

// 百度地图API功能

var map = new BMap.Map("allmap");

var point = new BMap.Point(116.404, 39.915);

map.centerAndZoom(point, 15);

map.disableDoubleClickZoom(true);

// 编写自定义函数,创建标注

function addMarker(point,label){

var marker = new BMap.Marker(point);

map.addOverlay(marker);

marker.setLabel(label);

}

// 随机向地图添加25个标注

var bounds = map.getBounds();

var sw = bounds.getSouthWest();

var ne = bounds.getNorthEast();

var lngSpan = Math.abs(sw.lng - ne.lng);

var latSpan = Math.abs(ne.lat - sw.lat);

for (var i = 0; i < 10; i++) {

var point = new BMap.Point(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7));

var label = new BMap.Label("我是id="+i,{offset:new BMap.Size(20,-10)});

addMarker(point,label);

}

function deletePoint(){

var allOverlay = map.getOverlays();

for (var i = 0; i < allOverlay.length -1; i++){

if(allOverlay[i].getLabel().content == "我是id=1"){

map.removeOverlay(allOverlay[i]);

return false;

}

}

}

我们会发现 map.getOverlays() 函数会返回 页面 覆盖物的个数+1 个;

言归正传:在百度api里,清除覆盖物有两个方法:map.removeOverlay()或者 map.clearOverlays()。而 clearOverlays()方法一次移除所有的覆盖物,removeOverlay()一次移除一个指定覆盖物。

现在我的需求是如图:

点击左边的人员后,右边对应的人员显示自己管理的圆圈范围。同时清除 其他人员的圆圈区域(也就是说地图只显示当前管理员的管理区域),所以每次点击需要清除已有的圆圈。

api又提供了另外2个配套的方法:disableMassClear()  和 enableMassClear();

disableMassClear():官网文档解释 禁止覆盖物在 map.clearOverlays 方法中被清除。 (自 1.1新增)

enableMassClear():官网文档解释 允许覆盖物在 map.clearOverlays 方法中被清除。 (自 1.1新增)

实现该功能的步骤如下:

第一步:在添加覆盖的时候对不需要进行移除操作的覆盖设置disableMassClear();

marker.setLabel(label);

this.map.addOverlay(marker);//增加点

marker.disableMassClear(); //mark不被清除

第二步:清除所要清除的覆盖物,这里需要清除所有的Polyline而不清除marker,现在可以直接使用

var circle = new BMap.Circle(poi,dis,{fillColor:"blue", strokeWeight: 1 ,fillOpacity:

0.3,strokeOpacity: 0.3});

this.map.clearOverlays();

this.map.addOverlay(circle);

只需2步,功能就完成了

如果现在需要对marker进行移除操作时,可以使用enableMassClear()方法来取消禁止清除;

var allOverlay = map.getOverlays();

for (var i = 0; i < allOverlay.length; i++) {

allOverlay[i].enableMassClear();

return false;

};

参考:http://blog.csdn.net/frees_zhu/article/details/73743785

全部代码:

window.visualMonitor ={

path:$("#path").val(),

map:new BMap.Map("bdMap"),

initMapBdMap:function(){//初始地图高度

var mapHeight = $(window).height() - 85;

$("#bdMap").css({"height":mapHeight});

$("#treeContainer").niceScroll({

cursoropacitymin: 0,

cursoropacitymax: 1,

zindex:99,

cursorwidth: "5px",

cursorborder: "none",

cursorborderradius

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值