Frage

Ich rufe getBounds () direkt nach einem Aufruf fitBounds (), und ich dachte, dass ich eine gültige Grenze zurück wie die Karte rezentriert bekommen würde und zoomt die Grenzen passen. Leider getBounds () zurückkehrt, gleich Null.

Der Code, dies zu reproduzieren ist wie folgt:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 
    <head> 
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>

        <style>
            #map {
                width: 800px;
                height: 400px;
            }
        </style>

    </head>
    <body>
        <div id='map'></div>

        <script>
            var myLatlng1 = new google.maps.LatLng(-38.397, 150.644);
            var myLatlng2 = new google.maps.LatLng(-34.897, 150.844);
            var myLatLngBounds = new google.maps.LatLngBounds(myLatlng1, myLatlng2);

            var myOptions = {
                  mapTypeId: google.maps.MapTypeId.ROADMAP,
                  center: new google.maps.LatLng(0, 0),
                  zoom: 0
            }

            var map = new google.maps.Map(document.getElementById("map"), myOptions);

            map.fitBounds(myLatLngBounds);

            console.log(map.getMapTypeId());
            console.log(map.getZoom());
            console.log(map.getBounds());
        </script>
    </body>
</html>

Gibt es etwas, was ich vermisst habe? Ich habe nicht in der Lage gewesen, über diese Situation etwas in der Dokumentation zu finden. Die nächste I ist ein Hinweis auf getBounds erhalten, der sagt:

  

Wenn die Karte ist noch nicht initialisiert (das heißt der mapType noch null) oder in der Mitte und hat Zoom-Funktion nicht gesetzt worden ist, dann ist das Ergebnis null ist.

Beachten Sie, dass getZoom kehrt undefiniert auch. Does fitBounds () diesen Wert nicht gesetzt?

Bearbeiten Ich habe den Code mit einem Standard-Zoom und Zentrum aktualisiert, wie pro Marcelo Vorschläge.

War es hilfreich?

Lösung

Sie werden die Grenzen nach dem bounds_changed Ereignisse bekommen.

Andere Tipps

Wie @CrazyEnigma vorgeschlagen , können Sie die Grenzen nach dem bounds_changed Ereignis erhalten wird ausgelöst:

map.fitBounds(myLatLngBounds);

google.maps.event.addListener(map, 'bounds_changed', function() {
  console.log(map.getMapTypeId());
  console.log(map.getZoom());
  console.log(map.getBounds());
});

Das oben würde die folgende in der Konsole aus:

roadmap
6
Object

Beachten Sie, dass, wenn Sie nur getBounds wollen und einmal etwas tun, sollten Sie addListener mit addListenerOnce ersetzen (Danke, @Tomas).

Verwenden addListenerOnce wenn tilesloaded

google.maps.event.addListenerOnce(map, 'tilesloaded', function(){ 
map.setCenter(myLatLngBounds)
});

Die Antwort ist in Ihrem eigenen Zitat. Sie haben das Zentrum zu setzen und Zoom für die Karte initialisiert werden.

Beachten Sie, dass in der Dokumentation für die MapOptions Objektspezifikation, die Werte von Mitte und Zoom sind markiert als erforderlich :

http://code.google.com/apis /maps/documentation/javascript/reference.html#MapOptions

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top