如何通过公交获取覆盖距离

时间:2018-07-24 12:16:48

标签: android google-maps google-maps-api-3 google-distancematrix-api

我想创建一个应用,其中要显示用户已经走了多少距离。

我尝试使用float distance = locationA.distanceTo(locationB);,但是它只是从头到尾画一条简单的直线,然后计算距离。

我想根据行进路线计算行进距离。可以使用任何Google Maps API这样做吗?

3 个答案:

答案 0 :(得分:1)

您只需要服务来不断观察用户更改其位置,然后可以使用这些功能计算距离。

    public double GetDistanceInKm(double lat1, double lon1, double lat2, double lon2)
{
    final int R = 6371;
    // Radius of the earth in km
    double dLat = deg2rad(lat2 - lat1);
    // deg2rad below
    double dLon = deg2rad(lon2 - lon1);
    double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double d = R * c;
    // Distance in km
    return d;
}
private double deg2rad(double deg)
{
    return deg * (Math.PI / 180);
}

答案 1 :(得分:0)

假设您有很多纬度长点组成一条路线。您必须对所有点取从上一个点到下一个点的距离,并保持总计。换句话说,您在路线之间需要很多纬度数据,否则您将获得一条直线。

答案 2 :(得分:0)

您可以使用google maps api来获取距离

使用此link了解如何使用它。