Почему CLLocationManager так ленив, когда установлен с низкой точностью?

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

Вот 2 теста, которые я сделал:

  1. Установите желаемую точность kCLLocationAccuracyHundredMeters, Тогда устройство не может найти мою позицию так точно, как я хочу. Вот логи с моего CLLocationManagerделегат:

    Accuracy is 1500.000000 (desired accuracy is 100.000000)
    Accuracy is 1500.000000 (desired accuracy is 100.000000)
    

    Вот и все. Два события за 30 секунд с горизонтальной точностью 1500.

  2. Установите желаемую точность kCLLocationAccuracyBest, Тогда устройство находит меня! Же журналы:

    Accuracy is 1500.000000 (desired accuracy is -1.000000)
    ...
    Accuracy is 162.957953 (desired accuracy is -1.000000)
    ...
    Accuracy is 76.356886 (desired accuracy is -1.000000)
    ...
    Accuracy is 47.421634 (desired accuracy is -1.000000)
    

    Я нахожусь в том же месте, где я был для теста 1, но на этот раз устройство способно найти мое местоположение с точностью, которую я сначала хотел (т.е. 100,0).

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

Мой вопрос:

"Кто-нибудь знает, почему устройство iPhone не старается найти мою позицию, когда я установил точность kCLLocationAccuracyHundredMeters?"

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

Спасибо, что поделились своим опытом. (тесты проводились с устройством 3GS через Wi-Fi и телефонную сеть)

1 ответ

Решение

Более детальные настройки попытаются найти вас только с помощью триангуляции Cell и Wi-Fi, что не совсем точно. kCLLocationAccuracyBest собирается включить модуль GPS и использовать его, который должен находиться в пределах нескольких футов. Это не ошибка, вы получили точность, которую вы просили в обоих случаях.

Разница в том, что GPS сжигает батарею намного больше, чем триангуляция, поэтому она не используется, если вам просто нужно поместить устройство в неровной области.

Другие вопросы по тегам