В чем разница между значимыми обновлениями об изменении местоположения и региона?

#iphone #objective-c #core-location

#iPhone #objective-c #ядро-местоположение

Вопрос:

Невозможно установить желаемую точность для значительного изменения местоположения. Я попробовал, и он вернул значение по умолчанию 1414 для horizontalAccuracy. Является ли метод обновления с изменением региона лучшим с точки зрения точности? Можно ли его установить и какова максимально допустимая точность при обновлении изменения региона?

Ответ №1:

Для -monitorForSignificantLocationChange нет точности. Это встроенный монитор, предназначенный для широкого обновления, с низкой точностью (но может быть достаточно точным в зависимости от приложения) и отличным временем автономной работы. Он работает по тому же принципу, что и метод -monitorForRegion. Он будет обновляться, когда посчитает, что вы переместили значительный бит (например, переход на вышку сотовой связи, новое подключение Wi-Fi и т.д.). Он также украдет / заимствует местоположение из других приложений, которые также используют местоположение. Таким образом, это может быть довольно точным, учитывая, как он получает ваше местоположение.

Если вам нужно точное местоположение в фоновом режиме… вам придется пожертвовать временем автономной работы. Единственная альтернатива — пожертвовать некоторой точностью определения местоположения. По моему опыту, местоположение, возвращаемое с помощью значительных изменений и мониторинга региона, довольно точное.

Для мониторинга региона могут потребоваться настройки точности. Но в основном это зависит от настроек вашего LocationManager. Как только вы перейдете в фоновый режим, вы снова окажетесь во власти системы. Я не уверен на 100%, что ваш -monitorForRegion сохранит установленный уровень точности, я предполагаю, что нет. В основном из-за ограничений на время автономной работы. Надеюсь, это поможет.

Комментарии:

1. Спасибо. Мне нужно поддерживать и отслеживать список мест, используя метод низкого заряда батареи, такой как GSM. В этом случае использование GPS строго запрещено. Было бы достаточно предупредить пользователя, когда он входит в зону радиусом 1-2 км (включая ошибки и точность). Я имею в виду, что зона радиусом 1-2 км — это реальная зона, в которой мне нужно проверить, находится ли пользователь. Итак, я хотел бы достичь максимальной точности с помощью GSM, и я подумываю об использовании желаемой точности с помощью kCLLocationAccuracyKilometer (не уверен в kCLLocationAccuracyHundredMeters, которые могут использовать GPS).

2. Я пытался использовать регионы с радиусом 1000 м с помощью kCLLocationAccuracyKilometer, но это не дало мне никаких обновлений, когда я ехал с работы домой на расстояние ~ 3 км. Затем я уменьшил радиус региона до 500 м и установил желаемую точность kCLLocationAccuracyBestForNavigation (GPS). Затем я получил уведомление. Я пытаюсь угадать, какой должна быть наилучшая комбинация радиуса региона и желаемых значений точности (GSM), которая будет работать во всех точках мира. Местом будет некоторый объект в аэропортах. Не могли бы вы посоветовать мне, если у вас есть какие-либо предложения?

3. Забыл упомянуть. Я также попытался установить радиус 1 м для регионов и использовал kCLLocationAccuracyKilometer. Я думал, что это даст отслеживание реальной зоны на 1001 км, но это не сработало. Итак, в настоящее время я пытаюсь использовать радиус региона 500 м и kCLLocationAccuracyKilometer. Вы пробовали с регионами, какие значения вы использовали?

4. Насколько я знаю, мониторинг региона не использует активный GPS для определения местоположения… он заимствует все, что сообщается с устройства во время обычной связи. Может быть GPS из другого приложения, может быть просто триангуляция ячейки или подключение Wi-Fi. Я бы подумал, что мониторинга значительных изменений и / или регионов должно быть более чем достаточно для точности 1-2 км. Удачи.