我正在为运行者开发一个应用程序,所以我需要高精度的 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
根据以下链接中的文档,知道此选项将使用您设备的最大电量
请注意,以下代码旨在用于汽车导航
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
关于ios - 带有 kCLLocationAccuracyBestForNavigation 的 CLLocationManager 不是很准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56854475/