使用安卓设备和位置管理器计算移动车辆路径距离



欢迎任何好的和给出准确的行驶距离的例子。我尝试通过计算纬度和经度。存储以前和当前的点数据并获取距离,并在车速 != 0 时每 5 秒添加一次 我检查了多轮移动车辆,每次我得到不同的 KMs 距离。不准确。用于移动车辆路径距离计算的任何精度解决方案。

private double journeyPathDistance(double currentLat, double currentLng) {
    if (isFirstTime && vehicleSpeedValue != 0) {
        Location loc1 = new Location("");
        loc1.setLatitude(currentLat);
        loc1.setLongitude(currentLng);
        Location loc2 = new Location("");
        loc2.setLatitude(currentLat);
        loc2.setLongitude(currentLng);
        isFirstTime = false;
        prevLat = currentLat;
        prevLng = currentLng;
        distanceKms = loc1.distanceTo(loc2) / 1000;
    } else {
        if (vehicleSpeedValue != 0) {
            Location loc1 = new Location("");
            loc1.setLatitude(prevLat);
            loc1.setLongitude(prevLng);
            Location loc2 = new Location("");
            loc2.setLatitude(currentLat);
            loc2.setLongitude(currentLng);
            prevLat = currentLat;
            prevLng = currentLng;
            distanceKms += (loc1.distanceTo(loc2) / 1000);
        }
    }
    return distanceKms;
}
在此

之上,您将不得不添加大量智能才能获得接近准确的任何内容。 假设您正在使用GPS(如果您使用的是网络,那么您将因此而遇到巨大的麻烦)。 手机上的GPS实际上只能精确到10米左右。 因此,每个数据点都可能相差 10 米。 添加很多 10 米的不准确性,你增加了很多额外的距离。 你也会偶尔得到一个离谱的点。 没有办法通过添加所有增量来使该算法工作。

您需要做的是过滤它。 忽略短距离变化,只在有多个确认读数的地方添加长距离变化(以确保随机错误位置不会抛弃您的读数)。 立即想到的想法是试图通过寻找航向的长期变化来检测转弯,并找出每条直道的起点和终点以找到其长度。

当然,最准确的方法是阅读里程表。 但我认为你有理由不以简单的方式做事。

这个问题不清楚。 但是,如果您正在寻找计算距离的公式,可在此处找到:计算纬度/经度点之间的距离。 它包括Javascript代码片段,您可以轻松转换为Java。

最新更新