Ich habe ein Google Maps (V3) auf meiner Seite mit 100% Seitenbreite und einer Markierung in der Mitte. Wenn ich die Breite meines Browserfensters verändere, möchte ich, dass die Karte zentriert bleibt (reagiert). Jetzt bleibt die Karte nur auf der linken Seite und wird kleiner.
UPDATE Dank Duncan kann es genau wie beschrieben funktionieren. Dies ist der endgültige Code:
var center;
function calculateCenter() {
center = map.getCenter();
}
google.maps.event.addDomListener(map, 'idle', function() {
calculateCenter();
});
google.maps.event.addDomListener(window, 'resize', function() {
map.setCenter(center);
});
javascript
google-maps
google-maps-api-3
Gregory Bolkenstijn
quelle
quelle
center
nicht global sein. Vorausgesetzt,center
(undcalculateCenter
) sind im gleichen Umfang wiemap
, dann sollte alles funktionieren. Natürlich, wennmap
es global ist, müssen Sie das auch beheben :)Antworten:
Sie benötigen einen Ereignis-Listener für die Größenänderung des Fensters. Dies hat bei mir funktioniert (setzen Sie es in Ihre Initialisierungsfunktion):
quelle
var center; google.maps.event.addListener(map, 'center_changed', function() { center = map.getCenter(); }); google.maps.event.addDomListener(window, 'resize', function() { map.setCenter(center); });
Funktioniert nicht. Jede Hilfe wäre dankbar.Erkennen Sie das Größenänderungsereignis des Browsers, ändern Sie die Größe der Google Map unter Beibehaltung des Mittelpunkts:
Sie können denselben Code in anderen Ereignishandlern verwenden, wenn Sie die Größe der Google Map auf andere Weise ändern (z. B. mit einem Steuerelement für die Größe der jQuery-Benutzeroberfläche).
Quelle: http://hsmoore.com/blog/keep-google-map-v3-centered-when-browser-is-resized/ Gutschrift an @smftre für den Link.
Hinweis: Dieser Code wurde im Kommentar von @ smftre zur akzeptierten Antwort verlinkt. Ich denke, es lohnt sich, es als eigene Antwort hinzuzufügen, da es der akzeptierten Antwort wirklich überlegen ist. Eine globale Variable zum Verfolgen des Mittelpunkts und ein Ereignishandler zum Aktualisieren dieser Variablen sind nicht mehr erforderlich.
quelle
google.maps.event.trigger(map, "resize");
?Einige gute Beispiele auf w3schools.com. Ich habe folgendes verwendet und es funktioniert großartig.
http://www.w3schools.com/googleapi/google_maps_events.asp
quelle
html: Erstellen Sie ein Div mit einer ID Ihrer Wahl
js: Erstellen Sie eine Karte und hängen Sie sie an das gerade erstellte Div an
Zentrieren, wenn die Fenstergröße geändert wird
quelle
Aktualisierung der obigen Lösung auf es6.
quelle
addDomListener
sowohl für daswindow
, was ein DOM-Element ist, als auch für dasmap
, was nicht. Das Kartenobjekt sollte dengoogle.maps.event.addListener
oder seinen eigenenmap.addListener
Ereignishandler verwenden.