Continuiamo in questa lezione la nostra analisi delle interfacce implicate nella geolocalizzazione.
L’interfaccia Position
L’interfaccia funziona come contenitore delle informazioni di geolocalizzazione ottenute tramite le APIs.
Signature
interface Position {
readonly attribute Coordinates? coords;
readonly attribute Address? address;
readonly attribute DOMTimeStamp timestamp;
};
Analizziamo i vari attributi partendo da coords: rappresenta un oggetto contenente le coordinate geografiche ed alcune infomazioni aggiuntive, la analizzeremo a breve; l’attributo è opzionale.
address contiene un insieme di properties che descrivono la posizione del dispositivo in termini di indirizzo, analizzeremo a breve l’oggetto; l’attributo è opzionale.
timestamp viene valorizzato con l’istante in cui la posizione è stata acquisita ed è rappresentato da un oggeto DOMTimestamp (mappato in un oggetto Date in Javascript).
Il draft suggerisce alle implementazioni che, sebbene siano entrambi opzionali, qualora coords ed address fossero entrambi assenti il processo di acquisizione delle informazioni dovrebbe essere considerato fallito.
L’interfaccia Coordinates
Signature
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;
};
Gli attributi
- latitude e longitude sono espressi in gradi, se assenti debbono essere valorizzate a null.
- altitude rappresenta l’altezza sul livello del mare, specificata in metri; quando assente deve valere null.
- accuracy come già accennato rappresenta la precisione della misurazione (in metri, numerico, livello di confidenza 95%); laddove latitude e longitude fossero nulli accuracy varrebbe null.
- altitudeAccuracy: come accuracy, riferito però ad altitude.
- heading indica la direzione di viaggio specificata in gradi riferiti al nord (punto cardinale) contando in senso orario; null qualora non fosse possibile recuperare l’informazione, NaN laddove il dispositivo sia stazionario (speed = 0).
- speed indica la velocità orizzontale dello spostamento; specificata in metri al secondo, vale null se non è possibile ottenere l’informazione.
- vertical speed: come speed ma riferito allo spostamento verticale.
Tutti gli attributi sono opzionali ma nel caso in cui valgano tutti null lo stesso oggetto Coordinates dovrebbe valere null.
L’interfaccia address
Signature
interface Address {
readonly attribute DOMString? country;
readonly attribute DOMString? region;
readonly attribute DOMString? county;
readonly attribute DOMString? city;
readonly attribute DOMString? street;
readonly attribute DOMString? streetNumber;
readonly attribute DOMString? premises;
readonly attribute DOMString? postalCode;
};
Gli attributi
- country indica la nazione, specificata tramite il codice ISO a due lettere (Italia = IT).
- region può indicare, in accordo alle divisioni amministrative dei singoli stati, uno stato americano, una regione italiana, un dipartimento francese e così via.
- county rappresenta un zona di una regione (la provincia italiana).
- city ("Senago, Milano").
- street ("Via Roma")
- streetNumber indica il numero civico.
- premises può indicare il nome di un edificio o di un blocco di edifici ad esempio ("Palazzo Reale"). (premise = "edificio con terreno")
- postalCode indica il codice di avviamento postale (CAP in Italia, zipCode negli USA).
Equivalentemente a quanto detto per Coordinates anche per Address vale la regola per cui qualora tutti gli attributi siano nulli anche l’oggetto sarà null.
L’interfaccia PositionError
Signature
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 attribute DOMString message;
};
PositionError rappresenta l’oggetto da ritornare all’errorHandler qualora la richiesta di geolocalizzazione dovesse fallire.
Possibili valori dell’attributo code
- PERMISSION_DENIED (valore numerico 1): il fallimento della richiesta è dovuto alla negazione del permesso da parte dell’utente.
- POSITION_UNAVAILABLE (valore numerico 2): impossibile determinare la posizione del dispositivo.
- TIMEOUT (valore numerico 3): la richiesta non è stata soddisfatta entro la scadenza del timeout impostato.
L’attributo message sarà valorizzato con un testo che spiega i dettagli dell’errore (a scopo di debug e non di comunicazione all’utente).