Насколько точны измерения точности CoreLocation? - PullRequest
5 голосов
/ 22 ноября 2011

Я проверял точность различных аспектов CoreLocation и был удивлен, обнаружив, что значение точности, предоставляемое в новых и старых местоположениях, передается методу CLLocationMangerDelegate: (void) locationManager: didUpdateToLocation: fromLocation само по себе дико неточно.

Проходя определенные участки тротуара (вдоль участка дороги со зданиями вдоль одной стороны), я обнаружил, что пока CLLocationManager заявляет, что поставляемые им CLLocations имеют горизонтальную точность 5 метров, на самом деле положение, показанное MKUserAnnotation, составляет что-нибудь на расстоянии до 30 метров от позиции, в которой я нахожусь (часто изображается как противоположная сторона ряда зданий). Это говорит о том, что сама точность показаний не является точной. CLLocationManager сообщает, что его координаты точны с точностью до 5 метров, но на самом деле они достигают 30 метров.

Чтобы уточнить, это не проблема кэширования / отметки времени. В некоторых областях это повторяется, а не то, что со временем улучшается.

Кто-нибудь еще сталкивался с этой проблемой?

Ответы [ 3 ]

8 голосов
/ 31 июля 2012

CoreLocation не человек и не знает, где вы «на самом деле», это суть ответа на ваш вопрос. Он использует датчики на вашем устройстве и дает вам лучший ответ, который у него есть, а проблемы с его способностью знать точность заявленного ответа отражают, что проблема местоположения по своей сути очень сложна.

Чтобы перейти к самим данным о местоположении: CoreLocation извлекает данные из триангуляции вышек сотовой связи, близлежащих идентификаторов SSID и, наконец, GPS, чтобы определить местоположение устройства. Они имеют разную степень точности, но их объединяет то, что если вы дадите устройству работать дольше, вы получите более точный ответ. Однако, поскольку все инструменты, которые использует CoreLocation, дороги с точки зрения времени автономной работы, он прекратит работу, как только получит ответ, который соответствует вашим критериям «достаточно хорошо».

Вот почему другой ответ велел вам установить желаемую точность на kCLLocationAccuracyBestForNavigation - когда вы это делаете, вы в основном говорите CoreLocation «покажите мне лучшее, что у вас есть», и вы Мы также добровольно вызвались нагрузкой на процессор, временем и расходом батареи. Вы также вышли за пределы обычной шкалы, которую использует CoreLocation, чтобы выяснить, что является «достаточно хорошим» - вместо того, чтобы заранее сказать, когда он может остановиться, вы в основном сказали: «Я скажу вам, когда это будет достаточно хорошо».

Таким образом, CoreLocation будет пытаться дать вам лучшие ответы, пока вы не скажете, что все готово, и вам нужно будет выполнить свою ответственность за принятие решения, что это за точка. Здесь также необходимо помнить о том, что существуют пределы того, насколько точными могут быть инструменты в репертуаре CoreLocation - вы можете получить много значительных цифр широты и долготы, но рискуя отойти от шкалы, Вы вызвались для выяснения, насколько эти цифры заслуживают доверия. Предопределенные шкалы точности составляют 10 метров, 100 метров, 1 км и 3 км. Тот факт, что создатели CoreLocation выбрали эти точки отсечения, должен сказать вам кое-что о сложности проблемы - если бы лучшая точность была легкой, она, вероятно, уже была бы в структуре.

Итак, оборачиваясь назад: CoreLocation достоверно сообщает о точности своих ответов, просто данные, лежащие в основе этого ответа, проблематичны, и если бы он знал больше о точности своих требований о точности, он бы отражал это в своих заявлениях о точности , Рассмотрим гипотетическую ситуацию, когда CoreLocation точно знает, насколько точны ее утверждения о точности, а затем ситуацию, когда CoreLocation ничего не знает о том, насколько точны его утверждения о точности, и рассмотрим, как можно разработать API для учета этой проблемы. CoreLocation уверен в том, насколько он может быть разумным, и если вы можете придумать способ, которым можно быть уверенным в том, насколько вы уверены, то в App Store вас ждет богатство App Store вы.

4 голосов
/ 30 июля 2012

аппаратному обеспечению требуется некоторое время, чтобы получить точность.лучшая точность - 65 м за 2-3 секунды.иначе у вас есть точность 1414 м

0 голосов
/ 22 ноября 2011

Установите требуемая точность на kCLLocationAccuracyBestForNavigation

И это лучшее, что вы можете получить.

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