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

时间:2014-09-10 23:21:47

标签: ios location core-location cllocationmanager

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

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

  
    

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

  

真正让我失望的是“500米以上”,具体的位置变更服务究竟是基于什么以及我们实际拥有什么保证?

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

2 个答案:

答案 0 :(得分:14)

我在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米更准确。

答案 1 :(得分:1)

500米是0.31英里 - 大约三分之一英里。他们没有详细说明它的确切程度,但是基于使用GPS和核心位置框架的测试,它非常准确(即使在代码中没有调用startupdatinglocation方法,也应该逐步跟踪距离) )。