2009-11-16 36 views
13

Sto utilizzando l'API di Google Maps (v2) e vorrei centrare la mappa su un Paese (ad esempio in Inghilterra).Come centrare Google Map su un paese per nome

Al momento ho centrare la mappa utilizzando:

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

Ma questo richiede, ovviamente, longitudine e latitudine.

Un modo per farlo inserendo il nome di un paese?

+0

Tale questione riguarda Google Maps API v2, che è scaduto oggi. Dovremmo modificarlo per tenerlo aggiornato? –

risposta

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

La domanda che ho accettato in realtà l'ho usata inizialmente per implementarla, ma poi mi sono spostato sul tuo codice che funziona meglio nella mia configurazione ... grazie –

+0

ha cambiato la risposta accettata in quanto è giusto come è finalmente implementato –

+1

Il geocoder restituisce anche ExtendedData che contiene una dimensione suggerita per la destinazione. [Si noti che la scatola non è perfetta per la posizione di destinazione. È proprio lì per fornire uno zoom sensato.] Ma potrebbe essere esattamente ciò di cui hai bisogno in questo caso, in modo da ottenere uno zoom diverso quando ti concentri sull'Inghilterra rispetto a quando ti concentri sulla Russia. Vedere http://econym.org.uk/gmap/example_geo3.htm –

5

Trasformare un nome di località o un indirizzo in una latitudine/longitudine come questo si chiama geocoding. L'API di Google Maps ora include questa funzionalità: vedi http://code.google.com/apis/maps/documentation/services.html#Geocoding

Includono un'applicazione di esempio in cui è possibile digitare un indirizzo e funziona semplicemente per digitare un nome di paese. Non so se stanno andando nel centro esatto del paese.

+0

+1 per la risposta assistita –

9

È necessario geocoding il primo indirizzo:

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

Questo è il modo giusto per farlo con l'API di Google Maps v3. (v2 smetterà di funzionare a maggio 2013). –

+1

Oppure, senza utilizzare la chiamata dell'API di Geocoder, è possibile utilizzare questo [elenco di paesi] (https://github.com/mihai-craita/countries_center_box "elenco") con le relative coordinate –

Problemi correlati