ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage functions / Standard functions / Geolocation functions
  • Gestion des blocages
  • Propriétés récupérées
  • 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
Récupère les informations sur la position actuelle du périphérique.
Universal Windows 10 App La fonction GPSRécupèrePosition doit être exécutée dans un thread.
Exemple
MaPosition est une géoPosition
MaPosition = GPSRécupèrePosition()
// Vérifie validité de la position avec ErreurDétectée
SI ErreurDétectée ALORS RETOUR
Info(" Latitude : " + MaPosition.Latitude) 
Info(" Longitude : " + MaPosition.Longitude)
WEBDEV - Code Navigateur
// Géolocalisation depuis WEBDEV, une procédure navigateur est appelée.
// Traitement réalisé depuis un bouton ayant comme action "aucune"
GPSRécupèrePosition(ProcNavigateur, 200)
// Procédure navigateur "ProcNavigateur"
PROCÉDURE ProcNavigateur(MaPosition est un géoPosition, nMonErreur est un entier)
 
SELON nMonErreur
 
CAS gpsErreurOK
// Aucune erreur n'a été détectée
PAGE_Page1.SAI_SansNom1 = MaPosition.Altitude + " " + ...
MaPosition.Longitude
CAS gpsErreurDroit
PAGE_Page1.SAI_SansNom1 = ...
"Le navigateur n'a pas les droits " + ...
"pour utiliser la géolocalisation (ou site non HTTPS)."
CAS gpsErreurPosition
PAGE_Page1.SAI_SansNom1 = "Impossible de déterminer la position " + ...
"(erreur interne du fournisseur d'accès par exemple)."
CAS gpsErreurTimeout
PAGE_Page1.SAI_SansNom1 = ...
"La position n'a pas pu être récupérée " + ...
"dans le temps imparti."
AUTRE CAS
PAGE_Page1.SAI_SansNom1 = "Erreur indéterminée"
FIN
Syntaxe
WINDEVUniversal Windows 10 AppAndroidWidget AndroidiPhone/iPadWidget IOSMac Catalyst

Récupération des informations sur un périphérique (mobile, ...) Masquer les détails

<Résultat> = GPSRécupèrePosition([<Timeout> [, <Message>]])
<Résultat> : Variable de type géoPosition
Variable de type géoPosition contenant les informations sur la position du périphérique. Si la position est invalide, la variable ErreurDétectée vaut Vrai et le détail de l'erreur peut être obtenu avec la fonction ErreurInfo.
Android La propriété PositionValide du type géoPosition permet de savoir si la position est valide.
<Timeout> : Entier optionnel ou Durée optionnelle
Délai maximal (en centièmes de seconde) d'attente pour la mise à jour de la position du périphérique.
  • Si ce délai est écoulé avant que la position du périphérique n'ait été mise à jour, une erreur se produit. Cette erreur peut être détectée grâce à la variable ErreurDétectée et le détail de l'erreur peut être obtenu avec la fonction ErreurInfo.
  • Si ce paramètre n'est pas spécifié, le délai est de 1 minute.
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).
<Message> : Chaîne de caractères optionnelle
Message du sablier affiché pendant la mise à jour de la position.
Remarque : Ce paramètre est pris en compte uniquement si l'appel est effectué dans le thread principal de l'application.
WINDEVUniversal Windows 10 App Ce paramètre n'est pas pris en compte.
WEBDEV - Code Navigateur

Récupération des informations en code Navigateur Masquer les détails

GPSRécupèrePosition([<Procédure WLangage> [, <Timeout>]])
<Procédure WLangage> : Nom de procédure
Nom de la procédure WLangage en code navigateur (également nommée "callback") appelée lorsque la position est récupérée.
Cette procédure est de la forme :
PROCEDURE <Nom de la Procédure>(<Position>,<Erreur>)
où :
  • <Erreur> est une constante de type Entier correspondant au code d'erreur et pouvant prendre les valeurs suivantes :
    gpsErreurDroit
    • Le navigateur n'a pas les droits pour utiliser la géolocalisation.
    • Le navigateur est récent et le site n'utilise pas le protocole sécurisé HTTPS.
    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.
<Timeout> : Entier optionnel ou Durée optionnelle
Délai maximal (en centièmes de seconde) d'attente pour la mise à jour de la position du périphérique.
  • Si ce délai est écoulé avant que la position du périphérique n'ait été mise à jour, l'erreur gpsErreurTimeOut est renvoyée dans le paramètre <Erreur> de la procédure WLangage.
  • Si ce paramètre n'est pas spécifié, le délai est de 1 minute.
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).
Remarques

Gestion des blocages

La fonction GPSRécupèrePosition est bloquante jusqu'à ce que la position actuelle de l'appareil ait pu être déterminée ou que le délai d'attente fixé par le paramètre <Timeout> ait expiré.
Si la fonction est appelée dans le thread principal de l'application, un sablier sera affiché durant l'exécution de la fonction. Le message affiché par le sablier peut être spécifié grâce au paramètre <Message>.
Dans le cas contraire, l'exécution du thread secondaire sera bloquée durant l'exécution de la fonction et aucun sablier ne sera affiché.
WEBDEV - Code Navigateur Cette fonction n'est pas bloquante.
Remarque : Pour connaître la dernière position connue de l'appareil sans délai d'attente, utilisez la fonction GPSDernièrePosition. Attention, les informations de positionnement récupérées peuvent 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 de type géoPosition.
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 Android Le fournisseur de localisation peut être paramétré grâce à la fonction GPSInitParamètre.
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.
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 GPSRécupèrePosition 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.
Classification Métier / UI : Code métier
Composante : wd290java.dll
Minimum version required
  • Version 15
Comments
Exemplo
https://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/3701-trabalhando-com-gps/read.awp
Boller
13 Mar. 2021
Video GpsGetPosition
https://youtu.be/4MqAx_qiFts

https://windevdesenvolvimento.blogspot.com/2019/01/dicas-1987-windev-mobile-dicas-14.html
amarildo
16 Jan. 2019
GPS Functions
https://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/519-busca-endereco-rota-endereco-das-coordendas-523/read.awp?hl=enderecodascoordenadas

https://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/2875-informatica-exemplo-google-maps-com-json-retornando-distancia/read.awp?lastview
BOLLER
10 Nov. 2018
Video Trajeto Mapa
https://youtu.be/bSk0ysOlacE
amarildo
03 Nov. 2018

Last update: 05/25/2022

Send a report | Local help