вторник, 24 мая 2011 г.

Как сфокусировать карту Google Maps на стране по ее названию

Тему этого поста определил вопрос "How to center a google map around a country by name?" на StackOverflow.

Итак, постановка задачи. Как найти координаты страны по ее названию и сфокусировать карту так, чтобы все государство не выходило за границы экрана?

Для поиска координат по названию географического объекта в Google Maps API существует Geocoding Service. Ниже пример использования сервиса геокодирования от Google.

Для того, чтобы все границы государства были вписаны в границы экрана требуется прочитать параметр bounds и скормить его методу fitBounds

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 = "Russia";
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);
    }
});