谷歌地图V3缩放结束。

11

我有一个关于谷歌地图v3缩放更改的问题,因为它不能完美地满足我的需求。

我有两个未满足的要求:

  • 我需要获取范围并显示范围内的点,这些点是在用户单击缩放控件并且地图中的缩放已经被调整之后的。方法zoom_change在重新调整缩放之前执行此操作,而范围不是我所需要的。

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

在v3 API中是否有可用的解决方案来解决这些问题?

3个回答

11

这个 - 谢谢。我之前是分别处理拖动和缩放的。这个方法更加优雅。 - Thilo
有帮助,但链接应指向 https://developers.google.com/maps/documentation/javascript/reference/map#Map.idle - Tony Brasunas

7

这个事件被称为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);

这是一个优秀、透明的解决方案。感谢分享。 - Haroldo
3
这个答案可能有用,但没有解决检测zoom_end的问题。 zoom-changed事件在需要新的缩放级别时触发,而不是在缩放动画完成时触发,这正是提问者(和我)想要的。 - Beetroot-Beetroot


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接