2015-04-27 47 views
-1

我希望能夠在視口大小更改時根據我的LatLngBounds對地圖進行居中放大,而不是在用戶拖動或縮放時放大。我正在使用"bounds_changed"事件以及fitBounds()來保持其居中和正確縮放視口更改,但是當地圖被拖動或縮放時,邊界也會發生變化,因此fitBounds()實質上也會阻止這些操作。確定觸發「bounds_changed」事件的特定用戶操作

function initialize() { 
    var mapProp = { 
    center:new google.maps.LatLng(49.8994, -97.1392), 
    zoom:1, 
     draggable: true, 
     zoomControl: true, 
     scrollwheel: false, 
     disableDoubleClickZoom: false, 
    mapTypeId:google.maps.MapTypeId.ROADMAP 
    }; 
    var bounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(49.803060, -97.229094), 
    new google.maps.LatLng(49.963223, -97.054686) 
); 
    var map = new google.maps.Map(document.getElementById("googleMap"), mapProp); 

    google.maps.event.addListener(map, 'bounds_changed', function() { 
    map.fitBounds(bounds); 
    }); 
} 
google.maps.event.addDomListener(window, 'load', initialize); 

按照docs我應該能夠訪問事件屬性,所以我想我應該檢查的東西,將表明具體是什麼引發了「的bounds_changed」事件,但該事件被顯示在爲未定義安慰。

google.maps.event.addListener(map, 'bounds_changed', function(event) { 
    console.log(event) 
}); 

我可以訪問屬性簡單的「點擊」事件,但沒有「的bounds_changed」,所以我不知道是否有甚至應該是「的bounds_changed」,或者如果有一個完全不同的方法特性完成我想要做的事情。

+1

的'bounds_changed'事件不具有性能(每[文檔】(https://developers.google.com/maps/documentation/javascript/reference#Map)):'的bounds_changed \t **無** \t當視口範圍發生變化時,將觸發此事件。# – geocodezip

+0

@geocodezip謝謝。我想這只是關於閱讀文檔,101. – Kevin

回答

0
var drag = false; 
var zoom = false; 
google.maps.event.addListener(map, 'bounds_changed', function() { 
    if (!drag && !zoom) { 
     map.fitBounds(bounds); 
    } 
    zoom = false; 
}); 
google.maps.event.addListener(map, 'dragstart', function() { 
    drag = true; 
}); 
google.maps.event.addListener(map, 'dragend', function() { 
    drag = false; 
}); 
google.maps.event.addListener(map, 'zoom_changed', function() { 
    zoom = true; 
}); 
+0

這個工程,但我想知道是否有任何其他方式來做到這一點。 – Kevin

相關問題