Geolocation API

Geolocation API

Introduction

L'API Géolocalisation va vous permettre d'avoir un accès à des informations de localisation géographique associée au dispositif d'hébergement (Portable, IP, ...).
L'utilisation la plus classique est de vous positionner sur une carte.


Il existe à ce jour 1 version finalisée du "Geolocation API" :
- "Level 1" : est daté du 24 Octobre 2013.
La version "Level 2" est en cour de rédaction.

Code javascript

Test l'existance de l'Api

Pour tester si l'Api existe :
Exemple de code :
if (navigator.geolocation) {/*oui*/} else {/*non*/}

Attention, l'utilisation du test ci-dessous bug sous FireFox < 25 renvoi true même si l'Api de géolocalisation est désactivée.
Exemple de code :
if ("geolocation" in navigator) {/*oui*/} else {/*non*/}

Suivre la position

Pour récupérer les coordonnées de géolocalisation d'un appareil vous avez 2 possibilités :
- utiliser Geolocation.getCurrentPosition( PositionCallback, PositionErrorCallback, PositionOptions ), qui vous permet de récupérer une fois les coordonnées.
- utiliser Geolocation.watchPosition( PositionCallback, PositionErrorCallback, PositionOptions ), qui vous permet de récupérer plusieurs fois les coordonnées et donc de suivre l'appareil.

Les paramètres passés aux deux méthodes fonctionnent de la même manière :
- PositionCallback est appelé quand l'Api a trouvé les coordonnées de géolocalisation.
Exemple de code :
function PositionCallback( oPosition ){
  //oPosition est un Objet Position
  alert(oPosition.coords.latitude)
  //Action
}

- PositionErrorCallback est appelé quand l'Api n'a pas pu trouver les coordonnées de géolocalisation.
Exemple de code :
function PositionErrorCallback( oPositionError ){
  //oPositionError est un Objet PositionError
  switch(oPositionError.code) {
    case oPositionError.TIMEOUT:
      //action
      break;
    case oPositionError.PERMISSION_DENIED:
      //action
      break;
    case oPositionError.POSITION_UNAVAILABLE:
      //action
      break;
    case oPositionError.UNKNOWN_ERROR:
      //action
      break;
    default:
      //action
  }
}

- PositionOptions spécifie les options de la recherche.
Exemple de code :
var PositionOptions = {
  enableHighAccuracy:false,
  maximumAge:10000,
  timeout:'Infinity'
};

Soit:
Exemple de code :
function PositionCallback( oPosition ){
  //oPosition est un Objet Position
  alert(oPosition.coords.latitude)
  //Action
}
function PositionErrorCallback( oPositionError ){
  //oPositionError est un Objet PositionError
  switch(oPositionError.code) {
    case oPositionError.TIMEOUT:
      //action
      break;
    case oPositionError.PERMISSION_DENIED:
      //action
      break;
    case oPositionError.POSITION_UNAVAILABLE:
      //action
      break;
    case oPositionError.UNKNOWN_ERROR:
      //action
      break;
    default:
      //action
  }
}
var PositionOptions = { enableHighAccuracy:false, maximumAge:10000, timeout:'Infinity' };

if((navigator.geolocation)){
  var oGeolocation = navigator.geolocation;
  oGeolocation.getCurrentPosition( PositionCallback, PositionErrorCallback, PositionOptions );
  //ou
  var idWatchPosition = oGeolocation.watchPosition( PositionCallback, PositionErrorCallback, PositionOptions );
}

Compatibilité navigateur

Compatibilité

L'Api de géolocalisation est compatible avec les navigateurs suivant :
- Internet Explorer : 9+
- Chrome : 28+
- Safari : 5+
- Firefox : 3.5+
- Opera : 10+ (supprimé dans la version 15 seulement).
Pour les versions Mobiles :
- Safari : ios 3.2+
- Firefox : 4+
- Internet Explorer : 10+
- Android : 2+
- Opera : 10.6+
- Blackberry : 6+