1. 程式人生 > 實用技巧 >高德地圖marker事件監聽-高德地圖marker繫結事件就執行了[解決立即執行]

高德地圖marker事件監聽-高德地圖marker繫結事件就執行了[解決立即執行]

官方的demo是這樣的:
地址:[http://lbs.amap.com/api/javascript-api/example/infowindow/add-infowindows-to-multiple-markers]

<script type="text/javascript">
    //初始化地圖物件,載入地圖
    var map = new AMap.Map("container", {resizeEnable: true});
    var lnglats = [
        [116.368904, 39.923423],
        [116.382122, 39.921176],
        [116.387271, 39.922501],
        [116.398258, 39.914600]
    ];
    var infoWindow = new AMap.InfoWindow({offset: new AMap.Pixel(0, -30)});
    for (var i = 0, marker; i < lnglats.length; i++) {
        var marker = new AMap.Marker({
            position: lnglats[i],
            map: map
        });
        marker.content = '我是第' + (i + 1) + '個Marker';
        marker.on('click', markerClick);
        marker.emit('click', {target: marker});
    }
    function markerClick(e) {
        infoWindow.setContent(e.target.content);
        infoWindow.open(map, e.target.getPosition());
    }
    map.setFitView();
</script>

事實上marker繫結的點選事件在新增marker到地圖時就已經執行了,我做了多次嘗試更改繫結事件的寫法,均以失敗告終!於是詳細閱讀API,原來官方還提供了這樣一個方法:

正確的事件繫結應該是這樣子的:
##重寫marker繫結的方式,改用事件監聽的方式。程式碼如下:
首先刪除 marker.on(‘click’, markerClick);這句程式碼;
然後在本句程式碼處新增 AMap.event.addListener(marker,‘click’,markerClick);
最後在 markerClick 方法中dosomething…

marker事件得到繫結,marker繫結的事件不會立即執行,只有點選後才執行!

原創地址:https://blog.csdn.net/museions/article/details/78143503?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-1-78143503.nonecase