CLLocationManager didUpdateLocations

corelocation
swift

#1

При запуске приложения функция didUpdateLocations запускаеться раза 3 подряд и не успевают сработать ограничения которые внутри, в чем может быть проблема?


#2

Измените .distanceFilter например на 50, чтобы получать уведомления не сразу, а только каждые 50 метров:

    let locationManager = CLLocationManager()
    locationManager.delegate = self
    locationManager.distanceFilter = 50
    locationManager.desiredAccuracy = kCLLocationAccuracyBest

#3

В том то и дело что

locationManager.distanceFilter = 500

оно срабатывает 3 - 5 раз за пол секунды при запуске, а дальше все нормально, хоть у меня и функция выглядит вот так

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
     if let location = locationManager.location {
          locationManager.stopUpdatingLocation()
          .......
     }
}

#4

А попробуйте убрать if let…. То есть просто при вызове stopUpdatingLocation().


#5

Спасибо haymob за помощь! Вот решение которое работает:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])    {
    if let location = locations.first, locationManager.monitoredRegions.isEmpty {
         locationManager.stopUpdatingLocation()
         ......
    }
}