Автоматический поиск подходящего увеличения для результата геокодирования

Я использую Google Карты и службу геокодирования Google для своего приложения службы определения местоположения. Я использую сервис Google Geocoding для перевода адреса в координаты широты и долготы. Моя проблема в том, как автоматически найти подходящий масштаб для определенного адреса, как это делает maps.google.com.

Например, когда я ищу улицу на maps.google.com (например, Cisitu Baru, Bandung ), улица будет отображаться в меньшем масштабе. Когда я ищу в регионе (например, Bandung ), он показывает больший масштаб. И более крупный зум для провинции (например, Джава Барат / Западная Ява ) и т. Д.

Я пробовал и

var geocoder = new google.maps.Geocoder();
geocoder.geocode( {
    'address': someAddress
}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        console.dir(results);
        //cut
        map.panToBounds(results[0].geometry.bounds); //setting bound
        //cut
    }
});

, и

//cut
map.panToBounds(results[0].geometry.viewports); //setting bound
//cut

(Честно говоря, я до сих пор не знаю, в чем разница между границами и окном просмотра и как они используются из кода. google.com/apis/maps/documentation/javascript/geocoding.html)

, но оба они по-прежнему не отображают карту в соответствующем масштабе.

Прямо сейчас я использую небольшой хакер вроде этого

var tabZoom =  {
    street_address: 15,
    route: 15,
    sublocality: 14,
    locality: 13,
    country: 10
};
//cut
map.setCenter(results[0].geometry.location);
if (tabZoom[results[0].types[0]] != undefined){
    map.setZoom(tabZoom[results[0].types[0]]);
} else {
    map.zetZoom(10);
}
//cut

Есть ли другое решение? (Или что-нибудь из Google Map API, чего я еще не знаю?)

Спасибо!

7
задан Petra Barus 9 January 2012 в 08:52
поделиться