带有 kCLLocationAccuracyBestForNavigation 的 CLLocationManager 不是很准确

Posted

技术标签:

【中文标题】带有 kCLLocationAccuracyBestForNavigation 的 CLLocationManager 不是很准确【英文标题】:CLLocationManager with kCLLocationAccuracyBestForNavigation not very accurate 【发布时间】:2019-07-02 14:14:29 【问题描述】:

我正在为跑步者开发一个应用程序,因此我需要高精度的 GPS 坐标。 android版本已经准备好,现在我正在测试ios版本。我以这种方式使用 Swift 中的默认位置提供程序:

locationManager = CLLocationManager()
            locationManager.delegate = self
            locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
            locationManager.distanceFilter = 1.0
            locationManager.requestAlwaysAuthorization()
            locationManager.allowsBackgroundLocationUpdates = true

而我是这样处理坐标的:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 

        let location = locations.last as CLLocation?
        let accuracy = location?.horizontalAccuracy


当精度低于 20 时,我会处理“位置”中的坐标并在地图上显示该位置。这工作正常,但准确性远非良好。

kCLLocationAccuracyBestForNavigation 应该给出最好的结果,但是...

今天,我同时使用两台设备进行测试:一台 Android 设备(价格:150 美元)和一部 iPhone X(价格:1000 美元)。 Android 设备始终向我显示距离我的真实位置最多 10 米的位置。带有上述代码的 iPhone X 在 70% 的情况下会向我显示距离我的真实位置大约 30-40 米的位置。对于提供语音指令的正在运行的应用程序来说,这还不够好。

不会是 iPhone X 的 GPS 接收器质量不如华为 Y5 的 GPS 接收器吧?环境条件完全一样。

有没有办法接收更准确的位置?

【问题讨论】:

根据我的经验,苹果 iPhone 的 GPS 不是很好。在开阔的天空视野中,我很幸运能够获得 20m 的精度,通常是 30-50。 是的,问题似乎出在硬件上……当您看到这些设备的价格时,真是太可惜了。华为Y5要准确得多。难以置信。 【参考方案1】:

我建议你

locationManager.desiredAccuracy = kCLLocationAccuracyBest

根据以下链接中的文档,知道此选项将使用您设备的最大电量

CLLocationAccuracy

请注意,以下代码旨在用于汽车导航

locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation

【讨论】:

感谢您的建议,但这是 wat docs 对 kCLLocationAccuracyBest 的评价:“当您想要非常高的准确性但不需要导航应用程序所需的相同级别的准确性时,请指定此常数。” (developer.apple.com/documentation/corelocation/…)。在互联网上的许多文档中,我读到 kCLLocationAccuracyBestForNavigation 应该提供最佳位置......我错了吗? 非常欢迎您 \n 我建议这个答案,因为根据问题要求的信息如下 ---“我需要高精度 GPS 坐标”--- & ---“是有没有办法接收更准确的位置?"--- 我刚刚用 kCLLocationAccuracyBest 进行了测试。同样的问题。便宜得多的 Android 设备更准确。 iOS 位置更新大部分时间距离真实位置 30-40 米。一定是硬件问题:昂贵的 iPhone X 的 GPS 传感器不如便宜 10 倍的设备的准确度。

以上是关于带有 kCLLocationAccuracyBestForNavigation 的 CLLocationManager 不是很准确的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 uuencode 的“sendmail”发送邮件,并带有主题

带有和不带有聚合的 sql 查询

如何翻转正面带有标签而背面带有另一个标签的视图 - 参见图片

CakePHP 如何处理带有/不带有 'id' 字段的 HABTM 表?

带有滚动的 Div 和带有绝对位置的内容

带有 RecyclerView 的 DialogFragment 比带有 Recyclerview 的 Fragment 慢