我正在为跑步者开发一个应用程序,因此我需要高精度的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接收器吗?环境条件完全一样。
是否可以接收更准确的位置?
答案 0 :(得分:0)
我会建议你
locationManager.desiredAccuracy = kCLLocationAccuracyBest
根据以下链接中的文档,知道此选项将使用您设备上的最大电量
请注意,以下代码旨在用于汽车导航
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation