MapView gps 中错误的初始用户位置
Wrong initial user location in MapView gps
我想获取用户位置,我就是这样做的:
我在 ViewController 中设置了 locationManager:
var locationManager = CLLocationManager()
func setUpLocationManager() {
locationManager.delegate = self
locationManager.distanceFilter = 5
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
mapView?.showsUserLocation = true
locationManager.startUpdatingLocation()
}
这是位置更新后调用的函数:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if !locations.isEmpty {
print("\(locations[0])")
}
}
}
它打印了用户位置的初始位置(见图),但我认为这是错误的,因为它是一个近似值。
我也试过:
func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) {
let accuracy = userLocation.location?.horizontalAccuracy
if accuracy == locationManager.desiredAccuracy {
print("\(locations[0])")
}
}
但它从不打印位置,因为 locationManager.desiredAccuracy
等于 -2 而 accuracy
总是 > 0。
这是我在 mapView 上看到的:
最初用户图钉显示的位置接近真实位置(但不正确),随后用户图钉移动到真实用户位置。
我希望当用户 pin 位于正确位置时调用函数 didUpdateLocations
。
我的问题类似于this,但在objective-c中。
有什么提示吗?谢谢
参考。 MKMapView's user location is wrong on startup or resume
Swift版本:
func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) {
let accuracy = userLocation.location?.horizontalAccuracy
if accuracy ... {
}
}
我想获取用户位置,我就是这样做的: 我在 ViewController 中设置了 locationManager:
var locationManager = CLLocationManager()
func setUpLocationManager() {
locationManager.delegate = self
locationManager.distanceFilter = 5
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
mapView?.showsUserLocation = true
locationManager.startUpdatingLocation()
}
这是位置更新后调用的函数:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if !locations.isEmpty {
print("\(locations[0])")
}
}
}
它打印了用户位置的初始位置(见图),但我认为这是错误的,因为它是一个近似值。 我也试过:
func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) {
let accuracy = userLocation.location?.horizontalAccuracy
if accuracy == locationManager.desiredAccuracy {
print("\(locations[0])")
}
}
但它从不打印位置,因为 locationManager.desiredAccuracy
等于 -2 而 accuracy
总是 > 0。
这是我在 mapView 上看到的:
最初用户图钉显示的位置接近真实位置(但不正确),随后用户图钉移动到真实用户位置。
我希望当用户 pin 位于正确位置时调用函数 didUpdateLocations
。
我的问题类似于this,但在objective-c中。
有什么提示吗?谢谢
参考。 MKMapView's user location is wrong on startup or resume
Swift版本:
func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) {
let accuracy = userLocation.location?.horizontalAccuracy
if accuracy ... {
}
}