作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想删除我添加到 map 上的标记。但是,当我通过 javascript 代码中调用的函数添加标记时,我可以正确删除它,但是当我通过添加按钮添加标记时,我无法删除该标记。这两行代码有什么区别吗?百度 map 给出的删除demo:Delete marker
下面是我的代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
body, html {width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
#allmap{width:100%;height:500px;}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=38XkbdMoTDz7oYXNxnmcyvXLFNgIuDNv"></script>
<title>Delete specific marker</title>
</head>
<body>
<div id="allmap"></div>
<input type="button" onclick="addMarker(116.417029, 39.903252,null,'123');" value="add"/>
<input type="button" onclick="deletePoint('123')" value="delete id=123"/>
</body>
</html>
<script type="text/javascript">
// 百度地图API功能
map = new BMap.Map("allmap");
point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 15);
map.disableDoubleClickZoom(true);
// 编写自定义函数,创建标注
function addMarker(lng, lat,iconName, labelContent){
var p = new BMap.Point(lng, lat);
var marker = new BMap.Marker(p, {icon:iconName});
var label = new BMap.Label(labelContent,{offset:new BMap.Size(20,-10)});
map.addOverlay(marker);
marker.setLabel(label);
//marker.setTitle(labelContent);
marker.setAnimation(BMAP_ANIMATION_BOUNCE);
}
var commandPeopleIcon = new BMap.Icon("icon/people.png", new BMap.Size(47,37));
var tankIcon = new BMap.Icon("icon/tank.png", new BMap.Size(50, 50));
// 随机向地图添加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 < 0; i++) {
var lng = sw.lng + lngSpan * (Math.random() * 0.7);
var lat = ne.lat - latSpan * (Math.random() * 0.7);
addMarker(lng, lat, tankIcon, "id="+i);
}
function deletePoint(agentName){
var allOverlay = map.getOverlays();
alert(allOverlay.length);
for (var i = 0; i < allOverlay.length -1; i++){
//var name = allOverlay[i].getLabel().content;
//var title = allOverlay[i].getTitle();
//alert(name);
var className = allOverlay[i]["V"]["classList"][0];
//alert(className);
if (className == 'BMap_Marker') {
var label = allOverlay[i].getLabel();
if (label == null) {
alert('label is null');
continue;
}
alert(allOverlay[i].getLabel().content);
if(allOverlay[i].getLabel().content == agentName){
alert('delete');
map.removeOverlay(allOverlay[i]);
return false;
}
}
}
}
// if I add marker here, I can click delete button to delete the marker.
//addMarker(116.417029, 39.903252,null,'123');
</script>
最佳答案
要添加标记,
var mp = new BMap.Map("container");
var marker = new BMap.Marker(point);
mp.addOverlay(marker);
要删除标记,
mp.removeOverlay(marker);
关于javascript - 删除百度 map js Api 中的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49097477/
为了加快收录情况 除了谷歌勤快点 百度也不能落下 复制代码 代码如下: //文章发布主动ping baidu function pi
对于我的中国用户,我需要在我的应用程序中使用百度 map ,但我不明白如何使用 BaiduSdk 实现集群。没有像 android-maps-utils 中那样的任何实用程序。也许有人可以建议 lib
Echarts3(baidu)工具提示中的彩色圆形 默认情况下,工具提示具有与图形相同颜色的圆形,如下所示: http://echarts.baidu.com/gallery/editor.html?
我想创建多个系列的条形图 重叠 彼此。 堆叠条形图将条形置于另一个条形之上。 我想要所有的酒吧 开始来自 底部 像下面的例子。 有什么方法可以通过echarts 来实现吗? ? 最佳答案 这个exam
我是一名优秀的程序员,十分优秀!