Używam Google Maps i usługi Google Geokodowanie dla mojej aplikacji usług lokalizacyjnych. Używam usługi Google Geokodowania do tłumaczenia adresu na pozycję lat/lng. Mój problem polega na tym, jak automatycznie znaleźć odpowiedni zoom dla określonego adresu, np. Maps.google.com.Automatyczne wyszukiwanie odpowiedniego powiększenia dla wyniku geokodowania
Na przykład, gdy przeszukuję ulicę na maps.google.com (np. Cisitu Baru, Bandung
), pokaże ona ulicę przy mniejszym powiększeniu. Gdy przeszukuję region (np. Bandung
), wyświetli on większy zoom. I większy zoom dla prowincji (np. Jawa Barat
/West Java
) i tak dalej.
Próbowałem zarówno
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
}
});
i
//cut
map.panToBounds(results[0].geometry.viewports); //setting bound
//cut
(Szczerze mówiąc, ja nadal nie wiem, jaka jest różnica między bounds
i viewport
i jakie są ich zastosowania z code.google.com /apis/maps/documentation/javascript/geocoding.html)
, ale oba nadal nie wyświetlają mapy w odpowiednim powiększeniu.
Teraz używam mały kilof jak ten
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
Czy istnieje inne rozwiązanie? (Lub czegokolwiek z Google Map API, którego jeszcze nie znam?)
Dzięki!
Nie znam interfejsu API v2. Czy możesz opisać to za pomocą API v3? Dzięki. –
w wersji 3 można użyć klasy LatLngBounds http://code.google.com/apis/maps/documentation/javascript/reference.html#LatLngBounds –
Po prostu znalazłem metodę "fitBounds" z przykładowego adresu URL. Po prostu robię 'map.fitBounds (results [0] .geometry.bounds);' i działa jak urok. Dzięki! –