【问题标题】:iPhone CoreLocation: How to get the most accurate speediPhone CoreLocation:如何获得最准确的速度
【发布时间】:2010-10-09 14:40:14
【问题描述】:

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

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

我试过了:

distanceFilter = 10 和desiredAccuracy = kCLLocationAccuracyNearestTenMeters

阅读

CLLocation.speed 属性

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

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

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

【问题讨论】:

    标签: iphone cocoa-touch core-location


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-22
        • 2012-01-03
        • 1970-01-01
        • 1970-01-01
        • 2012-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多