我正在编写一个谷歌地图v3 javascript应用程序,当地图边界发生变化时,该应用程序会获取新标记。为此,我使用" bounds_changed"监听器。 问题是我想限制我的电话,并且不想在每次用户更改地图视口时触发它们。如果地图已经更改并且空闲时间为1秒,我该如何触发此呼叫?
谢谢! 保罗
答案 0 :(得分:4)
您为超时声明了一个全局变量
var changetm = null;
然后如果你打电话
function event_handle(e){
clearTimeout(changetm);
changetm = setTimeout("fetch_new_markers()", 1000);
}
这样做可以清除先前的呼叫(如果存在),然后将下一个呼叫添加到队列中,等待1000 milisecon(1秒)并调用它。如果在1秒内某个事件被触发,它将再次清除等待队列......
tadah
答案 1 :(得分:0)
最简单的方法是使用setTimeout() and 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);
//...
}