Es gibt noch einen anderen Thread zu diesem Thema, der ebenfalls sehr gut ist. Das Problem, das ich lösen musste, war, dass ich anstelle des manuellen Festlegens von Grenzen und des Überprüfens der Center-Eindämmung eine beim Laden der Seite festgelegte Grenze wollte und dann beim Vergrößern das Ziehen an den Rand zuließ.
Also habe ich beim Laden der Karte einmal Schwenkgrenzen festgelegt. Dann überprüfe ich, ob die Karte noch den maximalen Zoom aufweist, und gebe in diesem Fall die ursprüngliche Mitte zurück. Beim Vergrößern möchte ich zum Rand der Anfangsgrenzen schwenken und nicht nur prüfen, ob CENTER enthalten ist, da dies das zulässige Schwenken um die Hälfte des Ansichtsfensters erweitern würde.
Obwohl dies die Arbeit erledigt und beim langsamen Schwenken gut funktioniert, ist es leider etwas ruckelig, wenn Sie schnell schwenken.
Wenn Sie Vorschläge haben, wie dies vermieden werden kann, wäre ich Ihnen dankbar.
map = new google.maps.Map(
document.getElementById("map22"),
{
disableDefaultUI : true,
zoomControl : true,
zoom : 7,
minZoom : 7,
maxZoom : 10,
center : new google.maps.LatLng(
64.99473104134819,
-19.22332763671875
),
mapTypeId : google.maps.MapTypeId.ROADMAP
}
);
function borders(){
return {
maxLat : map.getBounds().getNorthEast().lat(),
maxLng : map.getBounds().getNorthEast().lng(),
minLat : map.getBounds().getSouthWest().lat(),
minLng : map.getBounds().getSouthWest().lng(),
center : map.getCenter()
}
}
google.maps.event.addListenerOnce(map,'idle',function() {
limit = borders();
});
google.maps.event.addListener(map,'drag',function() {
if(map.getZoom() == 7) return map.setCenter(limit.center);
current = borders();
if( current.maxLng < limit.maxLng && current.minLng > limit.minLng ) activeCenterLng = current.center.lng();
if( current.maxLat < limit.maxLat && current.minLat > limit.minLat ) activeCenterLat = current.center.lat();
map.setCenter(
new google.maps.LatLng(
activeCenterLat,
activeCenterLng
)
);
});
restrictionOption verwenden, um das Ansichtsfenster der Karte einzuschränken. Schauen Sie sich Beispiele und Erklärungen unter stackoverflow.com/a/54717220/5140781 an .