Good Ideas

Ottenere il massimo zoom per Google Maps

Posted by:

|

On:

|

Mi è capitato spesso, lavorando con le API di Google Maps, di dover impostare il massimo zoom disponibile per una certa località. Questo è un problema perchè Google Maps non offre lo stesso dettaglio per tutte le zone del mondo. La spiaggia di Bondi di Sydney, per esempio, arriva al livello di zoom 22, mentre nelle zone interne dell’Oceano Pacifico arriviamo al massimo al livello 9. Fino ad oggi non ci era fornito il massimo livello di zoom disponibile e di conseguenza si doveva scegliere un livello “politico” che potesse statisticamente andar bene alla gran parte dei luoghi.

massimo-zoom-google-maps

La soluzione al problema è data da una nuova funzione asincrona che fa parte della classe GMapType: getMaxZoomAtLatLng. La funzione prende una coordinata geografica GLatLng e restituisce il massimo livello di zoom per cui esiste la mappa fotografica satellitare. Siccome la funzione richiede una richiesta ai server di Google (simile alla chiamata  GClientGeocoder.getLocations()), è stata messa a disposizione una callback che si attiva all’arrivo della risposta dai server.

Come esempio, ecco una funzione che imposta il centro e il massimo livello di zoom di una data mappa (un oggetto GMap2):

[code lang=”javascript”]
function setMaxZoomCenter(map, latlng) {
map.getCurrentMapType().getMaxZoomAtLatLng(latlng, function(response) {
if (response && response[‘status’] == G_GEO_SUCCESS) {
map.setCenter(latlng, response[‘zoom’]);
}
});
}
[/code]

Come si può vedere, la risposta response contiene un codice di stato (status), e, se la risposta è andata a buon fine, viene restituito un campo response["zoom"] che contiene il livello di zoom.

Se volete vedere un esempio funzionante, andate alla pagina predisposta per illustrare la nuova funzione sul sito ufficiale di Google Code.

Chiaramente la funzione getMaxZoomAtLatLng è applicabile solo a mappe di tipo G_SATELLITE_MAP e G_HYBRID_MAP, mentre per le cartine senza immagini satellitare si può sempre raggiungere il massimo dettaglio. La guida completa è possibile leggerla nella pagina ufficiale delle API di Google Maps.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *