iPhone 定位精度会超出职责范围吗?

Posted

技术标签:

【中文标题】iPhone 定位精度会超出职责范围吗?【英文标题】:Will iPhone location accuracy go beyond the call of duty? 【发布时间】:2011-09-21 08:47:49 【问题描述】:

如果我将 CLLocationManager 的所需精度设置为 kCLLocationAccuracyKilometer(精确到一公里),iPhone 最终会在获得位置时提供更好的位置吗?或者它会以我想要的精度停止。我在文档中找不到这个。

我的想法是我需要快速修复该位置,但我想更准确。我必须自己编写代码,还是自动为我编写代码?

【问题讨论】:

【参考方案1】:

我不知道以下内容是否 100% 正确,但我很确定它的工作原理是这样的:精度过滤器主要是为了节省能源而设计的。因此,如果您指定kCLLocationAccuracyKilometer 对您来说就足够了,并且操作系统非常确定它可以仅使用三角测量在 1 公里内准确定位您,它甚至不会启动耗电的 GPS 单元。因此,关于您的第一个问题,位置管理器将在达到您期望的准确度后立即停止。

关于第二个问题:我认为准确性过滤器对您收到第一次位置更新的时间没有任何影响。操作系统通常会缓存您最后一个已知位置,即使您指定了非常高的准确度,也会几乎立即提供该位置。后续位置更新会越来越精确。

如果这确实是真实的行为,您应该能够轻松地自行测试。

【讨论】:

我知道缓存的位置,但我需要一些新的位置,所以我丢弃任何超过 1 分钟的位置...【参考方案2】:

设置您需要的最佳准确度(但不会更多,因为定位服务消耗太多电量)。每次提高准确性时,LocationManager 都会调用 CLLocationManagerDelegate 的 didUpdateToLocation。尽快停止更新位置,以免电池耗尽。

【讨论】:

【参考方案3】:

不,它将以指定的精度停止。如果您只请求kCLLocationAccuracyKilometer,那么 GPS 接收器将不会开机,并且不会比 WiFi 或蜂窝塔三角测量更好。 [唯一的例外是,如果后台的另一个应用程序(如 TomTom 导航)已经开启 GPS 以进行高精度修复,那么您也可能获得高精度(

如果您想要更好,您必须请求它,您不妨立即请求它,您将立即获得快速定位(1000m 精度)定位,并在一两分钟内获得高精度 GPS 定位(嗯,这可能需要 30 秒到 10 分钟,具体取决于几件事)。无需特殊编码,只需指定您最终想要的精度即可。

【讨论】:

以上是关于iPhone 定位精度会超出职责范围吗?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 开发 - 定位精度

使用定位服务时 iPhone 耗电

iPhone 上的 HTML5 地理定位问题

CLLocationManager 确保 iphone 的最佳准确性

核心定位和辅助 GPS iPhone

使用 React Native 的 Android 上的 GPS 定位精度差/差