komponuję kod nieco dziwne, ale działa perfekcyjnie:
<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>
używam bounds_changed wydarzenie.
Jeśli wykryję, że mapa jest na pełnym ekranie, ustawiam mapę w centrum, którą odnotowałem w poprzednim zdarzeniu i ustawię wartość logiczną na true. Jeśli mapa nie jest na pełnym ekranie, sprawdzam, czy wartość logiczna jest prawdziwa, oznacza to, że w poprzednim zdarzeniu mapa była w trybie pełnoekranowym, więc wyszukuję mapę, a następnie sprawdzam, czy wartość logiczna jest fałszywa. Pod koniec imprezy utrzymuję centrum w zmiennej dla następnego wydarzenia.
Wszystko to nie są bardzo jasne ...
może skonsultować this znalezione przepełnienie stosu.
Wskazówka:Ten kod nie działa, jeśli wyświetla pojedynczą mapę całej stronie aplikacji internetowej. Nie znajduję sposobu na usunięcie tego błędu. Twoje sugestie są bardzo cenne, dzięki.
Także zauważ:Mój kod jest inspirowany precedensową odpowiedzią. Jednak można znaleźć ten sam kod here. Zauważ, że nie jest to duplikat odpowiedzi. Dodaję do niego swoją własną część kodu.
Proszę mi powiedzieć, jeśli masz jakieś pytania lub uwagi.
Proszę spojrzeć na http://stackoverflow.com/questions/39620850/google-maps-api-v3-how-to-detect-when-map-changes-to-full-screen-mode/ –
Crapachi, gdzie możesz znaleźć odpowiedź? @ anatoly.sukhanov to pokrewne pytanie nie mówi nic o tym, jak .getCenter() przed zmianą do/z fullScreen i jak .setCenter() po zmianie do/z fullScreen – Emilio
@Emilio google.maps.Map.getCenter , następnie google.maps.Map.setCenter lub panTo –