7

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

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

我试过:

distanceFilter = 10 和desiredAccuracy = kCLLocationAccuracyNearestTenMeters

和阅读

CLLocation.speed 属性

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

我应该为 distanceFilter 使用 kCLLocationAccuracyBest 和其他一些值吗?

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

4

2 回答 2

6

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

一种方法是让电话提供不太准确的答案,并使用对上次您获得最准确信息时发生的情况的预测,看看您所掌握的是否有意义。

也就是说,假设我以每小时 6 英里的速度向北慢跑。你沿着 A 点、B 点、C 点绘制我……然后你得到一个低准确度的答案(可能是 kCLLocationAccuracyNearest100Meters。)看看它说我所在的位置并弄清楚“我能做到吗如果我继续沿着当前的路径,对可能的速度变化进行合理的调整,从 C 点开始?” 如果是这样,那么新点就在可能的范围内。(如果没有,那就扔掉它。)然后以我最后一次知道的速度从 C 点投射,并从弹道上找出你认为我可能在哪里。将其保存为弹道点-D。

当然,您使用加速度计来获得某种惯性感,以了解我走了哪条路,对吗?因此,您无法知道方向(您不知道手机指向什么方向),但您可以在远处进行合理的刺伤。

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

注意:测试时,不要只在良好的小区覆盖区域开车。了解您的应用在远离手机的山丘上的表现如何。很多人喜欢骑自行车和慢跑这些地区!

于 2009-04-10T15:20:28.843 回答
3

免责声明:我只玩了一点CoreLocation,我没有非常仔细地测试过准确性。

我希望您通过使用默认的 distanceFilter 和 desiredAccuracy 获得最准确的结果。不那么频繁的更新只会给你更少的数据来处理。

您可能会遇到的一个问题是位置修复丢失了一段时间,然后又回来了。计算行进距离的天真、点点滴滴的方法往往会低估跑步者的实际速度。与使用 CLLocation.speed 不同,您可能会根据跑步者实际遵循的路线的一些启发式近似来计算速度,从而获得更好的结果。

于 2009-02-24T17:28:36.557 回答