我的谷歌地图v3 zoom_change有问题,因为它无法完美解决我的需求。
我有2个未满足的要求:
我需要获取界限并显示界限之后用户点击缩放控件并在地图中重新调整缩放。 zoom_change方法在>>重新调整缩放之前执行,并且边界不是我需要的边界。
每次调用zoom_change方法,例如,每当我执行 fitBounds 或 setZoom 时。当单击zoomcontrol或移动鼠标滚轮时,我只需要它。
v3 API中是否有针对这些问题的解决方案?
答案 0 :(得分: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);
答案 1 :(得分:5)
答案 2 :(得分:0)
我找到的唯一真正的方法是在地图上创建自定义缩放控件
然后在控件上设置一个事件监听器
显然不是优雅,而是一种选择。