2016-09-14 33 views
5

CLLocationManager.requestLocation() trwa około 10 sekund, aby wystrzelić zdarzenie didUpdateLocations.CLLocationManager.requestLocation() trwa około 10 sekund

Oto atrybuty ustawione dla CLLocationManager

let locationManager = CLLocationManager() 
locationManager.delegate = self 
locationManager.desiredAccuracy = kCLLocationAccuracyBest 
locationManager.distanceFilter = 10 
locationManager.requestWhenInUseAuthorization() 
locationManager.requestLocation() 

Jak na documentation może to potrwać kilka sekund.

Ta metoda zwraca natychmiast. Wywołanie go powoduje, że menedżer lokacji otrzymuje poprawkę lokalizacji (która może zająć kilka sekund) i wywołuje metodę locationManager (_: didUpdateLocations :) delegata z wynikiem.

Ale czy to może zająć 10 długich sekund? Czy może czegoś brakuje?

góry dzięki

+0

(co może potrwać kilka sekund). Upewnij się, że aktualizujesz interfejs z głównej kolejki. –

+0

Trzeba czasu, aby uzyskać dokładną lokalizację, jeśli GPS nie jest już uruchomiony. Jeśli nie można znaleźć lokalizacji, może upłynąć więcej niż 10 sekund, zanim zrezygnujesz. – Paulw11

+4

Dzięki za wszystkie komentarze. @SausageMachine Nie narzekam, zastanawiam się, w jaki sposób aplikacje takie jak Mapy Google uzyskują lokalizację około 3 sekund przy użyciu tego samego poziomu dostępu do lokalizacji "Podczas używania". @Wszystko geniusz w dół wyborców, pytam o to, ponieważ nie widziałem aplikacji, która zajmuje tak dużo czasu, aby uzyskać lokalizację. Proszę, oświeć mnie. –

Odpowiedz

0

Po przełączeniu się z

locationManager.requestLocation() 

dla

locationManager.startUpdatingLocation() 

następnie didUpdateLocations zacznie strzelać natychmiast. To powinno rozwiązać twój problem.