У меня есть список, который заполняется данными API. Таким образом, в основном процесс выглядит так:LocationManager location
Когда пользователь открывает приложение, что я делаю:
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = 20
locationManager.startUpdatingLocation()
}
Тогда в моем func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
я называю API для получения данных.
Но проблема в том, что func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
может быть вызван до 5-6 раз, поэтому будет много вызовов API, и если я получу только одну позицию, то вероятность того, что я получу место, которое может быть далеко от пользователя.
Любые идеи о том, как решить эту проблему? Я в основном хочу лучшего места и сделать как можно меньше API-вызовов, предпочтительнее.
Всего несколько мыслей: (a) дросселируйте свое приложение, чтобы сделать максимум * n * запросов в минуту; (b) каждое 'CLLocation' имеет свойство' horizontalAccuracy'. Если он слишком велик, не обращайте внимания на местоположение –
Хороший комментарий @CodeDifferent, относительно идеи с 'horizontalAccuracy', что принимает самый низкий менеджер местоположения местоположения? Чтобы я знал, что я могу игнорировать. – user5855868
Вам нужно поэкспериментировать, чтобы узнать. [Национальная медицинская библиотека] (https://communityhealthmaps.nlm.nih.gov/2014/07/07/how-accurate-is-the-gps-on-my-smart-phone-part-2/) цитирует исследование, в котором говорится, что точность iPhone 3G составляет около 8 метров. Это было в 2009 году. –