google maps使用bounds_changed事件时的问题


版本Google Maps JavaScript API V3
希望实现功能,在地图上标识自己数据库内的商铺并显示
在地图加载、地图被拖拽、地图缩放等变化时能够更新地图显示范围内的商铺信息

   
  google.maps.event.addListener(map, 'bounds_changed', shopshow);
 

遇到的问题是bounds_changed响应太灵敏了,拖动地图时会有十次或者几十次的区域变化,每次都会向服务器发送请求当前区域内的商铺信息列表,对服务器压力太大了。有没有什么办法能够降低灵敏度?比如1秒钟才会请求一次,或者有没有其他的解决办法

结论:
使用定时器也是一个解决办法,谢了,刚才把所有可以添加的Listener都分析了一遍,找到了一个更好的解决办法,使用tilesloaded,当地图的图块加载完成后会触发动作,不管刚加载、拖动或者拖放总会有地图改变有图块加载完成,搞定,哈

   
  google.maps.event.addListener(map, 'tilesloaded', shopshow);
  
tilesloaded None 可见图块载入完成后会触发此事件。

GoogleMaps JavaScript

小小miku 12 years, 4 months ago

使用setTimeout创建定时器来避免连续请求。
如声明一个timeid, 在bound_changed内部使用setTimeout控制请求时间

   
  var timeid;
  
var bounds_changed = function(){
clearTimeout(timeid);
timeid = setTimeout(function(){
//其他代码
}, 1000);
};
google.maps.event.addListener(map, 'bounds_changed', shopshow);

uucomic answered 12 years, 4 months ago

Your Answer