2009-11-16 25 views
13

Uso la API de Google Maps (v2) y me gustaría centrar el mapa en onload en un país (por ejemplo, Inglaterra).Cómo centrar Google Map en un país por nombre

En el momento en que centrar el mapa usando:

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

Pero esto obviamente requiere longitud y latitud.

¿Alguna forma de hacerlo insertando el nombre de un país?

+0

Esta pregunta se refiere a Google Maps API v2, que está caducado ahora. Mabe deberíamos editarlo para mantenerlo actualizado? –

Respuesta

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 pregunta que acepté en realidad usé al principio para implementarla, pero luego pasé a su código que funciona mejor en mi configuración ... gracias –

+0

cambió esto a la respuesta aceptada, ya que es justo como es el que finalmente se implementó –

+1

El geocodificador también devuelve ExtendedData que contiene un tamaño sugerido para el objetivo. [Tenga en cuenta que la caja no es un ajuste perfecto para la ubicación de destino. Solo está ahí para proporcionar un zoom sensato.] Pero eso podría ser exactamente lo que necesita en este caso, para que tenga un zoom diferente cuando se centre en Inglaterra que cuando se centre en Rusia. Ver http://econym.org.uk/gmap/example_geo3.htm –

5

Convertir el nombre de una ubicación o dirección en una latitud/longitud como esta se denomina geocodificación. La API de Google Maps ahora incluye esta capacidad: vea http://code.google.com/apis/maps/documentation/services.html#Geocoding

Incluyen una aplicación de muestra donde puede escribir una dirección, y simplemente funciona escribir un nombre de país. No sé si irán al centro exacto del país.

+0

+1 para la respuesta asistida –

9

Necesitas codificación geográfica de la dirección de la primera:

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

Esta es la forma correcta de hacerlo con Google Maps API v3. (v2 dejará de funcionar en mayo de 2013). –

+1

O sin utilizar la llamada a la API de Geocoder, puede usar esta [lista de países] (https://github.com/mihai-craita/countries_center_box "list") con sus coordenadas correspondientes –