Я использую Google Maps и службу геокодирования Google для своего приложения службы определения местоположения.Я использую сервис Google Geocoding для перевода адреса в широту / долготу.Моя проблема заключается в том, как автоматически найти подходящий зум для определенного адреса, как, например, maps.google.com.
Например, когда я ищу улицу в maps.google.com (например, Cisitu Baru, Bandung
),это покажет улицу в меньшем увеличении.Когда я ищу регион (например, Bandung
), он показывает больший зум.И больший зум для провинции (например, Jawa Barat
/ West Java
) и т. Д.
Я пробовал и
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
(Честно говоря, я до сих пор не знаю, в чем разница между bounds
и viewport
и как они используются на code.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
Есть ли другое решение?(Или что-нибудь из API Карт Google, которого я еще не знаю?)
Спасибо!