2009-11-16 2 views
13

Ich benutze das Google Maps API (v2) und möchte die Karte onload in ein Land (z. B. England) zentrieren.So zentrieren Sie Google Map in einem Land mit dem Namen

Im Moment Zentrum i mit Hilfe der Karte:

map.setCenter(new GLatLng(43.907787,-79.359741), 9); 

Aber dies erfordert natürlich Längen- und Breitengrad.

Sie können den Namen eines Landes eingeben?

+0

Diese Frage betrifft Google Maps API v2, die nun abgelaufen ist. Mabe sollten wir es bearbeiten, um es auf dem neuesten Stand zu halten? –

Antwort

16
var country = "United States" 
var map = new GMap2($("#map")[0]); 
map.setUIToDefault(); 

var geocoder = new GClientGeocoder(); 
geocoder.getLatLng(country, function (point) { 
    if (!point) { 
    // Handle error 
    } else { 
    map.setCenter(point, 8, G_PHYSICAL_MAP); 
    } 
}); 
+0

Die Frage, die ich akzeptierte, benutzte ich zuerst, um es zu implementieren, aber dann ging ich zu Ihrem Code, der in meinem Setup besser funktioniert ... Danke –

+0

änderte dies zu akzeptierter Antwort, da es nur fair ist es ist die eine, die schließlich implementiert wird –

+1

Der Geocodierer gibt auch ExtendedData zurück, das eine vorgeschlagene Größe für das Ziel enthält. [Beachten Sie, dass die Box nicht perfekt zum Zielort passt. Es ist nur da, um vernünftiges Zoomen zu ermöglichen.] Aber das könnte genau das sein, was Sie in diesem Fall brauchen, damit Sie einen anderen Zoom bekommen, wenn Sie sich auf England konzentrieren, als wenn Sie sich auf Russland konzentrieren. Siehe http://econym.org.uk/gmap/example_geo3.htm –

5

Das Umbenennen eines Ortsnamens oder einer Adresse in einen Breiten-/Längengrad wird Geocodierung genannt. Google Maps API enthält jetzt diese Funktion: siehe http://code.google.com/apis/maps/documentation/services.html#Geocoding

Sie enthalten eine Beispielanwendung, wo Sie eine Adresse eingeben können, und es funktioniert, einfach einen Ländernamen einzugeben. Ich weiß nicht, ob sie genau ins Zentrum des Landes gehen.

+0

+1 für assistierte Antwort –

9

Sie müssen zuerst die Adresse geocodiert:

var geocoder = new google.maps.Geocoder(); 
var location = "England"; 
geocoder.geocode({ 'address': location }, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
    } else { 
     alert("Could not find location: " + location); 
    } 
}); 
+0

Dies ist der richtige Weg, dies mit Google Maps API v3 zu tun. (v2 wird im Mai 2013 aufhören zu arbeiten). –

+1

Oder ohne den Geocoder-API-Aufruf zu verwenden, könnten Sie diese [Liste der Länder] (https://github.com/mihai-craita/countries_center_box "list") mit ihren entsprechenden Koordinaten verwenden –

Verwandte Themen