distanceEntre () renvoie un résultat inexact?

- Je utiliser distanceBetween() de l'Emplacement de la classe pour calculer la distance entre deux points comme suit:

private float getDistanceInMiles(GeoPoint p1, GeoPoint p2) {

    double lat1 = ((double)p1.getLatitudeE6()) / 1e6;
    double lng1 = ((double)p1.getLongitudeE6()) / 1e6;
    double lat2 = ((double)p2.getLatitudeE6()) / 1e6;
    double lng2 = ((double)p2.getLongitudeE6()) / 1e6;
    float [] dist = new float[1];
    Log.i("destination coordinates", "Latitude:" + lat2 + ", Longitude: " + lng2);
        Location.distanceBetween(lat1, lng1, lat2, lng2, dist);

    return dist[0] * 0.000621371192f;
}

La Documentation dit que distanceBetween() "Calcule la distance approximative en mètres entre les deux endroits, et éventuellement la formation initiale et finale des roulements du plus court chemin entre eux." Cependant, la différence entre le résultat retourné par distanceBetween() et le dispositif de GPS ou Google application de Navigation est assez grand. Par exemple, pour ma méthode sera de retour 6.2 km alors que google maps montre de 10 km pour le même emplacement. Je double-vérifier les coordonnées du point de départ p1 et le point de fin de la p2 et ils semble être correct. Est-ce que les distanceBetween() méthode fonctionne ou bien Suis-je en train de faire quelque chose de mal? Et par la façon dont Est-il un moyen d'utiliser la Place Google API pour récupérer un à distance comme une réponse JSON?

Distance calculée par Google Maps: 6.1 km

distanceEntre () renvoie un résultat inexact?

Et le résultat de

Location.distanceBetween(41.742964, -87.995971, 41.811511, -87.967923, dist) is 

4.947700

source d'informationauteur Marcin S.