我正在编写一个谷歌地图 v3 javascript 应用程序,当地图的边界发生变化时,它会获取新的标记。为此,我使用了“bounds_changed”监听器。问题是我想限制我所做的调用,并且不想在每次用户更改地图视口时触发它们。仅当地图已更改并且已空闲 1 秒时,我如何才能触发此呼叫?
谢谢!保罗
我正在编写一个谷歌地图 v3 javascript 应用程序,当地图的边界发生变化时,它会获取新的标记。为此,我使用了“bounds_changed”监听器。问题是我想限制我所做的调用,并且不想在每次用户更改地图视口时触发它们。仅当地图已更改并且已空闲 1 秒时,我如何才能触发此呼叫?
谢谢!保罗
您为超时声明一个全局变量
var changetm = null;
那么如果你打电话
function event_handle(e){
clearTimeout(changetm);
changetm = setTimeout("fetch_new_markers()", 1000);
}
这样做是清除上一个调用(如果存在),然后将下一个调用添加到队列中,等待 1000 毫秒(1 秒)并调用它。如果在 1 秒内触发了某个事件,它将再次清除等待队列...
塔达
获取您想要的最简单的方法可能是使用setTimeout() 和 clearTimeout()来防止触发“更新”调用,直到地图空闲了所需的时间长度。
您可以实现您的bounds_changed
侦听器,使其执行以下操作:
function loadMarkersForCurrentMapBounds() {
//code to load markers from your server goes here
}
function boundsChanged() {
//...
if (window.scheduledUpdate) {
clearTimeout(window.scheduledUpdate);
}
window.scheduledUpdate = setTimeout(loadMarkersForCurrentMapBounds, 1000);
//...
}