Google地图事件bounds_changed在拖动时会多次触发
我有一个谷歌地图与标记。 我想要在地图移动/缩放时刷新标记…
Googlebuild议为此使用事件bounds_changed
,但是当我移动地图时, 会触发移动地图的每个像素的事件 。 我只想在用户停止移动地图的时候刷新地图,也就是说,在拖动之后释放鼠标button。
我怎样才能做到这一点 ?
谢谢
事实certificate,这是一个报告的错误: http : //code.google.com/p/gmaps-api-issues/issues/detail ?id = 1371 。
Google小组build议使用“闲置”事件。 例如 :
google.maps.event.addListener(map, 'idle', function() { });
虽然所选的答案在大多数情况下是最好的。 如果你想自己控制延迟,你可以简单地使用像;
var mapupdater; {....} google.maps.event.addListener(map, "bounds_changed", mapSettleTime); function mapSettleTime() { clearTimeout(mapupdater); mapupdater=setTimeout(getMapMarkers,500); }
添加超时,在事件触发后500毫秒运行您的代码,每次事件触发清除超时并创build一个新的。
google.maps.event.addListener(map, 'bounds_changed', (function () { var timer; return function() { clearTimeout(timer); timer = setTimeout(function() { // here goes an ajax call }, 500); } }()));
尝试使用zoom_changed和dragend
这是一个小的片段,将删除所有多余的'bound_changed'调用:
var timeout; google.maps.event.addListener(map, 'bounds_changed', function () { window.clearTimeout(timeout); timeout = window.setTimeout(function () { //do stuff on event }, 500); }); //time in ms, that will reset if next 'bounds_changed' call is send, otherwise code will be executed after that time is up
- Google Maps V3:通过AJAX加载infowindow内容
- LogCat消息:找不到Google Play服务资源。 检查您的项目configuration,以确保包含资源
- Google Map Api v2在日志中显示“V / GoogleSignatureVerifier:签名无效”错误消息
- Google Maps API v3:带有多个标记的自动中心地图
- 将Google Maps JS API ImageMapType剪辑为多边形
- 如何限制谷歌地图API V3中的平移?
- 如何禁用Google地图的卫星视图?
- Google Maps API V3:如何显示从A点到B点(蓝线)的方向?
- 如何在每个Android应用程序/进程中使用多个MapActivities / MapViews