Gps两点之间的距离

时间:2015-07-23 13:27:53

标签: gps

我正在开发一个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来获得两个latlong的溃败距离但是在这种情况下它会多次击中api。我想知道哪种方法最好。

我在同一个地方得到不同的latlong,可能有一个请让我理解。

1 个答案:

答案 0 :(得分:1)

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

然而,公式中存在弱点:

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

您总是使用double,然后降级到较低精度的float,但返回double。这是没有意义的。

通过以下方式解决此问题:

 double dist = earthRadius * c;