“让它比Nike +更好”-如何过滤位置(在iOS Vol.5中跟踪高精度位置)

在最后三个会话中,我们在示例代码中添加了背景跟踪引擎+地图绘制。

使用示例应用程序进行短期运行会使您感到它已经像Runtastic这样的正常运行应用程序一样工作。

但是,您可能会遇到一些应用无法正常运行的情况。
尤其是在跑步时..

  • 在多云的天气下
  • 在被高楼大厦包围的小巷里
  • 在一个有许多树木的森林或公园里

为了在这种情况下使您的应用像Nike +一样更准确地工作,您需要将应用日志设置为“仅限好位置”

在这篇博客文章中,我将解释如何制作各种过滤器以仅记录良好的位置。
记录准确的位置不仅可以帮助应用程序不仅在地图上绘制漂亮的路径,而且还可以从这些位置计算出准确的距离或速度。

在当前示例中,我们只是将新位置记录到didUpdateLocation回调中的locationDataArray中。
首先,我们将其替换为对filterAndAddLocation()的调用,如下所示。

左侧轨道(不带过滤器)已在标有蓝色圆圈的区域周围记录了几个不正确的位置。 正确的轨道没有不正确的位置,路径看起来更平滑。

比耐克+更好

我使用过滤器测试了示例应用程序,并将其与Nike +的性能进行了比较。
我在iPhone上同时打开了示例应用程序和Nike +,然后跑了2–3公里。

在标有蓝色圆圈的区域,我们的跟踪算法显示出更好的性能。

后来有一天,我在涩谷的街道上奔跑。 Nike +和我们的示例应用程序的跟踪路径如下。

这两个试验还不足以称为实验,但是我上面解释的过滤器似乎使我们的应用程序具有与Nike +相同甚至更好的性能。

更好的跟踪引擎

还有一些空间可以使此跟踪引擎变得更好。

如果您在iPhone放在背包里的大雨天里奔跑在森林中,则可能看不到您的应用程序跟踪任何内容。
如果您看到这种情况,则说明您的过滤条件可能太严格了。

使跟踪引擎更强大的最后几个步骤是使您的过滤器适应环境。

我不会对此做更深入的介绍,但是这里有一些提示

  • 从平均水平精度知道条件
  • 从位置回调之间的时间间隔了解条件
  • 知道天气

迎接挑战,使您的引擎变得更大!