【发布时间】: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要准确得多。难以置信。
标签: ios swift core-location