如何避免对标记点击事件监听器使用匿名回调函数?
Posted
技术标签:
【中文标题】如何避免对标记点击事件监听器使用匿名回调函数?【英文标题】:How to avoid of using anonymous callback function for marker click event listener? 【发布时间】:2012-08-10 09:09:33 【问题描述】:我知道有很多方法可以对谷歌地图标记进行点击事件处理,我一直在使用这些方法并且它们总是很有效。
但只是好奇如果我们能以更好的方式做同样的事情,我正在考虑这个问题,因为在一个新项目中可能会有 100,000 个标记(当然它们不会显示在地图上同一时间,但标记的实例确实存在)
google.maps.event.addListener(marker, 'click', clickhandler); function clickhandler(event) /* 这里 */
在 clickhandler 的范围内,我们只有 latLng 信息,我想通过 latLng 搜索标记是不可靠的,这是浮点数,所以问题是,找到哪个标记被点击的最佳方法是什么?
【问题讨论】:
【参考方案1】:标记上的鼠标单击事件将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
【讨论】:
谢谢马塞洛,这很有帮助! 我试过了,但是……当我达到投票的最低要求时我会回来的:-S,哈哈^_^【参考方案2】:当我试图从一组元素中引用一个元素(例如,具有相同类的元素)时,使用this
可以帮助找到触发事件的正确元素。为了确保this
能正常工作,我与console.log
核对。
google.maps.event.addListener(marker, 'click', clickhandler); function clickhandler() console.log(this);
这应该记录标记对象。
【讨论】:
谢谢 Ennui,对我帮助很大,“this”是标记!以上是关于如何避免对标记点击事件监听器使用匿名回调函数?的主要内容,如果未能解决你的问题,请参考以下文章
`this.some_property` 在匿名回调函数中变得未定义