Geolocalizzazione APIs
Non fanno parte dell’HTML5 ma sono un’interfaccia che fornisce, tramite script, informazioni relative alla posizione geografica, le informazioni sono rappresentate nella forma di coordinate geografiche (longitudine, latitudine).
Il meccanismo di funzionamento delle API si basa sull’interfaccia Geolocation, esistono tre metodi:
- getCurrentPosition
void getCurrentPosition(
in PositionCallback successCallback,
in optional PositionErrorCallback errorCallback,
in optional PositionOptions options
);Il metodo restituisce la posizione attuale del dispositivo (successCallback) oppure una descrizione dell’errore generato (errorCallback).
- watchPosition
long watchPosition(
in PositionCallback successCallback,
in optional PositionErrorCallback errorCallback,
in optional PositionOptions options
);Il metodo restituisce un numero che identifica un’operazione di monitoraggio.
clearWatch - clearWatch
void clearWatch(in long watchId); Il metodo blocca il processo indicato.
L’oggetto PositionOption è il seguente
interface PositionOption { attribute boolean enableHighAccuracy; attribute long timeout; attribute long maximumAge; attribute boolean requireCoords; attribute boolean requestAddress; }; |
- enableHighAccuracy
richiede la massima precisione nei risultati; - timeout
richiede la massima latenza accettata (in millisecondi); - maximumAge
richiede posizioni cached non più vecchie del valore definito; - requireCoords
comunica la chiamata fallita se non fosse possibile recuperare le informazioni delle coordinate; - requestAddress
indica la richiesta di un indirizzo;
L’interfaccia Position funziona come contenitore delle informazioni di geolocalizzazione
interface Position { readonly attribute Coordinates? coord; readonly attribute Address? address; readonly attribute DOMTimeStamp timestamp; }; |
- coords, rappresenta un oggetto contenente le coordinate geografice ed alcune informazioni aggiuntive;
- address, contiene un insieme di proprerties che descrivono la posizione del dispositivo;
- timestamp, contiene l’istante in cui la posizione è stata acquisita;
L’interfaccia Coordinates
interface Coordinates { readonly attribute double? latitude; readonly attribute double? longitude; readonly attribute double? altitude; readonly attribute double? accuracy; readonly attribute double? altitudeAccuracy; readonly attribute double? heading; readonly attribute double? speed; readonly attribute double? verticalSpeed; }; |
- latitude e longitude sono espressi in gradi;
- altitude rappresenta l’altezza sul livello del mare;
- accuracy rappresenta la precisione della misurazione;
- altitudeAccuracy, rappresenta la precisione riferita solo ad altitude;
- heading, indica la direzione di viaggio in gradi riferita al nord;
- speed, indica la velocità di spostamento orizzontale;
- verticalSpeed, indica la velocità di spostamento verticale;
L’interfaccia address
interface Address { readonly attribute DOMString? country; readonly attribute DOMString? region; readonly attribute DOMString? country; readonly attribute DOMString? city; readonly attribute DOMString? street; readonly attribute DOMString? streetNumber; readonly attribute DOMString? premises; readonly attribute DOMString? postalCode; }; |
- country, indica la nazione, specificata tramite il codice ISO;
- region, indica uno stato americano, una regione italiana, un dipartimento francese etc;
- country, rappresenta una zona di una regione;
- city, indica la città;
- street, indica la via;
- streetNumber, il numero civico;
- permises, indica il nome o un blocco di edifici;
- postalCode indica il cap o zipcode;
L’interfaccia PositionError
interface PositionError { const unsigned short PERMISSION_DENIED = 1; const unsigned short POSITION_UNAVAILABLE = 2; const unsigned short TIMEOUT = 3; readonly attribute unsigned short code; readonly attrribute DOMString message; }; |
- PERMISSION_DENIED, il fallimento è dovuto alla negazione da parte dell’utente;
- POSITION_UNAVAILABLE, impossibile determinare la posizione del dispositivo;
- TIMEOUT, la richiesta non è stata soddisfatta entro la scadenza del timeout;