Ich habe eine ziemlich anspruchsvolle Maps-Anwendung, die mehrere benutzerdefinierte Markierungen und dergleichen behandelt. Ich habe eine Funktion namens resizeWindow, die ich in einem Listener aufrufen, wenn der Bildschirm geändert wird, zeichnet die Karte sich selbst durch Berechnen neuer Grenzen und Erzwingen einer Größenänderung. Es sieht wie folgt aus:Wie erzwinge ich das erneute Zeichnen mit Google Maps API v3.0?
window.onresize = function(event) { fitmap(); };
und die Funktion, um die Größe ist:
function fitmap(id) {
var coords = [];
var newlatlng = new google.maps.LatLng(projlat, projlng);
coords.push(newlatlng);
for (var i=0; i<markers[id].length; i++) {
newlatlng = new google.maps.LatLng(markers[id][i].latitude, markers[id][i].longitude);
coords.push(newlatlng);
}
}
var bounds = new google.maps.LatLngBounds();
for (var i = 0, LtLgLen = coords.length; i < LtLgLen; i++) {
bounds.extend (coords[i]);
}
map.fitBounds(bounds);
und das funktioniert gut, wenn ich das Fenster tatsächlich ändern. Aber ...
Ich habe ein Menü auf der rechten Seite des Fensters. Ich benutze jquery.animate, um das Menü vom Bildschirm zu entfernen. Ich nenne die Fitmap-Funktion als einen Schritt-Prozess (oder nur einmal am Ende) und es wird die Karte nicht neu zeichnen.
$('#rightSide').animate({ right:"-240px" }, {
duration:1000,
step: function(now,fx) {
fitmap();
}
});
Ich habe auf diese lesen und lesen, und es scheint, dass es eine Kuriosität von Google Maps API v3.0 ist, dass wenn sich nichts ändert eigentlich nicht passieren wird neu erstellt. In diesem Fall ändert sich mein verfügbares Fenster von Bildschirmbreite - Menü zum tatsächlichen Vollbild. Es findet jedoch kein Redraw statt.
Ich habe versucht google.maps.event.trigger (map, 'resize'); und das funktioniert auch nicht.
Gibt es eine Möglichkeit, Google Maps neu zu erzwingen?
Können Sie uns einen Link geben? –
Es gibt eine kleine Registerkarte oben links im Menü auf der rechten Seite. –
Wenn Sie Ihr Browser-Fenster auf eine Größe eingestellt haben, die eine Änderung des Zooms erzwingt, funktioniert es auch. Nur wenn keine Zoomänderung erforderlich ist, wird sie nicht angepasst. Ich habe auch versucht, ein 1-Schritt-Zoom-out und Zoom-in-Zoom, aber das hat es nicht behoben. –