百度地图API,如何通过标注名 来删除标注

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度地图API,如何通过标注名 来删除标注相关的知识,希望对你有一定的参考价值。

百度地图API,如何通过标注名 来删除指定标注
假设 一个 按钮,点一下 添加一个 标注并有标注名,然后 我在 text框里面,输入指定名字 ,来删除该标注
比如:
写一个 函数 刚载入的时候 随机添加 25个点并赋予不同的名字,然后 用你说的方法是可以删除指定的点的,
但是 ,我这个是 载入完成后 ,通过 “button” 事件 进行 添加 的点,然后 再使用 该 删除 函数 就 删不掉指定的点。我JS不咋的,怀疑是不是 ,该函数 获取不到 后期添加的点。是不是得 类似 刷新一下 才能获取
删除 代码如下:
//删除指定点
function deletePoint()
var allOverlaya = map.getOverlays();
var zz = document.getElementById("bzm").value; //获取自定义 删除 点 名字
for (var i = 0; i < allOverlaya.length -1; i++)
if(allOverlaya[i].getLabel().content == zz)
map.removeOverlay(allOverlaya[i]);
return false;



//以上函数

  方法一、给地图增加一个事件监听,addEventListener,当右击地图时,出现右键菜单,可删除标注。

  方法二、给标注增加事件监听,右键点击标注,即可删除。

参考技术A 先用getOverlays()获取所有覆盖物,遍历其中类型为marker的标注,如果marker.getLable()=“xxx”,用removeOverlay(overlay)删除。
大概思路就这样,其实我也没试过,你可以参考一下。追问

比如:

写一个 函数 刚载入的时候 随机添加 25个点并赋予不同的名字,然后 用你说的方法是可以删除指定的点的,
但是 ,我这个是 载入完成后 ,通过 “button” 事件 进行 添加 的点,然后 再使用 该 删除 函数 就 删不掉指定的点。我JS不咋的,怀疑是不是 ,该函数 获取不到 后期添加的点。是不是得 类似 刷新一下 才能获取
删除 代码如下:

追答

你的marker是怎么添加的?map.addOverlay(marker)?在你自己增加marker的时候加一句:
marker.enableMassClear();试试看。

本回答被提问者采纳

百度地图api不能为每个标注添加自己的事件处理吗?

var map = new BMap.Map("container");
var point;
var myArray=new Array()
for(var i=1;i<10;i++)

point = new BMap.Point(116.404+(i/1000), 39.915+(i/1000));
myArray[i]=point;

map.centerAndZoom(point, 15);
map.addControl(new BMap.NavigationControl()); //导航
var marker;
for(var j=1;j<10;j++)
marker = new BMap.Marker(myArray[j]); // 创建标注
marker.addEventListener("click",function()
marker.openInfoWindow(new BMap.InfoWindow(i));
//this.openInfoWindow(new BMap.InfoWindow(i)); 这样效果一样的

);
marker.setLabel(new BMap.Label("我是百度,呵呵",offset:new BMap.Size(10,-40)));
map.addOverlay(marker);
// 将标注添加到地图中

显示信息窗口值都为10,说明前面9个marker的事件被覆盖,怎样才能为每个marker添加自己的事件处理内容而不被其他的覆盖呢?

我修改了一下你的代码,用函数就可以了

var map = new BMap.Map("container");
var point;
var myArray=new Array()
for(var i=1;i<10;i++)

point = new BMap.Point(116.404+(i/1000), 39.915+(i/1000));
myArray[i]=point;

map.centerAndZoom(point, 15);
map.addControl(new BMap.NavigationControl()); //导航
var marker;
for(var j=1;j<10;j++)

addMarker(j);

// 将标注添加到地图中

function addMarker(k)

marker = new BMap.Marker(myArray[k]); // 创建标注
map.addOverlay(marker);

var infoWindow = new BMap.InfoWindow(k); // 创建信息窗口对象

marker.addEventListener("click", function()
this.openInfoWindow(infoWindow);
);
marker.setLabel(new BMap.Label("我是百度,呵呵",offset:new BMap.Size(10,-40)));
参考技术A for(var j=1;j<10;j++)
marker = new BMap.Marker(myArray[j]); // 创建标注
var n = i;
marker.addEventListener("click",(function()
return function(n)

marker.openInfoWindow(new BMap.InfoWindow(n));


)());

以上是关于百度地图API,如何通过标注名 来删除标注的主要内容,如果未能解决你的问题,请参考以下文章

百度地图API标注问题

百度地图Api详解之地图标注

百度地图api 为啥刚添加的标注无法删除?

百度地图API-标注点添加标签

百度地图API,在地图上添加了一个标注,怎么才能让这个标注随着地图缩放而缩放呢?

百度地图api不能为每个标注添加自己的事件处理吗?