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