![](/img/trans.png)
[英]Google Maps API v3: How to Set Zoom Level And Map Center To User Submitted Location?
[英]How to know if the user change zoom (Google Maps V3)
我正在使用 Google Maps 和 Angularjs 開發一個應用程序。 我有這個代碼來控制縮放是否改變
google.maps.event.addListener(map, 'zoom_changed', function(){
});
問題是,我只需要在用戶更改縮放比例時才執行此事件。 我的代碼中有一個fitBounds()
也可以更改縮放fitBounds()
。
var latlngbounds = new google.maps.LatLngBounds();
for (var i = 0; i < latlng.length; i++) {
latlngbounds.extend(latlng[i]);
}
map.fitBounds(latlngbounds);
是否有區分用戶操作的選項?
在一般情況下,當前接受的解決方案可能無法正確解決此問題。 轉到 Google Maps API 文檔中地圖 UI 事件的交互式演示。 請注意,如果您將光標定位在地圖上並使用鼠標的滾輪滾動,則不會觸發任何mouse
或drag
事件,因為鼠標保持靜止。
當前的解決方案假設在mouseover
事件之后不會發生程序化地圖更新,這對於原始發布者的應用程序可能是正確的,但在更一般的應用程序中可能並非如此。
我提出了下面的替代解決方案。
首先,無論您在代碼中以編程方式更新地圖的任何地方,都在地圖上設置一個自定義屬性——我們將調用我們的systemZoomChange
表明更改是以編程方式啟動的。
var latlngbounds = new google.maps.LatLngBounds();
for (var i = 0; i < latlng.length; i++) {
latlngbounds.extend(latlng[i]);
}
map.systemZoomChange = true
map.fitBounds(latlngbounds);
然后在任何事件偵聽器上,添加對自定義systemZoomChange
屬性的檢查,並在標記時重置它,以避免對系統事件進行操作。
map.addListener('zoom_changed', function () {
if (map.systemZoomChange) {
map.systemZoomChange = false // Reset the flag for a system-initiated event
} else {
// Handle the user-initiated event
}
});
好的,我找到了方法
google.maps.event.addListenerOnce(map, 'mousemove', function(){
google.maps.event.addListener(map, 'zoom_changed', function(){
});
});
首先,它檢測鼠標是否移動,然后檢測縮放是否改變並正常工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.