Androïd et les distances
Résolu/Fermé
Sicey
Messages postés
57
Date d'inscription
mardi 18 mai 2010
Statut
Membre
Dernière intervention
4 décembre 2012
-
3 déc. 2012 à 18:48
Sicey Messages postés 57 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 4 décembre 2012 - 4 déc. 2012 à 09:42
Sicey Messages postés 57 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 4 décembre 2012 - 4 déc. 2012 à 09:42
A voir également:
- Androïd et les distances
- Android - Guide
- Android recovery - Guide
- Jouer a pokemon sur android - Guide
- Voir mot de passe wifi android - Guide
- Begone android - Accueil - Protection
1 réponse
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
Modifié par KX le 3/12/2012 à 19:51
Modifié par KX le 3/12/2012 à 19:51
Je ne comprends pas tes divisions par 1e6, tu essayes de convertir des kilomètres en mètres ? Les latitudes et les longitudes doivent être données en degrés, c'est du moins ce qu'indique la documentation pour setLongitude(double) et setLatitude(double).
Pour cela tu as une méthode de conversion : Location.convert(String).
Remarque : il serait également bon de ne pas oublier l'altitude (en mètres), même si je n'ai pas l'impression qu'elle rentre en compte dans le calcul de distance.
Remarque : tu peux aussi te servir de la méthode statique Location.distanceBetween(double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results)
Pour cela tu as une méthode de conversion : Location.convert(String).
Remarque : il serait également bon de ne pas oublier l'altitude (en mètres), même si je n'ai pas l'impression qu'elle rentre en compte dans le calcul de distance.
// Location de l'utilisateur (D : degrés, M:minutes, S:secondes) utilisateur.setLongitude(Location.convert("DDD:MM:SS.SSSSS")); utilisateur.setLatitude(Location.convert("[+-]DDD:MM.MMMMM")); utilisateur.setAltitude(altitude_en_mètres); d.setLongitude(Location.convert("[+-]DDD.DDDDD")); d.setLatitude(latitude_en_degrés); // directement un double (risqué !) d.setAltitude(altitude_en_mètres); float distance = utilisateur.distanceTo(d); // résultat en mètres
Remarque : tu peux aussi te servir de la méthode statique Location.distanceBetween(double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results)
float[] results; Location.distanceBetween(Location.convert(...),Location.convert(...),Location.convert(...),Location.convert(...),results); float distance = results[0];La confiance n'exclut pas le contrôle
3 déc. 2012 à 20:11
3 déc. 2012 à 20:17
4 déc. 2012 à 09:00
J'ai testé ta solution mais ça n'a pas résolu mon problème. Je ne peux pas utiliser convert("[+-]DDD:MM.MMMMM") sur une variable de type double, et eclipse ne veut pas caster ici.
Mes valeurs sont toujours aussi farfelues, du genre 5 millions de mètres au lieu d'environ 2km ^^'
4 déc. 2012 à 09:42
En fait mon erreur venait d'éclipse : je dois lancer mon application, envoyer les coordonnées via l'émulator control, fermer l'application, puis la relancer, et là j'ai les bonnes valeurs ! Si je lance directement, la carte se centre sur la dernière place visiter, mais sans avoir de "vraies" coordonnées pour le GPS.
Merci de ton aide en tout cas ! Effectivement il ne fallait pas utiliser /1e6 !! J'ai juste divisé le résultat pour passer de mètres en kilomètres! Thanks !