Проблема: мне нужно, чтобы координаты местоположения были получены до того, как getReports() выполняется в viewDidLoad(). Как вы можете видеть, я сначала вызываю startLocationUpdates в viewDidLoad(). К сожалению, существует задержка между вызовом startLocationUpdates() и вызываемым вызовом doUpdateLocations. Эта задержка вызывает координаты широты и долготы каждый раз перед выполнением getReports().Swift - Получение координат GPS из didUpdateLocations, слишком долго возвращающих значения
Как я могу быть уверенным, что didUpdateLocations вызывается ДО getReports(), чтобы значения широты и долготы были установлены правильно?
override func viewDidLoad() {
super.viewDidLoad()
self.startLocationUpdates()
// Do any additional setup after loading the view.
self.mapView.delegate = self
if mblnLocationAcquired {
getReports()
}
}
}
func startLocationUpdates() {
var currentLocation = CLLocation()
mLocationManager.desiredAccuracy = kCLLocationAccuracyBest
mLocationManager.delegate = self
//mLocationManager.requestWhenInUseAuthorization()
mLocationManager.requestWhenInUseAuthorization()
mLocationManager.startUpdatingLocation()
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
let location = locations.last as CLLocation
self.mdblLat = location.coordinate.latitude
self.mdblLong = location.coordinate.longitude
println("didUpdateLocation \(location.coordinate.latitude), \(location.coordinate.longitude)")
mLocationManager.stopUpdatingLocation()
mblnLocationAcquired = true
}
Не удалось ли вызвать getReports из didUpdateLocations (после вызова stopUpdatingLocation) вместо viewDidLoad? – Anna
Я думал об этом. Однако метод didUpdateLocations вызывается повторно даже после вызова stopUpdatingLocation. Я не хотел, чтобы getReports вызывался много раз в процессе. – play2win