- Pubblicato il
Come creare una semplice applicazione di geolocalizzazione
- Autori
- Name
- Maico Orazio
- @mainick
Qui vi mostrerò come utilizzare la nuova Geolocation API, insieme alle API di Google Maps, per individuare la posizione dell’utente e visualizzare una mappa con quella posizione.
Dopo che la mappa è pronta, vi mostrerò come aggiungere un marker e come recuperare ulteriori informazioni sulla posizione dell’utente con una Reverse Geolocation.
Per prima cosa, diamo uno sguardo alle risorse da collegare alla nostra pagina necessari per sviluppare l’esempio:
<!-- googlemap API: fundamental to show the map -->
<script src="http://maps.google.com/maps/api/js?sensor=true">
<!--mce:0-->
</script>
Google Maps API V3 script to visualise, modify and enrich our maps.
Documento HTML
Questo è tutto il contenuto della nostra pagina html:
<div id="map">
<img id="mapAjaxLoader" src="img/ajax-loader.gif" alt="loader" width="32" height="32" />
</div>
un div contenitore della mappa, che contiene l’immagini di loading che faremo visualizzare fino al caricamento dinamico della mappa di Google nel div mapHolder
.
Foglio di stile CSS
Nel foglio di stile collegato alla pagina indichiamo solo le dimensioni del contenitore mappa.
#mapHolder {
width: 336px;
height: 224px;
}
Script in JavaScript
Come prima cosa verifichiamo se il browser supporta le Geolocation API:
// individuare il supporto del browser per Geolocation
if (navigator.geolocation !== 'undefined') {
navigator.geolocation.getCurrentPosition(displayLocation, displayError)
} else {
alert('Il tuo browser non supporta geolocalizzazione.')
}
il metodo getCurrentPosition
di navigator.geolocation
serve per rilevare la posizione del visitatore, al quale passiamo come parametri due funzioni che saranno chiamate a seconda del feedback dell’utente (se permette o rifiuta di rilevare la sua posizione):
handler displayLocation
in caso di successo:
function displayLocation(position) {
var lat = position.coords.latitude
var lon = position.coords.longitude
// chiamiamo createMap con le coordinate della posizione individuata
createMap(position.coords)
}
position
è l’oggetto generato automaticamente da getCurrentPosition
, che ha due porprietà la latitudine position.coords.latitude
e longitudine position.coords.longitude
. Ottenuto le coordinate creiamo la mappa tramite le API di Google Maps:
function createMap(coords) {
// crea un oggetto LatLng
var googleCoords = new google.maps.LatLng(coords.latitude, coords.longitude)
// opzioni da passare per la creazione della mappa
var mapOpts = {
zoom: 15, //zoom della mappa
center: googleCoords, // centro mappa
mapTypeId: google.maps.MapTypeId.ROADMAP, //tipo mappa [ROADMAP - SATELLITE - HYBRID]
}
var mapDiv = document.getElementById('mapHolder')
//crea oggetto mappa
map = new google.maps.Map(mapDiv, mapOpts)
}
Creare un marker sulla mappa e ottente l’indirizzo
Per creare un marker sulla mappa ad indicare posizione individuata, chiamiamo la funzione alla fine di createMap
, passandogli l’oggetto mappa e le opzioni personalizzate:
// aggiunge un marker sulla mappa utilizzando google.maps.Marker
function addMarker(map, googleCoords) {
//opzioni per il marker
var markerOpts = {
animation: google.maps.Animation.BOUNCE, //animazione marker [DROP / BOUNCE]
position: googleCoords,
map: map,
}
var marker = new google.maps.Marker(markerOpts)
}
Possiamo recuperare ulteriori informazioni sulla posizione rilevata, ad esempio l’indirizzo. Dopo aver creato il marker, chiamiamo la funzione e gli passiamo le coordinate del marker:
function getCity(coords) {
var point = new google.maps.LatLng(coords.latitude, coords.longitude)
//crea un nuovo oggetto Geocoder
var geocoder = new google.maps.Geocoder()
geocoder.geocode({ latLng: point }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
//mettiamo l'indirizzo ricevuto in un div yourCITYdiv
document.getElementById('yourCITY').innerHTML = results[1].formatted_address
} else {
//in caso di errore
document.getElementById('yourCITY').innerHTML = 'Ricerca indirizzo non riuscita: ' + status
}
}
})
}
Nella funzione descritta sopra, definiamo un nuovo oggetto Geocoder
. Analizziamo, tramite il metodo geocode
, il punto definito dalle coordinate date in input alla funzione, se non si verificano errori il risultato restituirà l’indirizzo dettagliato della posizione dell’utente in results[1].formatted_address
.
Conclusioni
Questo è solo un esempio di creazione della mappa utilizzando le Geolocation API di HTML5 e quelle di Google Maps. Creare una mappa è abbastanza semplice, quindi è possibile personalizzarla utilizzando tutti i tipi di metodi e proprietà delle API; per saperne di più date un’occhiata alla documentazione delle Google Maps JavaScript API.