如何在继续之前等待requestLocation?

时间:2016-07-15 18:00:15

标签: swift swift2 core-location cllocationmanager

当按下按钮时,我正在请求用户位置,然后触发API调用。但是,我不希望在从requestLocation()调用获得纬度/经度值之前进行此API调用。我想我可以通过while循环检查是否我的可选变量latitude == nil || longitude == nil,但是然后永远只是在while循环中。我需要等待某些值,因为如果我不这样做,它只会将nils发送到API调用,因为它需要几秒钟来获取位置。在从requestLocation()调用设置纬度/经度值之前,我该怎么做才能确保不会调用API请求?

2 个答案:

答案 0 :(得分:1)

使用CLLocationManagerDelegate

的委托方法调用您的api
 func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{
    locationManager.stopUpdatingLocation()
     let location = locations.last! as CLLocation

    latittude = String(format: "%f", location.coordinate.latitude)
    longitude = String(format: "%f", location.coordinate.longitude)

// call your api from here

}
希望这会帮助你。

感谢

答案 1 :(得分:0)

在更新位置的代理中进行api调用。 DidUpdateLocation。我完全不记得这个名字。

Didupdatelocations第一个位置将是旧位置,因此请确保您用于发送请求的位置接近准确。