Recherche…


Syntaxe

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

Remarques

L'API de géolocalisation fait ce que vous pouvez attendre: récupérer des informations sur la localisation du client, représentées par la latitude et la longitude. Cependant, il appartient à l'utilisateur d'accepter de donner son emplacement.

Cette API est définie dans la spécification de l' API de géolocalisation du W3C. Des fonctionnalités permettant d’obtenir des adresses civiques et de permettre le géofencing / le déclenchement d’événements ont été explorées mais ne sont pas largement implémentées.

Pour vérifier si le navigateur prend en charge l'API de géolocalisation:

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

Obtenir la latitude et la longitude d'un utilisateur

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);
};

Codes d'erreur plus descriptifs

Si la géolocalisation échoue, votre fonction de rappel recevra un objet PositionError . L'objet inclura un attribut nommé code qui aura une valeur de 1 , 2 ou 3 . Chacun de ces nombres signifie un type d'erreur différent; La fonction getErrorCode() ci-dessous prend le PositionError.code comme seul argument et renvoie une chaîne avec le nom de l'erreur qui s'est produite.

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";
  }
};

Il peut être utilisé dans geolocationFailure() comme ceci:

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

Obtenir des mises à jour lorsque l'emplacement d'un utilisateur change

Vous pouvez également recevoir des mises à jour régulières de l'emplacement de l'utilisateur; par exemple, lorsqu'ils se déplacent en utilisant un appareil mobile. Le suivi de localisation au fil du temps peut être très sensible, alors assurez-vous d'expliquer à l'utilisateur à l'avance pourquoi vous demandez cette permission et comment vous utiliserez les données.

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);
};

Pour désactiver les mises à jour continues:

navigator.geolocation.clearWatch(watchId);


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow