<!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, #allmap {
width: 100%;
height: 100%;
overflow: hidden;
margin: 0;
font-family: "微软雅黑";
}
#l-map {
height: 100%;
width: 78%;
float: left;
border-right: 2px solid #bcbcbc;
}
#r-result {
height: 100%;
width: 20%;
float: left;
}
</style>
<script type="text/javascript"
src="http://api.map.baidu.com/api?v=2.0&ak=您的ak"></script>
<title>添加多个标注点</title>
</head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
// 百度地图API功能
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 15);
// 编写自定义函数,创建标注
function addMarker(point) {
var marker = new BMap.Marker(point);
map.addOverlay(marker);
}
// 随机向地图添加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 < 25; i++) {
var point = new BMap.Point(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7));
addMarker(point);
}
var preMarker;
map.addEventListener("click", function (e) {
if (e.overlay && e.overlay.toString()=='[object Marker]') {
var myIcon2 = new BMap.Icon("https://mapopen-website-wiki.cdn.bcebos.com/markers.png", new BMap.Size(19, 45), {
offset: new BMap.Size(10, 25),
imageOffset: new BMap.Size(0, 0 - 10 * 30)
});
if (typeof (preMarker) != 'undefined') {
preMarker.setIcon(myIcon2);
}
var myIcon = new BMap.Icon("https://mapopen-website-wiki.cdn.bcebos.com/markers.png", new BMap.Size(19, 45), {
//anchor:new BMap.Size(0, 5),
offset: new BMap.Size(10, 26),
imageOffset: new BMap.Size(-22.5, 0 - 10 * 30)
});
e.overlay.setIcon(myIcon);
preMarker = e.overlay;
console.log(preMarker);
}
});
</script>
思路很简单1、设置全局变量用于存放上一次点击的marker
2、添加地图事件监听,获取点击的marker
3、将上一次点击的marker的icon改为原样,当前点击marker修改icon为想要的样式