Dies ist nicht besonders schwierig, wenn Sie die entsprechende vorherige Antwort gefunden haben .
Sie müssen die Mitte der Karte in ihre Weltkoordinaten konvertieren, herausfinden, wo die Karte zentriert werden muss, um die scheinbare Mitte an die gewünschte Stelle zu bringen, und die Karte mithilfe der realen Mitte neu zentrieren .
Die API zentriert die Karte immer in der Mitte des Ansichtsfensters. Sie müssen also vorsichtig sein, wenn Sie sie verwenden, map.getCenter()
da sie das reale Zentrum und nicht das scheinbare Zentrum zurückgibt. Ich nehme an, es wäre möglich, die API zu überladen, so dass ihre getCenter()
und setCenter()
Methoden ersetzt werden, aber das habe ich nicht getan.
Code unten. Beispiel online . Im Beispiel wird durch Klicken auf die Schaltfläche die Mitte der Karte (dort befindet sich eine Straßenkreuzung) um 100 Pixel nach unten und um 200 Pixel nach links verschoben.
function offsetCenter(latlng, offsetx, offsety) {
var scale = Math.pow(2, map.getZoom());
var worldCoordinateCenter = map.getProjection().fromLatLngToPoint(latlng);
var pixelOffset = new google.maps.Point((offsetx/scale) || 0,(offsety/scale) ||0);
var worldCoordinateNewCenter = new google.maps.Point(
worldCoordinateCenter.x - pixelOffset.x,
worldCoordinateCenter.y + pixelOffset.y
);
var newCenter = map.getProjection().fromPointToLatLng(worldCoordinateNewCenter);
map.setCenter(newCenter);
}