ios - 带有 kCLLocationAccuracyBestForNavigation 的 CLLocationManager 不是很准确

标签 ios swift core-location

我正在为运行者开发一个应用程序,所以我需要高精度的 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 时,我处理“位置”中的坐标并在 map 上显示位置。这工作正常,但准确性远非如此。

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

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

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

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

最佳答案

我给你推荐

locationManager.desiredAccuracy = kCLLocationAccuracyBest

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

CLLocationAccuracy

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

locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation

关于ios - 带有 kCLLocationAccuracyBestForNavigation 的 CLLocationManager 不是很准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56854475/

相关文章:

html - iOS 将 HTML 实体解码为字符串

ios - 根据字符集的任意字符分割字符串

xcode - 在 Swift 中以编程方式设置 Action 监听器

objective-c - 如果 CoreLocation 必须不断检索用户的位置,节省电池的技巧?

ios - 在监控重大位置变化时是否可以推迟位置更新?

ios - 计算海拔爬升的总英尺数给出奇怪的结果

objective-c - UIView层问题

ios - 带有点按指示的ScrollView中的SwiftUI TapGesture和LongPressGesture不起作用

ios - 将非更新的已创建交易与已完成交易相关联

ios - 动画时居中 UIImageView 不起作用