我撰寫代碼有點怪,但它完美:
<script>
var map;
var center = -1;
var isFullScreen = false;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 8,
center: { lat: -34.397, lng: 150.644 }
});
center = { lat: map.getCenter().lat(), lng: map.getCenter().lng() };
google.maps.event.addDomListener(map, 'bounds_changed', onBoundsChanged);
}
function onBoundsChanged() {
var isFullHeight = $(map.getDiv()).children().eq(0).height() == window.innerHeight;
var isFullWidth = $(map.getDiv()).children().eq(0).width() == window.innerWidth;
if (isFullHeight && isFullWidth && !isFullScreen) {
isFullScreen = true;
map.setCenter(center);
console.log('FULL');
} else if (!isFullWidth||!isFullHeight){
if (isFullScreen) {
map.setCenter(center);
}
isFullScreen = false;
console.log('NOT-FULL');
}
center = { lat: map.getCenter().lat(), lng: map.getCenter().lng() };
}
</script>
我使用的bounds_changed事件。
如果我檢測到地圖全屏顯示,我將地圖設置在先前事件中註明的中心位置,並將布爾值設置爲true。如果地圖不是全屏,我檢查布爾是否爲真,這意味着在先前的事件中地圖全屏顯示,因此我重新映射地圖,然後檢查布爾值是否爲假。活動結束時,我將中心保持在下一個活動的變化中。
這一切都不是很清楚......
您可以諮詢this後的堆棧溢出。
說明:如果您在Web應用的所有頁面中顯示單個地圖,則此代碼不起作用。我找不到解決此問題的方法。您的建議非常感謝,謝謝。
另請注意:我的代碼受到了先例答案的啓發。但是,您可以找到相同的代碼here。請注意,這不是重複的答案。我在其中添加了我自己的部分代碼。
如果您有任何問題或意見,請告訴我。
請參閱http://stackoverflow.com/questions/39620850/google-maps-api-v3-how-to-detect-when-map-changes-to-full-screen-mode/ –
Crapachi,你能找到答案? @ anatoly.sukhanov這個相關的問題並沒有提到如何在改變/從fullScreen之前改變.getCenter()以及如何改變/從fullScreen改變.setCenter() – Emilio
@Emilio google.maps.Map.getCenter ,然後google.maps.Map.setCenter或panTo –