PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → Afficher des positions GPS proche de ma position actuelle depuis une BDD
Afficher des positions GPS proche de ma position actuelle depuis une BDD
Débuté par FALHI YOUSRI, 12 oct. 2017 12:01 - 1 réponse
Posté le 12 octobre 2017 - 12:01
Bonjour tous le monde,

Voila j'aimerai afficher des positions GPS qui existent dans une BDD mais seulement qui sont dans un rayon de 500 m a partir de la position mon téléphone.

j'ai essayer (Géodistance) mais avec cette méthode on doit parcourir toute la base pour calculer la distance donc ça prend beaucoup de temps .

j'essaye d'utilisé une requête SQL que ça marche chez les gens dans les forums et dans plusieurs langages de développement et aussi sur les bases de données.

ma requête la voici :
SELECT
Client.Atitude AS Atit,
Client.Longitude AS Long,
Client.Code_client AS Code_client,
Client.Nature_client AS NATURE,
Client.Ville AS Ville,
6367445 * ACOS( ( ( SIN( RADIANS( 33.6628465 ) ) * SIN( RADIANS( Client.Atitude ) ) ) + ( ( COS( RADIANS( 33.6628465 ) ) * COS( RADIANS( Client.Atitude ) ) ) * COS( ( RADIANS( -7.4081600 ) - RADIANS( Client.Longitude ) ) ) ) ) ) AS Distance
FROM
Client

WHERE Distance <= 500


-----

33.6628465 = Latitude de ma position actuelle
-7.4081600 = Longitude de ma position actuelle
500 = c'est la tolérance ou bien la distance sur lequel je doit filtrer les autres positions.

------

- sur la base HFSQL la requête marche très bien ;)

https://hostimage.windev.io/images/hfsql_5829ef7cea9e141437b4fcbd682fe27b.bmp

- sur le simulateur la requête marche aussi très bien :)





- Mais sur mon téléphone mobile ça ne me donne pas de résultat ;(







Bloqué pendant plusieurs jours je retourne vers les experts pour trouvé une solution

Merci d'avance :(
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 13 octobre 2017 - 11:30
Bonjour,

C'est probablement la partie calcul exécutée sur le mobile qui renvoie un résultat différent.

Ce que je ferais :
- je tracerais le résultat de la partie calcul en GO puis sur le terminal pour m'assurer que c'est bien le problème
- Puis je sortirais la partie calcul de la requête pour la calculer dans une procédure connexe (pour être sûr d'avoir les bonnes données, puis de les transmettre à la requête via des variables)
- Si toutefois les calculs ne sont encore pas corrects même dans une procédure à part, alors faire les calculs dans un web service

Bon dev,
Eric.

--
Eric DELATTRE
http://www.yoosite.fr