谷歌地图get_bounds事件多次触发

时间:2010-09-29 06:33:50

标签: javascript google-maps

我正在使用谷歌地图javascript api的V3,以便在地图边界发生变化时引入更多标记。问题是,当我拖动地图一段时间然后结束拖动时,会立即触发大量事件。在拖动地图时,它们似乎正在排队。

我是否可以通过某种方式添加计时器来停止此操作,还是必须使用zoom_changed和dragend事件作为解决方法?

以下是重读代码:

google.maps.event.addListener(map, 'bounds_changed', function() {
  var bounds_url = map.getBounds().toUrlValue();
  $.ajax({
    //... 
  });
});

2 个答案:

答案 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(){   });