2

我正在编写一个谷歌地图 v3 javascript 应用程序,当地图的边界发生变化时,它会获取新的标记。为此,我使用了“bounds_changed”监听器。问题是我想限制我所做的调用,并且不想在每次用户更改地图视口时触发它们。仅当地图已更改并且已空闲 1 秒时,我如何才能触发此呼叫?

谢谢!保罗

4

2 回答 2

4

您为超时声明一个全局变量

var changetm = null;

那么如果你打电话

function event_handle(e){

    clearTimeout(changetm);
    changetm = setTimeout("fetch_new_markers()", 1000);

}

这样做是清除上一个调用(如果存在),然后将下一个调用添加到队列中,等待 1000 毫秒(1 秒)并调用它。如果在 1 秒内触发了某个事件,它将再次清除等待队列...

塔达

于 2012-05-28T01:25:20.647 回答
0

获取您想要的最简单的方法可能是使用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);

    //...
}
于 2012-05-28T01:26:27.250 回答