Ricerca…


Sintassi

  • navigator.geolocation.getCurrentPosition ( successFunc , failureFunc )
  • navigator.geolocation.watchPosition ( updateFunc , failureFunc )
  • navigator.geolocation.clearWatch ( watchId )

Osservazioni

L'API di geolocalizzazione fa ciò che ci si potrebbe aspettare: recuperare informazioni sulla posizione del cliente, rappresentata in latitudine e longitudine. Tuttavia, spetta all'utente decidere di dare la propria posizione.

Questa API è definita nella specifica dell'API di geolocalizzazione W3C. Sono state esplorate funzionalità per ottenere indirizzi civici e per abilitare il geofencing / trigger degli eventi, ma non sono state implementate ampiamente.

Per verificare se il browser supporta l'API di geolocalizzazione:

if(navigator.geolocation){
    // Horray! Support!
} else {
    // No support...
}

Ottieni latitudine e longitudine di un utente

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(geolocationSuccess, geolocationFailure);
} else {
  console.log("Geolocation is not supported by this browser.");
}

// Function that will be called if the query succeeds
var geolocationSuccess = function(pos) {
  console.log("Your location is " + pos.coords.latitude + "°, " + pos.coords.longitude + "°.");
};

// Function that will be called if the query fails
var geolocationFailure = function(err) {
  console.log("ERROR (" + err.code + "): " + err.message);
};

Codici di errore più descrittivi

Nel caso in cui la geolocalizzazione non riesca, la funzione di callback riceverà un oggetto PositionError . L'oggetto includerà un attributo denominato code che avrà un valore di 1 , 2 o 3 . Ciascuno di questi numeri indica un diverso tipo di errore; la funzione getErrorCode() seguito accetta PositionError.code come unico argomento e restituisce una stringa con il nome dell'errore che si è verificato.

var getErrorCode = function(err) {
  switch (err.code) {
    case err.PERMISSION_DENIED:
      return "PERMISSION_DENIED";
    case err.POSITION_UNAVAILABLE:
      return "POSITION_UNAVAILABLE";
    case err.TIMEOUT:
      return "TIMEOUT";
    default:
      return "UNKNOWN_ERROR";
  }
};

Può essere utilizzato in geolocationFailure() modo:

var geolocationFailure = function(err) {
  console.log("ERROR (" + getErrorCode(err) + "): " + err.message);
};

Ricevi aggiornamenti quando cambia la posizione di un utente

Puoi anche ricevere aggiornamenti regolari della posizione dell'utente; ad esempio, mentre si spostano mentre si utilizza un dispositivo mobile. Il rilevamento della posizione nel tempo può essere molto delicato, quindi assicurati di spiegare in anticipo all'utente perché stai richiedendo questa autorizzazione e in che modo utilizzerai i dati.

if (navigator.geolocation) {
    //after the user indicates that they want to turn on continuous location-tracking
    var watchId = navigator.geolocation.watchPosition(updateLocation, geolocationFailure);
} else {
    console.log("Geolocation is not supported by this browser.");
}

var updateLocation = function(position) {
    console.log("New position at: " + position.coords.latitude + ", " + position.coords.longitude);
};

Per disattivare gli aggiornamenti continui:

navigator.geolocation.clearWatch(watchId);


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow