1/05/2014

HTML5::: La géolocalisation




1- Introduction
         
 Le but de cet article est d'apprendre à implémenter la geolocalisation sur votre site web, en se servant de l'une des fonctionnalités de HTML5: l'API géolocalisation. Le but est de repérer un internaute  à partir de son ordinateur ou de son mobile et d'afficher sa position sur une carte.








  2- Affichage d'une carte
               
                  Puisqu'il faut repérer, nous avons besoin d'une carte. Il existe  une multitude d'API pour
     cela, mais nous utiliserons celle de google. Pour afficher une carte google sur une page web il suffit
    de :


   -  Faire appel à l'API de google Map dans la balise <head> de la page en ajoutant cette ligne:

  <script type="text/javascript"   src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>

Dans la page, on réserve un espace pour afficher la carte. Une balise <div> par exemple :

          <div id="map" width="500px" height="350px">
                
          </div>

Ensuite le code javascript pour initialiser la carte :



function init(){      
var myPosition = new google.maps.LatLng(6, 6);
         var myOptions = {
         zoom : 4,
         center : myPosition,
         mapTypeId : google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("map"),
           myOptions);
3- Acquisition des coordonnées
        La géolocalisation avec Html5 s'effectue en récupérant des données fournies au navigateur par le dispositif utilisant l'application (par exemple, un téléphone mobile, un PC). Il existe différentes méthodes de localisation suivant le dispositif utilisé :
  • Adresse IP
  • Coordonnées GPS
  • Réseau WIFI
  • Réseau mobile
  • Données entrée par l'utilisateur   .
             
           Pour ce faire on emploie JavaScript, en appelant la fonction navigator.geolocation.getCurrentPosition(). Cette fonction accepte 3 paramètres dont 2 optionnels. Ces paramètres sont en fait des fonctions dont le role est de gérer les évènements suivant :
           - Succès de la localisation : fonction successCallback, paramètre obligatoire.
                  Le paramètre obligatoire est la fonction successCallback, appelée en cas de succès de la géolocalisation, et qui récupère l'objet Position retourné. Cet objet contient les coordonnées de la position : latitudelongitude et accuracy (précision en mètres), accessibles via l'attribut coords.
           - Echec de la localisation : fonction errorCallback, paramètre facultatif.

 Ensuite, on peut spécifier un paramètre errorCallback qui permet de définir une fonction pour gérer les cas d'erreurs.
           - Options de geolocalisation : paramètre facultatif
   Enfin on peut ajouter des options à notre géolocalisation (timeoutmaximumAge
enableHighAccuracy).
Concrètement le code javascript à utiliser est celui-ci
function localize(){
  if(navigator.geolocation){
        navigator.geolocation.getCurrentPosition(
            function (pos){
               var crd = pos.coords;
                   write("Latitude : " + pos.coords.latitude +
                         ", Longitude : " + pos.coords.longitude +
                  ", Erreur estimée à : "+ pos.coords.accuracy + "mètres" );
            },
        function (error){
              
              switch(error.code){
                  case error.PERMISSION_DENIED:
                      write("L'utilisateur n'a pas autorisé"+
                                "l'accès à sa position");
                  break;      
                  case error.POSITION_UNAVAILABLE:
                      write("L'emplacement de l'utilisateur"+
                             "n'a pas pu être déterminé");
                  break;
                  case error.TIMEOUT:
                      write("Le service n'a pas répondu à temps");
                  break;
               }
         },
         {
              enableHighAccuracy: true,
              timeout: 5000,
              maximunAge: 0
         });

    }else{
        write("Votre Navigateur ne supporte pas" +
                     " la geolocalissation avec HTML5");
    }
   
    
                L'objet renvoyé par la fonction getCurrentPosition() est l'objet pos que nous  passons en paramètre dans la fonction successCallback qui a pour but d'afficher  les coordonnées dans le navigateur.
            En cas d'une éventuelle erreur on aura un message d'erreur qui s'affichera.


4- Afficher la position sur la carte

                       Maintenant tout ce qui nous reste à faire, c'est d'afficher la position sur la carte, en
    appelant  la fonction findme(), qui elle-meme appelle la fonction localize() qui lui fournit les
coordonnées à afficher. On ajoute aussi la fonction write() qui affiche des messages à l'utilisateur. 
  



function findme(){
 localize();
  var marker = new google.maps.Marker({
                   position : myPosition,
                   map : map,
                   title : "Here you are!"
   });
}
 function write(msg){
      document.getElementById("info").innerHTML = msg;
   }
var map;
var crd;
var myPosition;

Le code Html de la page est le suivant.

  
<html>
   <head>        
     <script type="text/javascript" src="js/geolocalisation.js"></script> 
     <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>       
   </head>
    <body  onload="init()">
          <div id="map" width="800px" height="500px">
                
          <div>
          <span id="info"><span>
     </body>
</html>
   
            Il faut aussi ajouter que la localisation de l'utilisateur ne peut se faire qu'avec son accord,
 pour eviter des intrusions dans sa vie privée. Sil décide de ne pas autoriser sa localisation, vous 
 n'y pouvez rien.
       Bientot vous aurez un autre article entièrement consacré aux cartes. 
Alors en attendant amusez-vous bien, et vive HTML5. Et voici de quoi tout ce dont nous avons
parlé a l'air.

5- Apercu

3 commentaires:

  1. LA carte ne s'affiche pas malheureusement. Un problème avec BLOGGER. J'espère le résoudre bientot.

    RépondreSupprimer
  2. OK. Maintenant le problème d'affichage de carte est réglé.......Merci pour votre patience

    RépondreSupprimer
  3. Elle est coupée au niveau de OCEAN INDIEN sur la carte.
    Bonne article tout de même.

    il faut noter qu'on peut télécharger l'API et l'utiliser avec jquery pour un developpement en local.
    A+

    RépondreSupprimer

Ajouter un commentaire

HTML5::: La géolocalisation

1- Introduction            Le but de cet article est d'apprendre à implémenter la geolocalisation sur votre site web, en se se...