iPhone CoreLocation:如何获得最准确的速度

时间:2009-02-24 16:47:16

标签: iphone cocoa-touch core-location

我正在尝试将GPS功能添加到我的iPhone应用中。这是一个锻炼应用程序,将在步行或跑步时使用。所以我想用GPS来显示这个人以Mph和分钟/英里的速度移动。

我应该如何配置CLLocationManager以获得最佳结果?我该如何设置desiredAccuracy和distanceFilter?

我试过了:

distanceFilter = 10 and desiredAccuracy = kCLLocationAccuracyNearestTenMeters

并阅读

CLLocation.speed属性

在我的车内驾驶时进行测试,与汽车车速表相比,准确性似乎很好,但需要一段时间才能更新。我意识到更新延迟可能是查询GPS位置所需的时间,但我不确定更改上述两个参数是否会产生更好的结果。

我应该使用kCLLocationAccuracyBest和distanceFilter的其他值吗?

我很想听到其他人使用CoreLocation来提高速度。你在做什么来获得更准确的结果?

2 个答案:

答案 0 :(得分:5)

为获得最佳效果,您应该使用kCLLocationAccuracyBest。您放入距离滤波器的内容取决于您愿意放置哪些故障。基本上,您将不得不根据准确性与可用性做出决策。也就是说,在没有最佳准确答案的期间,你会展示什么?

一种方法是让手机提供不太准确的答案,并使用上次获得最准确信息时所发生的事情的预测,看看你的内容是否有意义。

也就是说,假设我以6英里/小时的速度向北方慢跑。你沿着A点,B点,C点画我...然后你得到一个低精度的答案(也许是kCLLocationAccuracyNearest100Meters。)看看它说我的地方并弄清楚“我能不能得到那个如果我继续沿着当前的路径从点C开始,对可能的速度变化做出合理的调整?“如果是这样,那么新点就在可能性范围内。 (如果不是,那就扔掉它。)然后以我最后已知的速度从C点投射并找出你认为我可能在哪里,弹道。保存为弹道点D。

当然,你正在使用加速度计来获得某种惯性感,我走哪条路,对吧?所以,你无法知道方向(你不知道手机的指向是什么方式),但是你可以在远处做出合理的刺伤。

使用所有这些信息,绘制您认为我可能在哪里的最可能的位置。

注意:测试时,不要只在良好的小区覆盖范围内驾驶。了解您的应用如何在山区远离手机。很多人都喜欢骑车和骑自行车。慢跑那些地区!

答案 1 :(得分:3)

免责声明:我只使用了CoreLocation,我没有仔细测试准确性。

我希望您可以使用distanceFilter和desiredAccuracy的默认值来获得最准确的结果。频繁更新只会减少您使用的数据。

您可能遇到的一个问题是,当位置修复程序丢失了一段时间后,然后又回来了。用于确定行驶距离的天真的连接点方法将倾向于低估跑步者的实际速度。而不是使用CLLocation.speed,您可能会根据跑步者实际关注的线的一些启发式近似来获得更好的计算速度结果。

相关问题