Guillaume Orsal EI
Développeur Web indépendant
  1. Création site Internet
  2. > Projets
  3. > Géolocalisation Web : API W3C et alternatives cross-plateforme
Géolocalisation Web : API W3C et alternatives cross-plateforme

Géolocalisation Web : API W3C et alternatives cross-plateforme

jeudi 10 décembre 2009, par Guillaume Orsal

Note importante : Cet article a été publié en 2009. Google Gears est obsolète depuis, et l’API W3C Geolocation est maintenant le standard universellement supporté. Cet article conserve une valeur historique et pédagogique.

Introduction

La géolocalisation par navigateur web s’est imposée comme une technologie incontournable pour les applications modernes. Contrairement au développement natif limité à des plateformes spécifiques, elle offre une portabilité universelle et une accessibilité accrue auprès des utilisateurs.

Bien que le développement sur iPhone soit entravé par des barrières d’accès significatives, les approches basées sur le navigateur web contournent ces limitations et fonctionnent sur l’ensemble des appareils connectés, du smartphone à l’ordinateur de bureau.

Cet article synthétise les technologies de géolocalisation disponibles et les techniques d’implémentation cross-plateforme, pour vous faire gagner le temps de recherche qu’a nécessité cette exploration technique.

Objectif

Cet article présente les deux technologies majeures de géolocalisation : le standard W3C implémenté par les navigateurs modernes, et la solution Google Gears comme alternative pour les environnements non compatibles. Nous examinerons les principes techniques communs à ces deux approches, puis verrons comment les unifier dans une implémentation unique et robuste.

Technologies existantes et techniques de localisation

Il existe deux principaux standards de géolocalisation web. Le W3C, consortium international en charge de l’élaboration des standards du web, a défini une API de géolocalisation que les navigateurs modernes commencent à implémenter massivement. Google a parallèlement développé sa propre solution en intégrant des fonctionnalités de géolocalisation à Google Gears, une suite logicielle enrichissant les capacités du navigateur.

Malgré ces différences technologiques, le principe fondamental reste identique dans les deux cas. Après l’autorisation explicite de l’utilisateur, le navigateur communique au serveur de localisation l’ensemble des données disponibles : adresse IP, réseaux wifi détectés, BTS, informations A-GPS, etc. Le serveur croise ces données avec ses bases de connaissances pour en déduire les coordonnées géographiques précises.

Standard W3C

L’API W3C de géolocalisation représente l’approche standardisée et recommandée pour la localisation web. Implémentée nativement par les navigateurs contemporains, elle offre une interface cohérente et sécurisée pour accéder aux données de localisation.

Google Gears

Google Gears fournit une implémentation alternative de la géolocalisation, particulièrement utile pour les navigateurs ne supportant pas encore le standard W3C. Cette approche garantit la compatibilité rétroactive et l’universalité de vos applications.

Approche multi-plateforme

Une véritable implémentation robuste doit fonctionner quel que soit l’environnement disponible sur le client. Voici comment unifier les deux technologies :

<head>
// Inclusion de la librairie javascript Google Gears
<script type="text/javascript" src="gears_init.js"></script>

// Inclusion de la librairie javascript pour l'API Google Maps avec la clé d'utilisation
<script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2&key=MaCleGoogleMaps"></script>

// Inclusion de la librairie javascript pour l'API AJAX pour Google Maps
<script type="text/javascript" src="gmap.js"></script>

// Début de la partie pour la géolocalisation
<script type="text/javascript">
// Test de la compatibilité de navigateur avec l'api google maps
if ( ! GBrowserIsCompatible() ) return false ;

// Initialisation de la variable pour connaitre la méthode de localisation utilisée
var methodo = "Pas encore localisé.";

// Fonction fournissant un outil de localisation compatible avec la plateforme où est exécuté le script
function outilGeoloc() {
        // Teste si le navigateur implémente le standard W3C
        if ( navigator.geolocation ) {
                // Si ok, on utilise le localiseur standard
                methodo = "Location API" ;
                return navigator.geolocation ;
        }

        // Sinon on teste si Google Gears est accessible
        var geogears = google.gears.factory.create('beta.geolocation') ;
        if ( geogears ) {
                methodo = "Google Gears" ;
                return geogears ;
        }

        // Ajouter un cas par défaut pour les environnements sans géolocalisation
}

// Fonction de recherche des coordonnées géographiques
function trouvePosition() {
        // Récupérer un outil de géolocalisation disponible sur la plateforme client
        var localiseur = outilGeoloc();

        // Appel à la fonction de géolocalisation, heureusement standard elle...
        localiseur.getCurrentPosition(trouve, pasTrouve);
}

// Fonction a exécuter si la position a été trouvée
function trouve(position) {
        var lat = position.coords.latitude;
        var long = position.coords.longitude;
        document.getElementById("map_lng").value = long;
        document.getElementById("map_lat").value = lat;
        document.getElementById("methodo").value = methodo;
        gmap_load('map', long, lat, 17);

        point = new GLatLng(48.838338, 2.280073);
        markerOptions = {clickable:true, draggable:false };
        marker = new GMarker(point, markerOptions);
        map.addOverlay(marker);
        marker.info_window_content ='<strong>Home</strong><p>Paris</p>'
        marker.bindInfoWindowHtml(marker.info_window_content, {maxWidth:200});
        GEvent.addListener(marker, "click", function() {
                map.panTo(point, 2);
        });
}

// Fonction a exécuter si la position n'a pas été trouvée
function pasTrouve() {
        document.getElementById("map_lng").value = '';
        document.getElementById("map_lat").value = '';
        document.getElementById("methodo").value = 'Impossible de vous localiser.';
        gmap_load('map', 2.294351, 48.858844, 17);
}

// Fonction de détection du type de navigateur web utilisé par le client
function detectBrowser() {
        var useragent = navigator.userAgent;
        var mapdiv = document.getElementById("map");

        // Si le client est un mobile, on adapte l'affichage à la taille du support
        if (useragent.indexOf('iPhone') != -1 || useragent.indexOf('Android') != -1 ) {
                mapdiv.style.width = '320px';
                mapdiv.style.height = '200px';
        } else {
                mapdiv.style.width = '600px';
                mapdiv.style.height = '400px';
        }
}

// Fonction d'initialisation de la géolocation, appelée une fois la page chargée
function initialisation() {
        trouvePosition();
        detectBrowser();
}
</script>

// Quelques meta tags pour contraindre / parametrer l'affichage sur support mobile
<meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=1;" name="viewport">
</head>

Exemple de mise en œuvre

En attendant une démonstration complète en ligne, ce code illustre l’implémentation pratique de la détection et de l’utilisation transparente des deux technologies. Le script teste d’abord la disponibilité de l’API W3C, puis bascule vers Google Gears si nécessaire, garantissant ainsi le fonctionnement sur tous les environnements.

Conclusion

La géolocalisation web s’est imposée comme une fonctionnalité essentielle des applications modernes. En maîtrisant les deux approches principales et leur intégration transparente, vous disposez des outils nécessaires pour développer des solutions robustes et universellement accessibles.

L’approche présentée ici, testant d’abord le standard W3C avant de basculer sur Google Gears, garantit la meilleure expérience utilisateur sur l’ensemble des navigateurs et des appareils. Cette stratégie de fallback progressif est la meilleure pratique actuelle pour les applications de géolocalisation web.

Pour aller plus loin...

Pour approfondir ces concepts, consultez la documentation officielle du W3C et explorez les évolutions récentes des API de géolocalisation. Les implémentations modernes tendent à abandonner Google Gears au profit du standard W3C, désormais massivement supporté. Cependant, la compréhension de ces deux approches reste précieuse pour la maintenance de codes hérités et la compréhension historique de l’évolution des technologies web.

Spip | Plan du site | Mentions légales | RSS 2.0 |
© 2001-2025 Guillaume Orsal EI