google-maps - script - marcar puntos en google maps api
Cómo centrar un mapa de Google en un país si solo tienes el nombre del país (1)
Tengo una página sobre senderismo en varios países. Intento crear una página como esta para cada país, pero no estoy seguro de cómo centrar automáticamente el mapa de Google en un país y también hacer que ajuste el enfoque según el tamaño del país.
Aquí están mis páginas de problemas:
http://www.comehike.com/outdoors/country.php?country_id=6&country_name=Belarus
http://www.comehike.com/outdoors/country.php?country_id=1&country_name=United%20States
¿Ves cómo el centrado y el tamaño del foco es estático? Eso es porque actualmente uso este código para centrar el mapa:
function initialize( )
{
var myLatlng = new google.maps.LatLng(37.775, -122.4183333);
var myOptions =
{
zoom: 2,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
Pero eso es solo porque no estoy seguro de cómo hacerlo por nombre de país, y ajustar el tamaño automáticamente. ¿Cómo puedo hacer todo esto pasando el nombre de un país en la función de inicialización?
¡Gracias!
Puede transformar el nombre del país en coordenadas utilizando el servicio de codificación geográfica . Ejemplo proporcionado por Google centros un mapa, pero no lo acerca. Para ampliarlo, debe usar el método map.fitBounds () utilizando el objeto LatLngBounds devuelto por el geocodificador. Este es un código de ejemplo:
var myLatlng = new google.maps.LatLng(37.775, -122.4183333);
var myOptions =
{
zoom: 2,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var address = "Belarus";
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { ''address'': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
map.fitBounds(results[0].geometry.bounds);
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});