Ich beantrage Benutzerstandort, wenn eine Taste gedrückt wird, die dann einen API-Aufruf auslöst. Ich möchte diesen API-Aufruf jedoch nicht vornehmen, bevor die Breiten-/Längenwerte aus dem Aufruf requestLocation()
abgerufen werden. Ich dachte, ich könnte nur mit einer while-Schleife abfragen, ob meine optionalen Variablen latitude == nil || longitude == nil
, aber dann nur für immer in der While-Schleife sitzt. Ich muss irgendwie auf diese Werte warten, denn wenn ich es nicht tun würde, würde es einfach Nils zum API-Aufruf senden, da es ein paar Sekunden dauert, um den Ort zu bekommen. Was würde ich tun, um sicherzustellen, dass die API-Anforderung erst aufgerufen wird, wenn die Breiten-/Längengradwerte über den Aufruf requestLocation()
festgelegt wurden?wie auf RequestLocation warten, bevor Sie fortfahren?
1
A
Antwort
0
Den api-Aufruf im Delegaten vornehmen, an dem der Standort aktualisiert wird. DidUpdateLocation. Ich erinnere mich nicht genau an den Namen.
Didupdatalocations erster Ort wird ein älterer Ort sein, also stellen Sie sicher, dass der Ort, den Sie verwendet haben, um die Anfrage zu senden, nahezu genau ist.
1
Rufen Sie Ihren api aus dieser Delegatmethode von CLLocationManagerDelegate
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
}
HOPE DIES Ihnen helfen.
DANK
Anstatt das Gespräch zu machen, wenn die Taste gedrückt wird, den Anruf tätigen, wenn Sie die Breite/Länge Wert –
einen Abschluss Handler hinzufügen erhalten? – Dershowitz123