我在我的网络应用程序中使用谷歌地图v2。我希望在由于缩放或拖动而改变地图边界时调用数据库来获取记录。到目前为止,我正在使用tilesloaded事件处理程序来执行此操作,假设在加载所有切片时地图边界将发生变化(我也希望澄清此假设)。
当我放大/缩小并处理zoomend事件时,设置一个在tilesloaded事件处理程序中检查的标志,然后使用新的边界查询数据库。只要在zoomend事件后触发tilesloaded事件,这就可以正常工作。但是(令人讨厌的是)很多次它在游戏事件之前被解雇,所以在这种情况下,不会在tilesloaded事件处理程序中设置缩放标志,也不会发生数据库调用。
拖拽也是如此。而且当我们拖动地图时,很多次tileloaded事件都没有被触发。如果我们只拖一点(只是一个疯狂的猜测)谷歌会使用任何缓存机制的地图图块。
我想要为v2触发类似于bounds_changed事件的东西,请有人帮助我。
答案 0 :(得分:2)
我会使用moveend事件。无论何时缩放或移动地图(在鼠标上),它都会触发。
var moveListener = GEvent.addListener(map, "moveend", function() {
var bounds = map.getBounds();
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var sBound = sw.lat();
var wBound = sw.lng();
var nBound = ne.lat();
var eBound = ne.lng();
// AJAX call to the database with the map bounds
});