0

我想知道,如何使用 CLLocationManager 主动(和精确)跟踪用户行进的距离。目前我的代码如下所示:

- (void)locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*)oldLocation {
    totalDistance += [newLocation distanceFrom:oldLocation] / kMilesToMeters;
}

但是,当我用里程表检查时,结果非常不准确。有没有更准确的方法可以在用户移动时主动计算距离?

谢谢

4

1 回答 1

1

GPS非常不准确。有时它可以将你“传送”到其他地方,然后带你回去。所以你要做的第一件事就是过滤掉所有的虚假数据。您可以忽略变化太频繁的位置:例如,GPS 告诉您您在 p1(x,y) 并且在几秒钟后它告诉您您在 p2(x+20m, y+10m) 它告诉您您的位置是 p3(x+2m, y+3m)。所以很明显 p2 可能是错误的位置,你可以忽略它。

另外一个好主意是不要直接使用位置来计算距离,而是逐步逼近这些值(也许最小二乘法对你有好处,或者如果你喜欢硬数学,那么你可以看看 Kalman filter )。

于 2012-07-18T00:51:35.897 回答