我正在使用谷歌地图javascript api的V3,以便在地图边界发生变化时引入更多标记。问题是,当我拖动地图一段时间然后结束拖动时,会立即触发大量事件。在拖动地图时,它们似乎正在排队。
我是否可以通过某种方式添加计时器来停止此操作,还是必须使用zoom_changed和dragend事件作为解决方法?
以下是重读代码:
google.maps.event.addListener(map, 'bounds_changed', function() {
var bounds_url = map.getBounds().toUrlValue();
$.ajax({
//...
});
});
答案 0 :(得分:1)
添加一个超时,在事件触发后500ms运行代码,每次事件触发清除超时并创建一个新超时。
google.maps.event.addListener(map, 'bounds_changed', (function () {
var timer;
return function() {
clearTimeout(timer);
timer = setTimeout(function() {
// here goes an ajax call
}, 500);
}
}()));
答案 1 :(得分:1)
这是已知的错误,谷歌团队建议使用:
google.maps.event.addListener(map,'idle',function(){ });