Почему CLLocationManager так ленив, когда установлен с низкой точностью?
Я обнаружил с помощью тестов, что установка низкой желаемой точности для CLLocationManager
приводит к ошибочному поведению этого компонента.
Вот 2 теста, которые я сделал:
Установите желаемую точность
kCLLocationAccuracyHundredMeters
, Тогда устройство не может найти мою позицию так точно, как я хочу. Вот логи с моегоCLLocationManager
делегат:Accuracy is 1500.000000 (desired accuracy is 100.000000) Accuracy is 1500.000000 (desired accuracy is 100.000000)
Вот и все. Два события за 30 секунд с горизонтальной точностью 1500.
Установите желаемую точность
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 сжигает батарею намного больше, чем триангуляция, поэтому она не используется, если вам просто нужно поместить устройство в неровной области.