欢迎任何好的和给出准确的行驶距离的例子。我尝试通过计算纬度和经度。存储以前和当前的点数据并获取距离,并在车速 != 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。