问题描述
我在IOS Swift中使用CoreLocation获取当前坐标,但在某些情况下,它使我最接近所需位置,而有时坐标距我的给定地址数米。请检查我正在使用的代码,是否还有其他方法可以获取准确的当前位置坐标??
我的代码是:
import CoreLocation
var locationManager:CLLocationManager!
var userLat = 0.0
var userLong = 0.0
override func viewDidLoad() {
super.viewDidLoad()
self.locationManager = CLLocationManager()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.requestAlwaysAuthorization()
if CLLocationManager.locationServicesEnabled(){
self.locationManager.startUpdatingLocation()
}
}
func locationManager(_ manager: CLLocationManager,didUpdateLocations locations:
[CLLocation]) {
guard let userLocation :CLLocation = locations.first else{return}
userLat = userLocation.coordinate.latitude
userLong = userLocation.coordinate.longitude
//current location
print("current location latitude is :%@",userLat)
print("current location longitude is :%@",userLong)
}
func locationManager(_ manager: CLLocationManager,didFailWithError error: Error) {
print(Error: \(error)")
}
请帮助我一段时间,当前位置准确无误,有时位置太远了。谢谢
解决方法
假设您的应用程序的用户允许您使用精确的位置,那么您仍然需要考虑以下事实:所提供的位置仅与硬件可以提供的位置一样准确。系统需要一些时间才能准确定位该位置,随着系统预热,您可能会看到多次致电didUpdateLocations
。
您可以在horizontalAccuracy
上使用verticalAccuracy
和CLLocation
来决定如何进行职位更新。