我知道有很多方法可以对谷歌地图标记进行点击事件处理,我一直在使用这些方法并且它们始终运行良好。
但是好奇的是,如果我们能够以更好的方式做同样的事情,我会想到这一点,因为在一个新项目中可能有100,000个标记(当然它们不会在地图上同时显示,但标记'实例确实存在)
google.maps.event.addListener(标记,'点击',clickhandler); function clickhandler(event){/ * HERE * /}
在clickhandler的范围内,我们只有latLng信息,我想通过latLng搜索标记是不可靠的,这是浮点数,所以问题是,最好的方法是什么找到点击了哪个标记?
答案 0 :(得分:2)
标记上的鼠标单击事件将google.maps.MouseEvent object传递给侦听器函数,因此:
// give the maker an id
marker.myId = 25;
google.maps.event.addListener(marker, 'click', clickhandler);
function clickhandler(mev) {
alert(mev.latLng);
alert(this.myId);// shows 25
}
答案 1 :(得分:1)
当我尝试从组元素(例如,具有相同类的元素)中引用一个元素时,使用this
可以帮助找到触发事件的正确元素。为了确保this
能够正常工作,请查看console.log
。
google.maps.event.addListener(marker, 'click', clickhandler); function clickhandler() { console.log(this); }
这应该记录标记对象。