РЕДАКТИРОВАТЬ, как проверить
Существует атрибут временной метки для каждого объекта CLLocation, сравните его с now
(до вызова геокодера)
let howRecent = newLocation.timestamp.timeIntervalSinceNow
guard newLocation.horizontalAccuracy < 20 && abs(howRecent) < 10 else { continue }
Во-первых, перед вызовом геокода вы должны проверить метку времени manager.location
, как предложено в документе , потому что вы можете получить кэшированные данные, которые не отражают текущее местоположение.
Во-вторых, вы можете рассмотреть возможность использования locationManager.requestLocation()
, он сообщает о местоположении, которое соответствует вашему desiredAccuracy
, и останавливается автоматически.
Наконец, вы всегда можете проверить объект местоположения, чтобы убедиться, что у вас достаточно точности перед отправкой в геокод, а если нет, начать заново.