为什么位置管理器在viewDidLoad中为nil并且didUpdateLocations func没有被调用我正在使用真实设备?

时间:2019-04-26 12:06:20

标签: ios swift locationmanager

我正在使用真实的设备来获取当前位置,问题是locationManager.locationnil而函数didUpdateLocations没有被调用。

var location = CLLocationManager()
@IBOutlet weak var map: MKMapView!

override func viewDidLoad() {
    super.viewDidLoad()
    map.showsPointsOfInterest = true
    map.showsScale = true
    map.showsUserLocation = true

    locationManagerConfiguration()
}
func locationManagerConfiguration(){
    location.requestAlwaysAuthorization()
    location.requestWhenInUseAuthorization()
    if CLLocationManager.locationServicesEnabled(){
        location.delegate = self
        location.desiredAccuracy = kCLLocationAccuracyBest
        location.startUpdatingLocation()
    }

    let sourceCoordinates = location.location?.coordinate
    let sourcePlacemark = MKPlacemark(coordinate: sourceCoordinates! 

这是sourceCoordinate为零的问题

1 个答案:

答案 0 :(得分:0)

您提供的代码与您的问题陈述不符,但我认为我在代码中看到了问题。根据Apple文档:Startupdatinglocation

  minDate = new Date(2018, 0, 1);
  maxDate=new Date(2020, 2, 1);

是一个异步函数,需要花费几秒钟来获取位置。该函数将立即返回,但是当系统获得GPS位置(几秒钟后,异步)后,将调用委托回调。上面的代码正在调用location.startUpdatingLocation() ,并立即期望值存在(同步,永远不会出现)。您的代码必须更像:

startUpdatingLocation()