我有一个谷歌地图v3 zoom_change的问题,因为它不能完美解决我的需求。谷歌地图v3缩放结束
我有2个未满足的要求:
我需要得到那些边界后,用户在缩放控制点击,缩放已经在地图上被reajusted里面的边界和展示点。方法zoom_change做它之前重新缩放,并且边界不是我需要的。
方法zoom_change被称为每次,例如,每当我执行fitBounds或setZoom。当单击zoomcontrol或移动鼠标滚轮时,我只需要它。
在v3 API中是否有解决这些问题的解决方案?
我有一个谷歌地图v3 zoom_change的问题,因为它不能完美解决我的需求。谷歌地图v3缩放结束
我有2个未满足的要求:
我需要得到那些边界后,用户在缩放控制点击,缩放已经在地图上被reajusted里面的边界和展示点。方法zoom_change做它之前重新缩放,并且边界不是我需要的。
方法zoom_change被称为每次,例如,每当我执行fitBounds或setZoom。当单击zoomcontrol或移动鼠标滚轮时,我只需要它。
在v3 API中是否有解决这些问题的解决方案?
该事件被称为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);
这 - 谢谢。我正在单独处理拖动和缩放。这更优雅。 – Thilo
我发现的唯一的真正的方法是在地图上创建一个自定义缩放控制,
,然后设置在控制一个事件监听器,
显然不优雅,但一个选项。
这是一个优秀的,透明的解决方案。感谢分享 – Haroldo
这个答案很有用,但没有解决检测'zoom_end'的问题。当需要新的缩放级别时,会发生“缩放变化”,而不是当缩放动画完成时,这是OP想要的(我也是如此)。 –