【问题标题】:Google maps v2 bounds change event谷歌地图 v2 边界更改事件
【发布时间】:2010-02-09 12:12:26
【问题描述】:

我在我的网络应用程序中使用谷歌地图 v2。当地图边界由于缩放或拖动而改变时,我想调用数据库来获取记录。到目前为止,我一直在使用 tilesloaded 事件处理程序来做这件事,假设地图边界会在所有瓦片被加载时发生变化(我也想澄清这个假设)。

当我放大/缩小并处理 zoomend 事件以设置一个标志时,该标志在 tileloaded 事件处理程序中检查,然后使用新边界查询数据库。只要在 zoomend 事件之后触发了 tilesloaded 事件,就可以正常工作。但是(令人讨厌)很多时候它是在 zoomend 事件之前触发的,因此在这种情况下,不会在 tilesloaded 事件处理程序中设置缩放标志,并且不会发生 db 调用。

拖动也是如此。而且很多时候,当我们稍微拖动地图时,不会触发 tilesloaded 事件。如果我们只拖动一点(只是一个疯狂的猜测),谷歌是否会为地图图块使用任何缓存机制。

我希望为 v2 触发类似 bounds_changed 事件,请有人帮帮我。

【问题讨论】:

    标签: api google-maps


    【解决方案1】:

    我会使用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
    });
    

    【讨论】:

    • 感谢您的回复。我知道 moveend 但我想知道在 moveend 事件处理程序中我们是否会立即获得缩放/拖动的地图的最新边界。你能详细说明一下吗?再次感谢您的回复。
    • @Prashant - 'moveend' 事件会在用户释放鼠标后立即触发,因此您一定会获得最新的边界。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2013-10-10
    • 2019-04-19
    • 1970-01-01
    相关资源
    最近更新 更多