使用Android设备和LocationManager计算移动车辆路径距离

时间:2016-04-21 18:51:28

标签: java android

欢迎任何好的并给出准确的行驶距离示例。我尝试计算纬度和经度。存储前一个和当前的点数据,并获得距离,并在车速时每5秒加一次!= 0我检查了多轮移动车辆,每次我得到不同的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;
}

2 个答案:

答案 0 :(得分:0)

你必须在此基础上添加大量智能才能获得接近准确的信息。让我们假设您正在使用GPS(如果您正在使用网络,那么您将面临巨大的麻烦)。手机上的GPS实际上只能精确到10米左右。因此,每个数据点可能会偏离10米。加上很多10米的不准确度,你需要增加很多额外的距离。而你也会偶尔得到一点点。通过添加所有增量,无法使该算法工作。

您需要做的是过滤它。忽略短距离更改,只添加多个已确认读数的长距离(以确保随机错误的位置不会丢失您的读数)。立即想到的想法是试图通过找到航向的持久变化来检测转弯,并找出每个直线开始和结束的位置以找到它的长度。

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

答案 1 :(得分:0)

问题不明确。但是,如果您正在寻找可以在此处找到距离的公式:Calculate distance between Latitude/Longitude points。它包含可以轻松转换为Java的Javascript代码片段。