重大的位置变化 - 我们有什么保证?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重大的位置变化 - 我们有什么保证?相关的知识,希望对你有一定的参考价值。

我正在编写一个移动ios应用程序,它使用iOS重要位置更改服务来管理大量地理围栏,在我们从CoreLocation Framework收到此消息时启用和禁用地理围栏。

在Apple开发者网站上,它说:

重要更改位置服务仅在设备位置发生重大变化(例如500米或更长)时才会提供更新。

真正让我失望的是“500米或更多”,究竟什么是重要的位置变更服务,我们实际拥有什么保证?

此API是否可靠地跟踪区域之间的变化,以便在收到消息时我们知道是时候重新分配我们的地理围栏(假设我们每500米半径的地理围栏少于20个)?

答案

我在10个真实用户设备上使用重要的位置更改API运行了一个小应用程序,进行了为期两周的实验(因此他们正在上班,回家,周末外出等等)在大都市环境中进行测试(米兰,意大利)。注册了大约1800个重要的位置更新事件。

核心成果是:

  • 平均每天大约有10个位置更新
  • CoreLocation规定的水平精度具有如下表所示的分布
  • 但是,这并不能保证一旦用户从最后一次位置更新定义的圆圈中移出并且其水平精度,CoreLocation将发送新的位置事件。换句话说,您无法确定用户是否在任何特定时刻都在此圈子中。
  • 如果某些其他应用程序在设备上使用GPS(例如在导航期间),则到达我的应用程序的位置事件也更加准确。

分布表应如下所示:第一列是以米为单位的水平精度,第二列是多少%的位置更新与第一列相等或更准确。

Accuracy   Cumulative distribution
   10m        23.76%
   20m        23.76%
   50m        23.76%
  100m        49.86%
  200m        65.09%
  400m        65.31%
  500m        65.31%
 1000m        68.66%
 2000m        92.64%
 4000m        97.82%
>4000m       100.00%

换句话说,几乎2/3部分的位置更新比200米更准确。

另一答案

500米是0.31英里 - 大约三分之一英里。它们没有具体说明它是多么精确,但是在使用GPS和核心位置框架的基础上进行测试时,它非常准确(即使在代码中没有调用startupdatinglocation方法,也应该逐步跟踪距离)。

以上是关于重大的位置变化 - 我们有什么保证?的主要内容,如果未能解决你的问题,请参考以下文章

至少每 15 分钟不会触发重大位置变化

CLLocationManager 区域监控与重大位置变化

监控重大位置变化时是不是可以推迟位置更新?

StartUpdatingLocation 与重大变化的位置服务

目标 c - 重大的位置变化

每次 viewWillAppear 发生重大位置变化时调用 didUpdateLocations