【发布时间】:2023-03-24 18:17:01
【问题描述】:
如何在viewDidLoad方法中引用用户当前的经纬度值?
我尝试过使用以下方法,但是...
let locationManager = CLLocationManager()
override func viewDidLoad()
{
super.viewDidLoad()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.startUpdatingLocation()
self.mapView.showsUserLocation = true
mapView.delegate = self
let locationLong = locationManager.location!.coordinate.longitude
...
我认为 locationManager 在代码运行之前没有机会获得该值,并且它失败并显示以下消息:
致命错误:在展开可选值时意外发现 nil
【问题讨论】:
-
如果你不知道如何使用一个类,为什么不阅读它的文档呢?
-
获取用户位置可能需要几秒钟,所以是的,当您尝试访问主线程上的值时它是 nil...
-
你需要使用
CLLocationManager委托方法来获取坐标,你做错了什么。阅读文档。 -
我们要做的是在应用程序打开后立即向用户显示前往目的地的路线。有没有办法做到这一点,它不在主线程上,或者以某种方式依赖于 CCLocationManager 完成确定用户位置?
-
应该可以了,你在plist中添加了位置权限请求吗??
标签: ios swift mapkit cllocationmanager