2010-05-29 19 views
11

Ich bin neu bei Google Maps API. Ich möchte Vorschläge zum Erreichen folgender Funktionen erhalten: Wenn die Seite geladen wird, wird die Karte in der Mitte der USA geladen. Stellen Sie sich eine Box in den USA vor, in der lat/long die minimalen und maximalen Grenzen angeben. Ich brauche die Karte, um bei dem entsprechenden Zoom zu laden (und Zoom muss deaktiviert sein), so dass diese Box die gesamte Karte zusammensetzt.Google Maps API - laden Sie die USA

Grundsätzlich frage ich mich, ob es eine Funktion gibt, die die Karte basierend auf lat/long Grenzen lädt (oder eine Möglichkeit, dies zu erreichen), anstatt die Karte mit einer Zoomstufe zu laden.

Antwort

14

Angenommen Sie haben die v3 API verwenden, können Sie die fitBounds Methode verwenden möchten, wie folgt:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps fitBounds</title> 
    <script src="http://maps.google.com/maps/api/js?sensor=false" 
      type="text/javascript"></script> 
</head> 
<body> 
    <div id="map" style="width: 500px; height: 350px;"></div> 

    <script type="text/javascript"> 
     var myOptions = { mapTypeId: google.maps.MapTypeId.ROADMAP }; 
     var map = new google.maps.Map(document.getElementById("map"), myOptions); 
     var geocoder = new google.maps.Geocoder(); 

     geocoder.geocode({'address': 'US'}, function (results, status) { 
     var ne = results[0].geometry.viewport.getNorthEast(); 
     var sw = results[0].geometry.viewport.getSouthWest(); 

     map.fitBounds(results[0].geometry.viewport);    
     }); 
    </script> 
</body> 
</html> 

Screenshot:

Google Maps fitBounds

Im obigen Beispiel, erhalte ich die Ansicht der USA durch Geocodierung. Sie können jedoch auch selbst ein LatLngBounds Objekt erstellen, indem Sie die Punkte North East und South West übergeben. Die Methode fitBounds zoomt und schwenkt die Karte so, dass sie auf die Kartenfläche passt.

+0

danke! fitBounds() ist genau das, was ich gesucht habe – hjk

+0

@hjk: Ich antwortete [eine ähnliche Frage vor ein paar Monaten] (http://stackoverflow.com/questions/2494756/fitbounds-in-google-maps-api-v3- does-not-fit-Grenzen/2496558 # 2496558). Es zeigt mit einer roten Boundingbox wie 'fitBounds' reagiert. Die rote Begrenzungsbox repräsentiert die 'LatLngBounds', die Sie an' fitBounds' übergeben. –

+0

Danke Daniel, das ist hilfreich. Also gibt es bei Google Maps keine Möglichkeit, die Granularität des Zooms anzupassen? I.e. ihre Zoomstufen sind festgelegt? – hjk

1

Nun, da die Größe und Form der USA sich nicht so oft ändert, könnten Sie manuell die optimalen Einstellungen finden und diese verwenden.

+1

Ja, aber die Koordinaten meiner Bounding Box können sich ändern ... – hjk