Вопрос

Я помню, что где-то читал (забыл где), что если приложение для iPhone просто запустило CLLocationManager один раз, оно дало не самые точные результаты.

Является ли это точным, и если да, то как я могу бороться с этой проблемой?Я хочу получить наиболее точные результаты GPS, и мне интересно, даст ли только один раз наилучшие результаты.

Спасибо за любую помощь!

Это было полезно?

Решение

CLLocationManager *locationManager.desiredAccuracy = kCLLocationAccuracyBest;

Вернет вам наилучший возможный результат. Метод делегата

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

продолжит возвращать местоположение пользователя на основе заданных вами настроек точности.

Если вам нужно указать местоположение только один раз, не забудьте вызвать stopUpdatingLocation для self . Если вам необходимо постоянно обновлять местоположение пользователя, не вызывайте stopUpdatingLocation

Я использую CoreLocation для определения местоположения пользователя, и он достаточно точен для моего использования.

Другие советы

То, что вы прочитали, скорее всего, было взято из Руководство по программированию приложений для iPhone:

Чтобы получить текущее местоположение пользователя, создайте экземпляр класса CLLocationManager и настройте его с требуемой точностью и пороговыми параметрами.Чтобы начать получать уведомления о местоположении, назначьте объекту делегата и вызовите метод startUpdatingLocation , чтобы начать определение текущего местоположения пользователя.При появлении новых данных о местоположении диспетчер местоположений уведомляет назначенный ему объект делегирования.Если обновление местоположения уже доставлено, вы можете также получить самые последние данные о местоположении непосредственно из объекта CLLocationManager , не дожидаясь доставки нового события .

[...]

Проверка временной метки события рекомендуется, поскольку служба определения местоположения часто немедленно возвращает последнее кэшированное событие определения местоположения.Это может занять несколько секунд для получения приблизительного определения местоположения, поэтому старые данные просто служат способом отразить последнее известное местоположение.Вы также можете использовать точность как средство определения того, хотите ли вы принять событие.По мере получения более точных данных служба определения местоположения может возвращать дополнительные события, причем значения точности соответствующим образом отражают улучшения .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top