Estoy usando Google Maps y el servicio de geocodificación de Google para mi aplicación de servicio de ubicación. Uso el servicio de geocodificación de Google para traducir la dirección a la posición lat/lng. Mi problema es cómo encontrar automáticamente un zoom apropiado para una determinada dirección, como hace el maps.google.com.Búsqueda automática del zoom apropiado para el resultado de geocodificación
Por ejemplo, cuando busco una calle en maps.google.com (por ejemplo, Cisitu Baru, Bandung
), se mostrará la calle con un zoom más pequeño. Cuando busco en una región (por ejemplo, Bandung
), se mostrará un zoom más grande. Y un zoom más grande para la provincia (por ejemplo, Jawa Barat
/West Java
), y así sucesivamente.
He intentado tanto
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
}
});
y
//cut
map.panToBounds(results[0].geometry.viewports); //setting bound
//cut
(Honestamente, todavía no sé cuál es la diferencia entre bounds
y viewport
y cuáles son sus usos de code.google.com /apis/maps/documentation/javascript/geocoding.html)
pero ambos aún no muestran el mapa con el zoom apropiado.
En este momento, utilizar un pequeño truco como esto
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
¿Hay otra solución? (O cualquier cosa de Google Map API que aún no conozco?)
¡Gracias!
No estoy familiarizado con la API v2. ¿Puedes describirlo usando la API v3? Gracias. –
en v3 puede usar la clase LatLngBounds http://code.google.com/apis/maps/documentation/javascript/reference.html#LatLngBounds –
Bien, acabo de descubrir el método 'fitBounds' de su URL de ejemplo. Acabo de hacer 'map.fitBounds (results [0] .geometry.bounds);' y funciona como un amuleto. ¡Gracias! –