高德地圖marker事件監聽-高德地圖marker繫結事件就執行了[解決立即執行]
阿新 • • 發佈:2020-08-21
官方的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繫結的事件不會立即執行,只有點選後才執行!