Я использую 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, чего я еще не знаю?)
Спасибо!