【问题标题】:Google maps v3 zoom end谷歌地图 v3 缩放结束
【发布时间】:2019-09-16 19:27:09
【问题描述】:

我对 google maps v3 zoom_change 有疑问,因为它不能完美地解决我的需求。

我有 2 个未满足的要求:

  • 我需要获取边界并显示边界内的点之后用户单击缩放控件并在地图中重新调整缩放。方法 zoom_change 重新调整缩放之前执行它,并且边界不是我需要的。

  • 方法 zoom_change 每次都会被调用,例如,每当我执行 fitBoundssetZoom 时。我只在单击缩放控件或移动鼠标滚轮时才需要它。

v3 API 中是否有针对这些问题的解决方案?

【问题讨论】:

    标签: google-maps


    【解决方案1】:

    监听空闲事件。

    来自Google Maps Javascript API V3 Reference

    idle:当地图在平移或平移后空闲时触发此事件 缩放。

    【讨论】:

    【解决方案2】:

    该事件称为zoom_changed(不是zoom_change)。此事件的事件处理程序在缩放更改后调用。区分用户引起的缩放变化和程序引起的缩放变化确实不容易。一种可能的解决方案是维护一个“全局”变量,例如 userZoom,它表示用户是否触发了缩放。

    var userZoom = true; // initial value: be prepared for user action
    // Install listener
    google.maps.event.addListener(Map.self, 'zoom_changed', function() {
        if (userZoom) {      
            // the user changed zoom: do what should be done
        }
        else {
            // zoom change caused by a program action: ignore
        }
        userZoom = true;  // be prepared for the user zoom action    
    });
    

    在调用任何更改缩放的程序操作之前,请设置userZoom = false,例如

    userZoom = false;
    map.setZoom(9);
    

    【讨论】:

    • 这是一个出色的透明解决方案。感谢分享
    • 这个答案可能有用,但没有解决检测zoom_end 的问题。 zoom-changed 在需要新的缩放级别时触发 - 而不是在缩放动画完成时触发,这是 OP 想要的(我也是如此)。
    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多