Cartographie

API de Géolocalisation en JavaScript : Guide Pratique

Par MapWay Team 25 Mars 2025 8 min de lecture
Code JavaScript sur un écran de développeur

L'API de Géolocalisation du navigateur web est un outil puissant qui permet aux développeurs d'accéder à la position géographique de l'utilisateur. Intégrée dans tous les navigateurs modernes, cette API est au cœur de nombreuses applications : de la recherche de commerces à proximité à la navigation GPS, en passant par les applications de livraison. Chez MapWay, nous l'utilisons notamment dans notre application Houni.tn pour offrir une expérience de géolocalisation optimale en Tunisie.

Fonctionnement de l'API Geolocation

L'API Geolocation est accessible via l'objet navigator.geolocation. Elle fonctionne de manière asynchrone et repose sur plusieurs sources de localisation : le GPS intégré (le plus précis, surtout sur mobile), le Wi-Fi (triangulation des points d'accès), les antennes cellulaires (localisation par réseau mobile), et l'adresse IP (la moins précise, mais toujours disponible).

Le navigateur choisit automatiquement la meilleure source disponible en fonction du contexte. Sur un smartphone en extérieur, le GPS sera privilégié. Sur un ordinateur de bureau connecté en Wi-Fi, la triangulation des points d'accès sera utilisée.

Obtenir la position de l'utilisateur

La méthode principale est getCurrentPosition() qui prend en paramètre un callback de succès, un callback d'erreur optionnel, et des options de configuration :

navigator.geolocation.getCurrentPosition(
  (position) => {
    const lat = position.coords.latitude;
    const lng = position.coords.longitude;
    const accuracy = position.coords.accuracy;
    console.log(`Position: ${lat}, ${lng}`);
    console.log(`Précision: ${accuracy} mètres`);
  },
  (error) => {
    switch(error.code) {
      case error.PERMISSION_DENIED:
        console.log("L'utilisateur a refusé la géolocalisation");
        break;
      case error.POSITION_UNAVAILABLE:
        console.log("Position non disponible");
        break;
      case error.TIMEOUT:
        console.log("Délai d'attente dépassé");
        break;
    }
  },
  {
    enableHighAccuracy: true,
    timeout: 10000,
    maximumAge: 300000
  }
);

Suivi de position en temps réel

Pour suivre la position de l'utilisateur en continu (comme dans une application de navigation), utilisez watchPosition() qui fonctionne de la même manière mais se déclenche à chaque changement de position :

const watchId = navigator.geolocation.watchPosition(
  (position) => {
    updateMapPosition(position.coords.latitude, position.coords.longitude);
  },
  (error) => console.error(error),
  { enableHighAccuracy: true }
);

// Pour arrêter le suivi :
navigator.geolocation.clearWatch(watchId);

Bonnes pratiques essentielles

Gestion des permissions

La géolocalisation nécessite le consentement explicite de l'utilisateur. Ne demandez jamais la permission au chargement de la page. Attendez une interaction utilisateur claire (clic sur un bouton "Me localiser", par exemple) pour déclencher la demande. Expliquez pourquoi vous avez besoin de la position avant de la demander.

HTTPS obligatoire

Depuis 2016, les navigateurs exigent une connexion HTTPS pour accéder à l'API de géolocalisation. C'est une mesure de sécurité indispensable pour protéger les données de localisation des utilisateurs. Assurez-vous que votre site dispose d'un certificat SSL valide.

Gestion de l'énergie sur mobile

Le GPS est très gourmand en énergie. Utilisez enableHighAccuracy: false quand une localisation approximative suffit. Arrêtez le suivi en temps réel dès qu'il n'est plus nécessaire avec clearWatch(). Utilisez maximumAge pour accepter des positions mises en cache.

Fallback et dégradation gracieuse

Prévoyez toujours un plan B si la géolocalisation échoue ou est refusée. Proposez une saisie manuelle de l'adresse, utilisez l'IP pour une localisation approximative, ou demandez à l'utilisateur de choisir sa ville dans une liste. En Tunisie, notre expérience chez MapWay montre que la localisation par IP est souvent imprécise, notamment en raison de la concentration des serveurs DNS à Tunis.

Intégration avec une carte interactive

L'API de géolocalisation prend tout son sens lorsqu'elle est combinée avec une bibliothèque cartographique. Voici un exemple avec Leaflet pour centrer la carte sur la position de l'utilisateur et afficher un marqueur :

const map = L.map('map').setView([36.8, 10.18], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);

function locateUser() {
  map.locate({ setView: true, maxZoom: 16 });
  map.on('locationfound', (e) => {
    L.marker(e.latlng).addTo(map)
      .bindPopup("Vous êtes ici").openPopup();
    L.circle(e.latlng, { radius: e.accuracy }).addTo(map);
  });
  map.on('locationerror', (e) => {
    alert("Impossible de vous localiser : " + e.message);
  });
}

L'expertise MapWay en géolocalisation

Chez MapWay, la géolocalisation est un pilier de nos produits. Notre application Houni.tn exploite l'API de géolocalisation pour offrir une expérience de localisation contextuelle en Tunisie, en combinant les données GPS du navigateur avec notre propre infrastructure de géocodage tunisien. Cette approche hybride nous permet de compenser les limitations des services de géolocalisation standards dans le contexte tunisien.

Besoin d'aide pour votre projet ?

Notre équipe d'experts est prête à vous accompagner.

Contactez-nous