我想知道,如何使用CLLocationManager主动(并精确地)跟踪用户行进的距离。目前我的代码如下所示:
- (void)locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*)oldLocation {
totalDistance += [newLocation distanceFrom:oldLocation] / kMilesToMeters;
}
然而,当我检查里程表时,结果非常不准确。在用户移动时是否有更准确的方法来主动计算距离?
谢谢
答案 0 :(得分:1)
GPS非常不准确。有时它可以“传送”你到别的地方,然后带你回去。因此,您首先要做的是过滤掉所有错误数据。您可以忽略频繁更改的位置:例如GPS告诉你你在p1(x,y)并且片刻它告诉你在p2(x + 20m,y + 10m)几秒后它告诉你你的位置是p3(x + 2m,y + 3M)。很明显,p2可能是错误的位置,你可以忽略它。
另外一个好主意是不要直接使用位置来计算距离,而是逐步逼近这些值(也许最小二乘法对你有好处,或者如果你喜欢硬数学,那么你可以看一下卡尔曼滤波器。)