【问题标题】:How accurate is CoreLocation's accuracy measurementCoreLocation 的准确度测量有多准确
【发布时间】:2012-01-03 23:28:48
【问题描述】:

我一直在测试 CoreLocation 各个方面的准确性,并惊讶地发现传递给 CLLocationMangerDelegate 方法的新旧位置提供的准确性值:(void)locationManager:didUpdateToLocation:fromLocation 本身非常不准确。

走一段人行道(沿着一段道路,一侧有建筑物)我发现虽然 CLLocationManager 声称它提供的 CLLocations 具有 5 米的水平精度,但实际上 MKUserAnnotation 显示的位置是距离我知道自己所在位置不超过 30 米的任何东西(通常显示为一排建筑物的对面)。这表明准确度读数本身并不准确。 CLLocationManager 告诉我它的坐标精确到 5 米以内,但实际上在 30 米之外。

澄清一下,这不是缓存/时间戳问题。它在某些领域是可重复的,并且不会随着时间的推移而改进。

还有其他人遇到过这个问题吗?

【问题讨论】:

  • AFAIK 准确度数据仅告诉您当前使用的位置源的平均准确度(使用 GPRS 三角测量相当差,而使用信号良好的 GPS 则相当好)。它绝不是权威的。
  • 您检查时间戳是否是最近的? (可能是一个带有相对旧时间戳的缓存位置)
  • @Romain 那么你是说准确度值是基于给定手机可以访问用于定位的来源的准确度估计值?
  • @Till Yes。这不是时间戳问题。它发生在某些特定区域。
  • @Romain 谢谢。但这仍然没有真正加起来。按照这种逻辑,如果位置不准确,肯定是由于缺乏定位数据而导致的不准确——视线内的卫星太少、基站信号弱等,为什么准确度估计会不准确。估计准确度的代码必须意识到它没有足够的数据来进行准确的估计,并且应该给出一个低准确度值。

标签: iphone ios gps mapkit core-location


【解决方案1】:

CoreLocation 不是人类,也不知道您“真正”在哪里,这是您问题答案的本质。它正在使用您设备上的传感器并为您提供最佳答案,并且其知道其声称答案的准确性的能力问题反映了位置问题本质上是非常困难的。

离题到位置数据本身:CoreLocation 从蜂窝塔三角测量、附近的 SSID 以及最后的 GPS 中提取,以确定设备的位置。这些确实具有不同程度的准确性,但它们的共同点是,如果您让设备工作更长时间,您将获得更准确的答案。但是,由于 CoreLocation 使用的所有工具在电池寿命方面都很昂贵,因此它会在生成满足您“足够好”标准的答案时立即停止。

这就是为什么另一个答案告诉你 set your desiredAccuracykCLLocationAccuracyBestForNavigation - 当你这样做时,你基本上是在告诉 CoreLocation “向我展示你所拥有的最好的东西”,并且你还自愿为 CPU随之而来的负载,时间和电池消耗。您还超出了 CoreLocation 用来确定什么是“足够好”的正常规模——而不是提前告诉它什么时候可以停止,您基本上是在说“我会告诉你什么时候足够好”。

因此,CoreLocation 将继续尝试为您提供更好的答案,直到您告诉它您已经完成,并且您需要履行自己的责任来决定该点是什么。这也是您需要记住的地方,CoreLocation 的所有工具 中的工具的准确度是有限度的 - 您可以获得许多有效的纬度和经度数字,但要冒险超越规模,您自愿完成了弄清楚这些数字的可信度的任务。预定义的精度等级为 10 米、100 米、1 公里和 3 公里。 CoreLocation 的创建者选择了这些分界点这一事实应该告诉你问题的难度——如果更准确的话很容易,它可能已经在框架中了。

因此,回过头来:CoreLocation 正在忠实地报告其答案的准确性,只是这些答案背后的数据存在问题,如果它更了解其准确性声明的准确性,它将在其准确性声明中反映这一点.考虑 CoreLocation 确切知道其准确性声明的准确性的假设情况,然后 CoreLocation 对其准确性声明的准确性一无所知的情况,并考虑您将如何设计 API 来解决该问题。 CoreLocation 尽可能地确定它的确定性,如果你能找出一种在硬件限制内易于处理的方法来更确定你的确定性,App Store 财富等待着你你。

【讨论】:

    【解决方案2】:

    硬件需要一些时间才能获得准确性。最佳精度为 2-3 秒内 65m。否则你有 1414m 精度

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 2023-03-16
      • 2018-10-08
      • 2021-06-02
      • 2020-11-06
      • 2020-12-01
      相关资源
      最近更新 更多