两点之间的GPS距离

Gps distance between two points

我正在开发一个 Meter 应用程序(在 android 中)。我正在通过公式计算两点之间的距离(在背景中)

double calculateDistancs(double lat1, double long1, double lat2,
        double long2) {
    double earthRadius = 6371000; // meters

    double dLat = Math.toRadians(lat2 - lat1);
    double dLng = Math.toRadians(long2 - long1);
    double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
            + Math.cos(Math.toRadians(lat1))
            * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng / 2)
            * Math.sin(dLng / 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    float dist = (float) (earthRadius * c);
    return dist;

}

我家到地铁站的距离不准确。 如果在 android 中可用,请提供其他方法。

所以第二个选项是使用 google api 来获得 rout distance bn two latlong 但在这种情况下它会击中 api 很多 times.I 想知道哪种方法最好。

我在同一个地方得到了不同的 latlong,请有人让我明白这一点。

问题很可能不是由您发布的功能引起的。 可能您正在总结跳跃的 gps 位置。 仅仅总结从一个位置到另一个位置的距离是不够的,尤其是在低速情况下,比如步行速度。

但是公式有不足之处:

  float dist = (float) (earthRadius * c);

你总是使用双精度,然后降级到精度较低的浮点数,但 return 双精度。这是没有意义的。

用以下方法修复:

 double dist = earthRadius * c;