Можно ли использовать только мониторинг региона + GSM и получить точность не более 5 км по горизонтали? - PullRequest
5 голосов
/ 07 ноября 2011

Я хотел бы поделиться информацией о моих выполненных сценариях тестирования и попросить вас поделиться своим опытом с мониторингом региона. Итак, я зарегистрировал две противоположные области (A и B) с радиусом 5 км и желаемой точностью 1 км с расстоянием между ними 20 км. Однако я не получил никаких событий didEnterRegion / didExitRegion при путешествии от A к B. В моем прототипе приложения я также поместил две кнопки (для целей тестирования): одна запускает значительное изменение, а другая - стандартный мониторинг местоположения. Обе распечатки делали события didUpdateToLocation на экране-журнале.

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

Итак, вернемся к моему делу. После получения такой большой ошибки в 8 км я включил стандартный мониторинг с лучшей точностью (GPS). И, бинго, я получил событие didUpdateToLocation с горизонтальной точностью 399 м, и только тогда я получил didExitRegion из моего начального места (регион A) и другое событие с didEnterRegion (B). Еще одно обновление от didUpdateToLocation, где чуть точнее - 50м.

В предыдущих сценариях я также получал нестабильную точность. Иногда были 4 км горизонтальной точности, иногда меньше. Но главный вопрос в том, что если мы хотим сохранить батарею (Apple учит нас этому в документах), то можем ли мы полагаться только на мониторинг региона + GSM без использования GPS? Есть пример кода Apple с «правильным использованием мониторинга региона» ( здесь ), однако там есть некоторые недопустимые вещи:

1) Они утверждают, что образец кода работает только для iPhone4, хотя в документации Apple говорится, что на iOS4.0 + поддерживаются как региональный, так и значительный мониторинг. Круто, ха?

2) В примере кода используются все 3 метода определения местоположения: значимый, стандартный, регион. Он использует мониторинг региона все время, но в дополнение использует стандартное местоположение с наилучшей точностью. Когда приложение переходит в фоновый режим, оно останавливается и начинает мониторинг значительных изменений. При входе на передний план приложение перестает существенным и начинает стандартное местоположение. Похоже, документы Apple довольно расплывчаты, неясно, какие штрафы (горизонтальная точность) мы получаем, если мы используем только мониторинг региона, или мы всегда должны использовать все три метода?

3) Документы Apple утверждают, что нам необходимо сохранить батарею и использовать в качестве минимального количества служб определения местоположения, если нам нужно. Если нам не нужен GPS, то мы должны использовать GSM (например, требуемая точность 1–3 км). Но пример кода использует наилучшую желаемую точность (GPS) как для мониторинга региона, так и для стандартного мониторинга (когда приложение находится на переднем плане). Я понимаю, что GPS решит все мои проблемы с ошибками и точностью, но как насчет использования только GSM? После получения 8,5 км горизонтальной точности в моем сценарии я не уверен, возможно ли вообще использовать мониторинг региона, потому что он не может обеспечить приемлемую ошибку по крайней мере на 5 км.

1 Ответ

1 голос
/ 15 ноября 2011

По моему опыту, мониторинг региона является довольно точным без существенной потери ресурса батареи. У меня есть сценарий использования регионов шириной всего 30-50 метров. Никаких проблем с точностью. Скажу одно: я настроен только на iPhone 4 и выше. Мне нужно будет внести некоторые изменения, о которых вы говорите, если я хочу поддерживать модели 3GS.

Если вы полагаетесь исключительно на -startMonitoringForRegion, ваши обновления автоматически инициируют события -didEnter и -didExit. Они запускаются через комбинацию событий отслеживания местоположения. Значительные изменения, переводы сотовой вышки, подключение к Wi-Fi, расположение других запросов приложений и некоторые другие. ОС обрабатывает, когда обратные вызовы запускаются из этих других общих событий местоположения. По моему опыту, это было очень точно. Но это только для iPhone 4 и выше.

Я также использовал пример приложения от Apple для настройки, но в документации не так много подробностей о том, когда и где вы получите свой триггер. Вы можете прочитать о том, что Apple предоставляет в Руководстве по информированию о местонахождении. Надеюсь, это поможет.

...