我有一個谷歌地圖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想要的(我也是如此)。 –