Comment répondre aux mises à jour de localisation (HTML)

Applies to Windows and Windows Phone

Cette rubrique explique comment répondre aux changements d’emplacement géographique de l’utilisateur.

Ce que vous devez savoir

Technologies

  • Windows Runtime

Prérequis

Vous devez être familiarisé avec HTML et JavaScript.

Instructions

Étape 1: Vérifier que la localisation est activée

Assurez-vous que l’appareil a accès à votre localisation. Pour trouver ce paramètre sur Windows, accédez à l’icône Paramètres, sélectionnez Modifier les paramètres du PC, puis Confidentialité, puis Emplacement. Sur Windows Phone, accédez à Paramètres, sélectionnez localisation et activez les Services de localisation.

Étape 2: Ouvrir Microsoft Visual Studio

Créez un projet, en choisissant une Application vide dans les types de projet Applications du Windows Store/JavaScript .

Étape 3: Créer un projet

Dans la boîte de dialogue Nouveau projet, choisissez une application vide dans les types de projets JavaScript.

Étape 4: Déclarer la fonctionnalité de localisation

Double-cliquez sur package.appxmanifest dans l’Explorateur de solutions pour les projets Windows et Windows Phone. Sélectionnez l’onglet Capacités. Activez Emplacement dans la liste Capacités.

Étape 5: Remplacer le code JavaScript

Dans le projet partagé, ouvrez default.js (/js/default.js). Remplacez le code contenu dans le fichier par ce qui suit.




(function () {
    "use strict";

    var app = WinJS.Application;
    var activation = Windows.ApplicationModel.Activation;

    app.onactivated = function (args) {
        if (args.detail.kind === activation.ActivationKind.launch) {

            args.setPromise(WinJS.UI.processAll().
                done(function () {

                    // Add an event handler to the button.
                    document.querySelector("#startTracking").addEventListener("click",
                        trackloc);

                    // Add an event handler to the button.
                    document.querySelector("#stopTracking").addEventListener("click",
                        stoptracking);

                }));
        }
    };

    var loc = null;

    function trackloc() {
        if (loc == null) {
            loc = new Windows.Devices.Geolocation.Geolocator();
        }
        if (loc != null) {
            loc.addEventListener("positionchanged", onPositionChanged);
            loc.addEventListener("statuschanged", onStatusChanged);
            // display initial status, in case location is turned off.
            document.getElementById('geolocatorStatus').innerHTML =
                getStatusString(loc.locationStatus);
        }
    }

    function stoptracking() {
        if (loc != null) {
            loc.removeEventListener("positionchanged", onPositionChanged);
        }
    }

    function onPositionChanged(args) {
        var pos = args.position;
        document.getElementById('latitude').innerHTML =
            pos.coordinate.point.position.latitude;
        document.getElementById('longitude').innerHTML =
            pos.coordinate.point.position.longitude;
        document.getElementById('accuracy').innerHTML =
            pos.coordinate.accuracy;
        document.getElementById('geolocatorStatus').innerHTML =
                getStatusString(loc.locationStatus);
    }

    // Handle change in status to display an appropriate message.        
    function onStatusChanged(args) {
        var newStatus = args.status;
        document.getElementById('geolocatorStatus').innerHTML =
            getStatusString(newStatus);
    }

    function getStatusString(locStatus) {
        switch (locStatus) {
            case Windows.Devices.Geolocation.PositionStatus.ready:
                // Location data is available
                return "Location is available.";
                break;
            case Windows.Devices.Geolocation.PositionStatus.initializing:
                // This status indicates that a GPS is still acquiring a fix
                return "A GPS device is still initializing.";
                break;
            case Windows.Devices.Geolocation.PositionStatus.noData:
                // No location data is currently available
                return "Data from location services is currently unavailable.";
                break;
            case Windows.Devices.Geolocation.PositionStatus.disabled:
                // The app doesn't have permission to access location,
                // either because location has been turned off.
                return "Your location is currently turned off. " +
                    "Change your settings through the Settings charm " +
                    " to turn it back on.";
                break;
            case Windows.Devices.Geolocation.PositionStatus.notInitialized:
                // This status indicates that the app has not yet requested
                // location data by calling GetGeolocationAsync() or
                // registering an event handler for the positionChanged event.
                return "Location status is not initialized because " +
                    "the app has not requested location data.";
            case Windows.Devices.Geolocation.PositionStatus.notAvailable:
                // Location is not available on this version of Windows
                return "You do not have the required location services " +
                    "present on your system.";
                break;
            default:
                return "Unknown status.";
        }
    }

    app.start();
})();



Étape 6: Ajouter le code HTML pour les applications

Ouvrez le fichier default.html des projets Windows et Windows Phone, puis copiez le code HTML suivant entre les balises BODY du fichier.


    <p>Geolocation Event Sample</p><br />
    <span id="status"></span><br />
    <button id="startTracking">Track Location</button><br />
    <br />
    <button id="stopTracking">Stop Tracking</button><br />
    Latitude: <span id="latitude">Waiting for update...</span><br />
    Longitude:  <span id="longitude">Waiting for update...</span><br />
    Accuracy (in meters): <span id="accuracy">Waiting for update...</span><br />
    Location Status: <span id="geolocatorStatus"></span><br />


Étape 7: Générer l’application

Sélectionnez Générer > Générer la solution pour générer le projet.

Étape 8: Tester l’application

  1. Dans le menu Déboguer, cliquez sur Démarrer le débogage pour tester la solution.
  2. Sur Windows, la première fois que vous exécutez l’exemple, une invite vous demande si l’application peut utiliser votre localisation. Choisissez l’option Autoriser.
  3. Cliquez sur le bouton Obtenir la localisation pour obtenir la localisation actuelle.

Remarque  Si les données de localisation ne s’affichent pas, vérifiez ce qui suit :

  • Assurez-vous d’avoir autorisé l’accès à la géolocalisation en ouvrant package.appxmanifest dans l’Explorateur de solutions et en activant Emplacement sous l’onglet Capacités.
  • Sur Windows, si un administrateur a désactivé les services de localisation, votre application ne sera pas en mesure d’accéder à la géolocalisation de l’utilisateur. Dans le Panneau de configuration du Bureau, ouvrez Modifier les paramètres de localisation et vérifiez que l’option Activer la plateforme de localisation Windows est activée.
  • Sur Windows Phone, l’utilisateur peut désactiver la localisation dans l’application Paramètres. Accédez à l’application Paramètres, sélectionnez localisation et vérifiez que le bouton bascule Services de localisation est activé.

Remarques

Sur Windows, il est recommandé de tester les mises à jour de localisation à l’aide d’un ordinateur Wi-Fi, car le Service de localisation Windows utilise la triangulation Wi-Fi pour résoudre les localisations. Lorsque la localisation est résolue, les événements qui indiquent que des mises à jour ont eu lieu sont déclenchés. Si vous utilisez un ordinateur sur lequel le Wi-Fi n’est pas activé, la localisation est basée sur l’adresse IP, et vous risquez de ne pas obtenir d’événements de mise à jour de localisation.

Si votre application n’a besoin de données de géolocalisation qu’une seule fois, plutôt que de vous abonner aux mises à jour, utilisez la méthode GetGeopositionAsync décrite dans Démarrage rapide : détection de l’emplacement géographique d’un utilisateur à l’aide de l’API de géolocalisation Windows Runtime.

Exemple complet

Rubriques associées

Exemple de géolocalisation
Windows.Devices.Geolocation

 

 

Afficher:
© 2014 Microsoft