La funzionalità di geolocalizzazione gioca un ruolo importante nello sviluppo di applicazioni mobile. Con un browser moderno, che supporti le Geolocation API di HTML5, è possibile accedere ai dati provenienti dal GPS sfruttandoli nelle applicazioni con poco sforzo.
Il GPS è uno dei diversi sensori presente ormai nella maggior parte degli smartphone, i dati che mette a disposizione sono:
- Coordinate: latitudine e longitudine (espressi in gradi decimali)
- Altitudine (espressa in metri, sul livello del mare)
- Velocità (rispetto al suolo, espressa in metri al secondo)
- Orientamento (espresso in gradi rispetto al Nord)
L'accuratezza di questi dati dipende dal metodo di calcolo, esistono infatti diverse modalità di calcolo della posizione che si alternano sulla base della disponibilità del satellite, della rete cellulare, della rete internet e wifi.
Le Geolocation API, consentono di accedere ai dati del GPS secondo 2 modalità: lettura singola e campionamento continuo.
Nel primo caso occorre sfruttare il metodo getCurrentPosition() dell'oggetto geolocation, passando un handler per gestire la ricezione dei dati ed un altro per gestire eventuali errori.
Nel secondo caso è sufficiente sfruttare il metodo watchPosition() passando gli stessi parametri del caso precedente
Quando si tenta di utilizzare le Geolocation API, il browser richiederà l'approvazione dell'utente all'utilizzo della posizione, solo in seguito si potrà ad esempio visualizzare la posizione su una mappa oppure calcolare la distanza con un punto di interesse (formula di Haversine).
Nell'esempio seguente viene dimostrato come utilizzare le Geolocation API per campionare i dati del GPS
<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <meta name="viewport"content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes"/> <title>GPS</title> </head> <body> <h3>Coordinate</h3> <dl> <dd>Latitudine: <span id="lat"></span></dd> <dd>Longitudine: <span id="lon"></span></dd> <dd>Tolleranza: <span id="toll"></span> m</dd> <dd>Altitudine: <span id="alt"></span> metri s.l.m. (Tolleranza:<span id="toll2"></span> m)</dd> <dd>Orientamento: <span id="hdg"></span>°</dd> <dd>Velocità: <span id="spe"></span> m/s</dd> <dd><span id="status"></span></dd> </dl> </body> </html>
function handleLocationError(error) { switch(error.code){ case 0: updateStatus("Si è verificato un errore: " + error.message); break; case 1: updateStatus("L'utente ha negato l'utilizzo della posizione"); break; case 2: updateStatus("Il browser non riesce a calcolare la posizione " + error.message); break; case 3: updateStatus("Timeout durante il calcolo della posizione"); break; } } function updateLocation(position) { //Lettura dati dal GPS var latitude = position.coords.latitude; var longitude = position.coords.longitude; var accuracy = position.coords.accuracy; var altitude = position.coords.altitude; var accuracy2 = position.coords.altitudeAccuracy; var heading = position.coords.heading; var speed = position.coords.speed; document.getElementById("lat").innerHTML = latitude; document.getElementById("lon").innerHTML = longitude; document.getElementById("alt").innerHTML = altitude; document.getElementById("toll").innerHTML = Math.round(accuracy); document.getElementById("toll2").innerHTML = Math.round(accuracy2); document.getElementById("hdg").innerHTML = Math.round(heading); document.getElementById("spe").innerHTML = Math.round(speed); } document.onload= function(e){ var watchId = navigator.geolocation.watchPosition(updateLocation, handleLocationError); }
La specifica completa è disponibile qui: http://www.w3.org/TR/geolocation-API/
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Proteggere le risorse Azure con private link e private endpoints
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Rendere le variabili read-only in una pipeline di Azure DevOps
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Recuperare l'ultima versione di una release di GitHub
Recuperare App Service cancellati su Azure
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Gestione degli stili CSS con le regole @layer
Gestione dell'annidamento delle regole dei layer in CSS
Gestire i dati con Azure Cosmos DB Data Explorer
Gestione dei nomi con le regole @layer in CSS
I più letti di oggi
- Creare agenti facilmente con Azure AI Agent Service
- Loggare le query più lente con Entity Framework
- Rendere i propri workflow e le GitHub Action utilizzate più sicure
- Disabilitare le run concorrenti di una pipeline di Azure DevOps
- Gestione degli eventi nei Web component HTML
- Fornire parametri ad un Web component HTML
- Introduzione ai web component HTML