IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Android Discussion :

Distance entre deux positions GPS/NETWORK


Sujet :

API standards et tierces Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Etudiant du Genie Logiciel
    Inscrit en
    Juillet 2011
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant du Genie Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 397
    Par défaut Distance entre deux positions GPS/NETWORK
    salut a tous les développeurs . j'aimerai calculer la distance entre deux positions gps/network en utilisant "distanceBetween". mais je ne sais trop comment m'y prendre . je récupère les coordonnées comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
    @Override
         public void onLocationChanged(Location position)
         {
     
            try{
     
     
     
            setLatitude(position.getLatitude());
     
            setLongitude(position.getLongitude());
     
            setAltitude(position.getAltitude()) ;
     
            setPrecision(position.getAccuracy()) ;
     
            setVitesse(position.getSpeed());
     
            setFournisseur(position.getProvider());
     
            setDirection(position.getBearing()) ;
     
            //setSat(location.getExtras());
          setDate(java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime()));
     
    String msg = String.format(getResources().getString(R.string.new_location), getLatitude() , getLongitude() , getAltitude() , getPrecision() , getVitesse() , getDate() , getFournisseur() , getDirection());
     
     
    Toast.makeText(Receive.this, msg, Toast.LENGTH_LONG).show();
     
     
            }catch (Exception e) {
                // TODO: handle exception
                e.getCause() ;
            }
     
         }
     
         };
    s'il vous plait , comment calculer la distance entre deux points en récupérant les coordonnées ainsi ? je tiens a signaler que toutes ces coordonnées sont stockées dans une de donnée SQLITE

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Je suppose que tu fait référence à l'API Android :
    http://developer.android.com/referen.../Location.html

    Il est probable que les deux méthodes suivantes fonctionnent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    import android.location.Location;
    //...
    Location locationA = new Location("point A");
     
    locationA.setLatitude(latA);
    locationA.setLongitude(lngA);
     
    Location locationB = new Location("point B");
     
    locationB.setLatitude(latB);
    locationB.setLongitude(lngB);
     
    float distance = locationA.distanceTo(locationB);
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    private double gps2m(float lat_a, float lng_a, float lat_b, float lng_b) {
        float pk = (float) (180/3.14169);
     
        float a1 = lat_a / pk;
        float a2 = lng_a / pk;
        float b1 = lat_b / pk;
        float b2 = lng_b / pk;
     
        float t1 = FloatMath.cos(a1)*FloatMath.cos(a2)*FloatMath.cos(b1)*FloatMath.cos(b2);
        float t2 = FloatMath.cos(a1)*FloatMath.sin(a2)*FloatMath.cos(b1)*FloatMath.sin(b2);
        float t3 = FloatMath.sin(a1)*FloatMath.sin(b1);
        double tt = Math.acos(t1 + t2 + t3);
     
        return 6366000*tt;
    }
    Source : http://stackoverflow.com/questions/8...phic-locations

    Tu devrais ajouter tes import sur tes exemples de code. Cela permet d'avoir du code exécutable et de connaitre API utilisé.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur Informatique et Développeur Android
    Inscrit en
    Janvier 2010
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique et Développeur Android

    Informations forums :
    Inscription : Janvier 2010
    Messages : 384
    Par défaut
    Bonjour,
    je ne sais pas mais peut être la project de Mircator peuvent vous aider http://fr.wikipedia.org/wiki/Projection_de_Mercator

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Sauf qu'on n'utilise pas Mercator en France, et encore moins pour les GPS....

    Déjà la latitude/longitude/altitude suffit du moment que l'on connait l'ellipsoïde de référence (et il y en a tellement déjà que...).

    Sinon, regarder les sources officiels:
    http://grepcode.com/file/repository..../Location.java

    Chercher la fonction "computeDistanceAndBearing"

  5. #5
    Membre très actif
    Homme Profil pro
    Ingénieur Informatique et Développeur Android
    Inscrit en
    Janvier 2010
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique et Développeur Android

    Informations forums :
    Inscription : Janvier 2010
    Messages : 384
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Sauf qu'on n'utilise pas Mercator en France, et encore moins pour les GPS....

    Déjà la latitude/longitude/altitude suffit du moment que l'on connait l'ellipsoïde de référence (et il y en a tellement déjà que...).

    Sinon, regarder les sources officiels:
    http://grepcode.com/file/repository..../Location.java

    Chercher la fonction "computeDistanceAndBearing"
    Personnellement, j'ai utilisé cette méthode dans des anciens applications android. J'était besoin de distance entre ville à base de lal/long en cas offline et non en ligne.. c 'est pour c'était utilise que je l'utilise....

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Oui mais la projection de mercator est de plus en plus fausse en s'éloignant de l'équateur (ce qui est "fortement" le cas pour l'europe en général). L'erreur est même asymptotique puisque infinie aux pôles.

    De toute manière, par définition toute projection est fausse.. (même une Lambert II étendue comme c'est la règle en France)... et passer par une projection donnera obligatoirement des résultats erronés.

    D'autant que la fonction a partir de deux latitudes/longitudes sur un ellipsoide donné existe. Il "suffit" de choisir le bon ellipsoïde pour la représentation de la terre.

    La fonction que j'ai donné est l'une des fonctions possibles... c'est en tout cas celle utilisée paa google.
    Elle est public, static et ne fait aucun appel réseau, donc autant l'utiliser non ?

    Voici une version générique:
    http://www.movable-type.co.uk/script...-vincenty.html

Discussions similaires

  1. Calcul distance entre deux coordonnées GPS
    Par hamdouch89 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 03/05/2012, 15h14
  2. [WD15] Calcul de la distance et de l'azimut entre 2 positions Gps
    Par dakota77 dans le forum WinDev
    Réponses: 2
    Dernier message: 01/11/2010, 15h47
  3. calcul distance entre deux villes
    Par alexfrei04 dans le forum Access
    Réponses: 2
    Dernier message: 08/01/2007, 21h49
  4. [Base de données Spatial] Distance entre deux points
    Par Pumpkins dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/11/2006, 12h18
  5. Calcul de distance entre deux points en WGS84
    Par marieR dans le forum Langage
    Réponses: 5
    Dernier message: 03/08/2006, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo