DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de géolocalisation
  • Propriétés récupérées
  • Notes
  • Fonctionnement sous iPhone/iPad
  • Permissions requises
  • Fonctionnalité d'application requise
  • Navigateurs autorisant la géolocalisation
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Demande à être notifié périodiquement de la position courante du périphérique.
Exemple
// Branche une procédure pour recevoir régulièrement la position du périphérique
GPSSuitDéplacement(ProcDeplacement)
// Procédure
PROCÉDURE ProcDeplacement(pos est une géoPosition)
 
Info(" Latitude : " + pos.Latitude)  
Info(" Longitude : " + pos.Longitude)
Syntaxe
Universal Windows 10 AppAndroidWidget AndroidiPhone/iPadWidget IOSMac Catalyst

Activer le mécanisme de notification (sous un mobile) Masquer les détails

GPSSuitDéplacement(<Procédure WLangage> [, <Délai> [, <Distance>]])
<Procédure WLangage> : Nom de procédure
Nom de la procédure WLangage appelée à chaque notification.
Cette procédure est de la forme :
PROCEDURE <Nom de la Procédure>(<Position>)
Le paramètre <Position> est une variable de type géoPosition contenant les informations sur la position de l'appareil au moment de la notification.
<Délai> : Entier optionnel ou Durée optionnelle
Délai minimal (en centièmes de seconde) entre deux notifications. Si ce paramètre n'est pas spécifié, le délai minimal sera de 60 secondes.
Remarque : Ce paramètre peut correspondre à :
  • un entier correspondant au nombre de centièmes de seconde,
  • une variable de type Durée,
  • l'indication directe de la durée (par exemple 1 s ou 10 ms).
Universal Windows 10 App Ce paramètre n'est pas pris en compte.
<Distance> : Réel optionnel
Distance minimale (en mètres) entre deux notifications.
Si ce paramètre n'est pas spécifié, la distance minimale sera de 5 mètres.
WEBDEV - Code Navigateur

Activer le mécanisme de notification en code Navigateur Masquer les détails

GPSSuitDéplacement(<Procédure WLangage>)
<Procédure WLangage> : Nom de procédure
Nom de la procédure WLangage appelée à chaque notification. Cette procédure est de la forme :
PROCEDURE <Nom de la Procédure>(<Position>, <Erreur>)
où :
  • Le paramètre <Position> est une variable de type géoPosition contenant les informations sur la position de l'appareil au moment de la notification. Pour savoir si les propriétés Vitesse, Précision, Direction ou Altitude d'une variable de type géoPosition ont été renseignées lors de la récupération de la position, utilisez les propriétés VitesseValide, PrécisionValide, DirectionValide et AltitudeValide.
  • <Erreur> est une constante de type Entier correspondant au code d'erreur et pouvant prendre les valeurs suivantes :
    gpsErreurDroitLe navigateur n'a pas les droits pour utiliser la géolocalisation.
    gpsErreurOKAucune erreur n'a été détectée.
    gpsErreurPositionImpossible de déterminer la position (erreur interne du fournisseur d'accès par exemple).
    gpsErreurTimeoutLa position n'a pas pu être récupérée dans le temps imparti.

Désactiver le mécanisme de notification

GPSSuitDéplacement()
Remarques
Universal Windows 10 AppAndroidWidget AndroidiPhone/iPadWidget IOSMac Catalyst

Propriétés récupérées

  • Pour savoir si les propriétés Vitesse, Précision, Direction ou Altitude d'une variable de type géoPosition ont été renseignées lors de la récupération de la position, utilisez les propriétés VitesseValide, PrécisionValide, DirectionValide et AltitudeValide.
  • Pour réinitialiser une variable de type géoPosition, utilisez la fonction VariableRAZ.
  • AndroidWidget AndroidiPhone/iPadWidget IOSMac Catalyst Il est conseillé d'initialiser les paramètres du fournisseur de localisation à l'aide de la fonction GPSInitParamètre avant de récupérer une position.
  • Les informations de positionnement récupérées correspondent à la dernière position connue du périphérique : elles peuvent donc ne pas correspondre à la position actuelle du périphérique si par exemple le périphérique a été déplacé alors que le signal GPS n'était pas valide. Il est possible de connaître la date et l'heure à laquelle la position a été calculée grâce à la propriété DateMesure de la variable géoPosition.
  • Les propriétés Vitesse, Précision, Direction et Altitude seront renseignées uniquement si le fournisseur de localisation le permet (dans le cas contraire, elles prendront leur valeur par défaut).
    AndroidWidget AndroidiPhone/iPadWidget IOSMac Catalyst Le fournisseur de localisation peut être paramétré grâce à la fonction GPSInitParamètre.
Universal Windows 10 AppAndroidWidget AndroidiPhone/iPadWidget IOSMac Catalyst

Notes

  • Les fonctions de géolocalisation peuvent consommer beaucoup de ressources sur le périphérique (batterie, bande passante, etc.). Il est conseillé de ne pas fixer de valeurs trop petites pour les paramètres de délai et de distance minimale entre deux notifications.
  • AndroidiPhone/iPadWidget IOSMac Catalyst Il est possible de réaliser un suivi de géolocalisation en arrière-plan sans consommer de ressources via les fonctions géoSuiviActive, géoSuiviDésactive, géoSuiviEtat et géoSuiviProcédure. Pour plus de détails, consultez Suivi de localisation.
  • iPhone/iPadWidget IOSMac Catalyst Lors de la génération de l'application, il est possible d'autoriser l'appel à la fonction GPSSuitDéplacement quand l'application est en arrière-plan (option "Autoriser les fonctions GPSSuitDéplacement et BeaconDétectePrécis à être appelées quand l'application est en arrière-plan" dans l'étape "Configuration" de l'assistant). Dans ce cas, la géolocalisation se poursuivra lorsque l'application sera en arrière-plan ou lorsque l'appareil sera en veille. Pour plus de détails, consultez Générer une application iOS.
  • Pour ne plus recevoir de notifications, appelez la fonction GPSSuitDéplacement sans paramètre ou appelez la fonction GPSTermine.
iPhone/iPadWidget IOSMac Catalyst

Fonctionnement sous iPhone/iPad

Au premier lancement d'une fonction GPS, le système demande à l'utilisateur l'autorisation d'effectuer une géolocalisation. En cas de refus de l'utilisateur, toutes les fonctions GPS utilisées dans la suite de l'application échoueront (erreur fatale).
Pour ré-autoriser l'utilisation du GPS pour cette application, il est nécessaire de modifier la configuration système de l'application.
AndroidWidget Android

Permissions requises

L'utilisation de cette fonction entraîne la modification des permissions requises par l'application.
Permission requise : ACCESS_FINE_LOCATION.
Spécificité Android 11 : L'utilisation de cette fonction nécessite la mise en place de la permission ACCESS_BACKGROUND_LOCATION permettant la localisation de l'appareil.
Cette permission permet d'autoriser l'utilisation de la fonction lorsque l'application est en arrière-plan.
Si l'application nécessite la localisation en arrière-plan, il faut :
  • Ajouter manuellement la permission "ACCESS_BACKGROUND_LOCATION" dans l'assistant de génération de l'application Android.
  • Demander explicitement la permission de localisation en arrière-plan à l'utilisateur avec la fonction PermissionDemande. Par exemple :
    PermissionDemande(permLocalisationEnArrièrePlan, Callback)
    PROCÉDURE INTERNE Callback(p est une Permission)
    SI p.Accordé ALORS
    // Utilisation possible des fonctions nécessitant la localisation en arrière-plan
    FIN
    FIN
Une fenêtre permet à l'utilisateur de :
  • accepter l'accès à la position de l'appareil avec l'application en arrière-plan,
  • limiter l'accès à la position à l'application active,
  • refuser l'accès à la position.
L'utilisateur peut également modifier son autorisation à posteriori dans les réglages de Android.
Remarques :
  • Respectez les spécifications Google concernant les applications utilisant la localisation en arrière-plan. Pour plus de détails, consultez https://support.google.com/googleplay/android-developer/answer/9799150. Si ces conditions ne sont pas remplies (notamment les conditions d'information de l'utilisateur), les applications pourront ne pas obtenir l'autorisation de publication sur Play Store.
  • La demande de permission de localisation en arrière-plan ne doit être effectuée que si la permission de localisation a été accordée. Dans le cas contraire, la fonction PermissionDemande échouera.
  • Si le choix de l'utilisateur lors de la demande de permission de localisation en arrière-plan est plus restrictif que le choix effectué lors de la demande de permission de localisation, l'application sera automatiquement relancée.
  • Sur les appareils en version inférieure à Android 10, si la permission de localisation a été accordée à l'application, la demande de permission de localisation en arrière-plan sera accordée sans affichage de fenêtre.
Universal Windows 10 App

Fonctionnalité d'application requise

L'utilisation de cette fonction entraîne la déclaration d'une fonctionnalité d'application dans l'assistant de génération de l'application.
Fonctionnalité requise : Géolocalisation
Cette fonctionnalité permet aux applications d'accéder aux données de géolocalisation de l'appareil ou de l'ordinateur.
Attention : Spécificité Android 12 : Pour que la procédure appelée par la fonction GPSSuitDéplacement soit exécutée lorsque l'application est en arrière-plan, il est nécessaire de lancer un thread persistant (fonction ThreadPersistant).
WEBDEV - Code Navigateur

Navigateurs autorisant la géolocalisation

Attention : La géolocalisation n'est disponible que sur certains navigateurs récents :
  • FireFox à partir de la version 3.5,
  • Chrome à partir de la version 5.0.342.1,
  • Opéra à partir de la version 10.6,
  • Safari à partir de la version 5.0.
Lors de l'appel à une fonction de géolocalisation, le navigateur demande l'autorisation de localiser.Remarque : A partir de Chrome 50 (y compris sur Android), la fonction GPSSuitDéplacement ne peut être utilisée que sur des sites sécurisés (via un certificat SSL par exemple). Si le site n'est pas sécurisé, la fonction ne renvoie pas un résultat exploitable. Lors de test en local (localhost), la fonction fonctionne correctement.
Liste des exemples associés :
Android GPS Android (WINDEV Mobile) : Android GPS
[ + ] Cet exemple montre l'utilisation des fonctions GPS du WLangage dans une application Android.
Il permet de récupérer à intervalle régulier :
- La latitude
- La longitude
- L'altitude
- La vitesse
- la direction
WM Sports Exemples multiplateforme (WINDEV Mobile) : WM Sports
[ + ] Cet exemple est une application de sport vous permettant d'enregistrer vos performances.
L'application calcule la distance parcourue, le temps, la vitesse moyenne et le nombre de calories dépensées en fonction du sport pratiqué.
Le parcours réalisé est affiché sur un champ carte grâce à des marqueurs et un tracé d'itinéraire.
Si vous disposez d'une montre Apple Watch, vous pourrez piloter WM Sports avec votre montre !

L'exemple dispose aussi d'une partie serveur qui sert à la synchronisation des données des utilisateurs.
Ce webservice est disponible dans l'exemple WEBDEV "WW_Sports".
Composante : wd290java.dll
Version minimum requise
  • Version 15
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 30/11/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale