Расшифровка CLLocationAcraracy const's - PullRequest
       31

Расшифровка CLLocationAcraracy const's

32 голосов
/ 05 августа 2010

перечисленные ниже перечислены в CLLocation.h, но по моему опыту они обманывают имена - возможно, изначально задуманные для двух целей: 1. для проверки точности возвращаемого местоположения, а также 2. для определения степени сложности местоположения работает менеджер, конкретно что включено (gps (сколько спутниковых каналов), насколько сильно работает wifi, триангуляция и т. д.

extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation; // (raw value: -2)
extern const CLLocationAccuracy kCLLocationAccuracyBest; // (raw value: -1)
extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters; // (raw value: 10)
extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters; // (raw value: 100)
extern const CLLocationAccuracy kCLLocationAccuracyKilometer; // (raw value: 1000)
extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers; // (raw value: 3000)

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

т. Е. KCLLocationAccuracyBest = 10 спутников (каналов / транков?), 100% мощности для Wi-Fi и т. Д.

Я как бы догадываюсь о соломинках здесь - я думаю, что именно такую ​​информацию Apple должна была предоставить -

Что я действительно хочу знать, так это то, что на самом деле происходит с kCLLocationAccuracyThreeKilometers в отношении разряда батареи - включен ли gps? 1 сел багажник? Wi-Fi включен? WiFi по таймеру? кто знает? Я знаю, что хотел бы

Ответы [ 3 ]

54 голосов
/ 11 августа 2010

Я согласен с Оли, что сокрытие деталей алгоритма предназначено для защиты разработчика приложения от беспокойства о том, как определяется местоположение.Тем не менее, я считаю, что все еще разумно задать вопрос: «Каковы энергетические последствия моего выбора точности?».

У меня есть немного информации, которая может помочь вам принять решение о том, какой вариант использовать, но я не знаю точных деталей реализации Apple.

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

Вот обоснованное предположение о механизме, используемом для определения точности.Список упорядочен (1) как максимальный разряд батареи.

  1. GPS - kCLLocationAccuracyBestForNavigation;
  2. GPS - kCLLocationAccuracyBest;
  3. GPS - kCLLocationAccuracyNearestTen4eters;1015 * WiFi (или GPS в сельской местности) - kCLLocationAccuracyHundredMeters;
  4. Cell Tower - kCLLocationAccuracyKilometer;
  5. Cell Tower - kCLLocationAccuracyThreeKilmeters;

При выборе рекомендуетсяApple, что вы выбираете самую грубую точность, какую только может предоставить ваше приложение.

Надеюсь, что это поможет, а. Little.

9 голосов
/ 11 апреля 2011

В деловом районе крупного города триангуляция Wi-Fi и вышек сотовой связи очень хорошая.Жилые пригороды они не так хороши.В сельской местности они почти не работают, если работают вообще.

GPS не очень хорошо работает в помещении, и может потребоваться очень много времени, чтобы найти решение без помощи вышки сотовой связи (возможно, 20 минут !!).Спутникам требуется достаточно много времени для передачи достаточного количества информации, чтобы определить ваше местоположение, и могут возникнуть потери пакетов (облака, здания, деревья, горы и т. Д.).Стоит отметить, что надлежащий GPS высокого класса будет иметь антенну размером с баскетбольный мяч, ни один портативный GPS не сможет получить идеальный сигнал.

Даже на открытом воздухе с идеальным сигналом GPS не точен при быстром изменении направления (например на трассе или ветреной дороге).Параметр BestForNavigation использует акселерометр и гироскоп для компенсации этого.

В настоящее время платформа iOS использует:

  • GPS: очень точный, но мощный расход, медленный и не всегда доступный.некоторые устройства не имеют GPS.
  • WiFi: много потребляемой мощности и работает только в городе.Также может быть неверно настроен (например, разместить вас не в том городе)
  • Cell Tower: почти нет энергопотребления вообще, и он хорошо работает в городе.Не так здорово в сельской местности.Не существует на некоторых аппаратных средствах.
  • Акселерометр: небольшие улучшения в других исправлениях местоположения, но огромная потребляемая мощность.
  • Гироскоп: небольшие улучшения в других исправлениях местоположения, но огромная потребляемая мощность.Только для iPhone 4.

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

2 голосов
/ 11 августа 2010

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

Тем не менее, CLLocationAccuracy определено как typedf для удвоения, поэтому я думаю, что будет справедливо предположить, что kCLLocationAccuracyNearestTenMeters = 10.0, kCLLocationAccuracyHundredMeters = 100.0 и т. Д. Лучше всего либо 0, 1, либо kCLLocationAcureNess, скорее всего, они являются последними. чтобы помочь людям, как TomTom и т. д.

Если вы ДЕЙСТВИТЕЛЬНО хотите знать, вы можете распечатать значения - они просто удваиваются.

Я не верю, что количество спутников или мощность Wi-Fi изменяется в зависимости от вашей желаемой точности. Насколько я понимаю алгоритмы, есть приблизительное вычисление, которое, чем больше раз в цикле, тем более точным оно становится. Следовательно, менее точный просто залог раньше.

Но, опять же, более важный момент: это не имеет значения. Apple специально не описывает, что происходит за кулисами, потому что это не является частью дизайна. Конструкция такова: если вы используете kCLLocationAccuracyKilometer, вы получите ответ, который находится в пределах километра и т. Д. И теперь Apple может свободно изменять то, как они приходят к этому, не заботясь о вас. Такая изоляция является основным принципом объектно-ориентированного программирования.

РЕДАКТИРОВАТЬ:

ИСПРАВЛЕНИЕ. Я только сейчас наблюдаю сеанс WWDC на месте (сеанс 115), и примерно в 22:00 он говорит о том, как при использовании BestForNavigation это добавляет некоторую коррекцию гироскопа (когда она доступна). ) Однако он предупреждает, что, хотя это потребляет много энергии и ресурсов процессора, его следует использовать только при необходимости, как при пошаговой навигации.

Я не уверен, насколько больше я могу говорить об этом публично, но, если вы являетесь зарегистрированным разработчиком, вы можете получить сеансы из iTunes-U.

(это WWDC-2010, кстати.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...