HtmlProgettazione Web

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;