2015-12-21 17 views
3

我正在写一个距离计算应用程序,我的方法如下。

1.请求位置每500ms更新一次。
2.使用android.location.Location中的distanceTo()方法计算前一个位置与当前位置之间的距离。
3.更新总行程。在缓慢移动的流量中计算在Android中行进的距离

准确性检查是为了确保准确度在给定阈值内,并且只有足够精确的距离才能计算。

这个效果很好,准确性一直不错。然而,在缓慢移动的交通情况下,我们注意到应用程序的行驶距离超过实际行驶距离(根据里程表)。我相信这可能是因为行驶距离小于电话给出的准确度。由于这个原因,车辆可能移动了2-3米,但由于精度在6-8米左右,所以计算距离时会出现误差。

有没有人有类似的应用程序类似的经验?如果是这样,解决这个问题的最好方法是什么?

谢谢。

回答

0

如果位置更新之间的行进距离与精度差不多或小于精度,则可以预计计算的距离过大。 这些位置将绕着真实的行进路径曲折,并且曲折路径上的距离总和将大于真实(大多为直线路径)。 如果更新之间的时间很长,并且真实旅行的路径包含大量曲线,则可能会出现相反的行为。在这种情况下,角落将被切断,总计算的距离将会过短。

解决您的问题的一个简单方法可能是在低速下降低更新频率(或根据最小行进距离请求位置更新)。 更好的方法可能会平滑由观察位置描述的路径(即去除之字形),例如通过使用Douglas-Peucker算法。

编辑:一个有趣的阅读有关的问题可以发现here