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

Posted

技术标签:

【中文标题】如何通过公交获得覆盖距离【英文标题】:How to get covered distance by transit 【发布时间】:2019-01-01 01:33:06 【问题描述】:

我想创建一个应用程序,我想在其中显示用户已经走了多远。

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

我想根据行驶路线计算行驶距离。是否可以使用任何 Google 地图 API 来做到这一点?

【问题讨论】:

【参考方案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);

【讨论】:

感谢您的帮助,我会尝试的。 我可以用这个代码float distance = locationA.distanceTo(locationB);代替上面的代码来计算距离吗?【参考方案2】:

假设您有一堆经纬度点组成一条路线。对于所有点,您必须计算从前一点到下一点的距离并保持总和。换句话说,您在路线之间需要大量的经纬度数据,否则您只会得到一条直线。

【讨论】:

是的,你是对的,我必须收集一堆经纬度来创建路线但是如果用户离线或他没有互联网怎么办。我可以使用网络提供来获取用户位置吗?跨度> 您应该能够使用 gps 获取始终处于活动状态的位置,除非位置服务处于关闭状态。 GPS 使用卫星,因此如果您想要那里的位置,它与连接无关 那么我可以在没有互联网的情况下使用 GPS 获取用户当前的纬度和经度吗? 请告诉我怎么做?你能给我一些代码示例或任何链接吗? 这个链接似乎有你需要的东西:***.com/questions/46906017/getting-location-offline。希望对你有帮助:)【参考方案3】:

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

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

【讨论】:

以上是关于如何通过公交获得覆盖距离的主要内容,如果未能解决你的问题,请参考以下文章

每日一题1184. 公交站间的距离

Android - 沿街 2 个位置之间的距离和时间

LeetCode1184. 公交站间的距离(C++)

LeetCode 1184. 公交站间的距离

克鲁斯卡尔算法与公交问题

公交卡可能被复制使用吗?