如何避免对标记点击事件监听器使用匿名回调函数?

时间:2012-08-14 05:18:27

标签: google-maps google-maps-api-3 google-maps-markers

我知道有很多方法可以对谷歌地图标记进行点击事件处理,我一直在使用这些方法并且它们始终运行良好。

但是好奇的是,如果我们能够以更好的方式做同样的事情,我会想到这一点,因为在一个新项目中可能有100,000个标记(当然它们不会在地图上同时显示,但标记'实例确实存在)

google.maps.event.addListener(标记,'点击',clickhandler); function clickhandler(event){/ * HERE * /}

在clickhandler的范围内,我们只有latLng信息,我想通过latLng搜索标记是不可靠的,这是浮点数,所以问题是,最好的方法是什么找到点击了哪个标记?

2 个答案:

答案 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); }

这应该记录标记对象。