关于地图marker点击切换icon以及上一个icon恢复原样

<!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为想要的样式

猜你喜欢

转载自blog.csdn.net/qq_21895591/article/details/85844329
今日推荐