tl; dr: Это действительно довольно просто - вы получаете столько информации, сколько Apple может дать вам о том факте, что вы пересекаете границы вышек сотовой связи, то есть совсем не очень хорошие данные.
Теперь реальная история:
Как правило, есть только несколько способов, которыми CoreLocation может определить свою позицию:
- По GPS.Это очень точно (десятки метров), но потребляет много энергии.
- По WiFi.Это , как правило, точно, хотя базовые станции Wi-Fi могут изменяться, что делает их нечеткими.Этот метод выполняет перекрестные ссылки на станции Wi-Fi в этой области по сравнению с некоторыми известными точными местоположениями - поэтому он знает, когда он видит «FooWifiStation», что он связан с определенной областью, измеренной точными инструментами, или, возможно, даже другими телефонами с включенным GPS (которыйявляется спорным, мы никогда не узнаем, если Apple, использует этот метод)
- местоположений ячейки башни.Они не двигаются, поэтому он знает, что вы находитесь в большой нечеткой точке покрытия, когда вы связаны с башней.Это наименее точное, но наименее энергозатратное решение, поскольку ваш телефон уже выполняет работу, чтобы оставаться на связи.
Вы даже можете увидеть это, если зайдете вПриложение карт «холодное»: вы сразу же начинаете с большой нечеткой синей точки (по крайней мере, в 1 км от места, где я нахожусь), затем оно сжимается при получении определения местоположения Wi-Fi, а затем более или менее исчезает, когда GPS получает свое исправление.Он выполняет [cell tower] => [wifi] => [gps] в режиме реального времени.
По моему опыту, пункт «значительное изменение местоположения» означает «Мы сообщим вам, когда вы переедете вбольшой путь, , если нам не нужно больше работать или тратить больше сил, чтобы получить эти данные . Это означает, что де-факто самое лучшее, на что вы можете положиться, - это использовать переходы междуApple намеренно оставил это расплывчатым, потому что, если другое приложение использует что-то с более высоким разрешением - скажем, вы открываете Maps.app, и оно получает исправление GPS - возможно, вы внезапно получите отлично исправить местоположение, но вы не можете полагаться на то, что это всегда так. Вы попросили "слабую ссылку" на местоположение.
Теперь подумайте о том, что происходит, когда вы бродите в своей машинеВаш сотовый телефон должен управлять этим переходом. Он передается, разговаривает с несколькими башнями одновременно, такого рода вещи, чтобы управлять плавным переходом, который должен быть жизнеспособным в то время какВы разговариваете .Просто это довольно изящный подвиг для любой маленькой коробочки.Обязательно, это приведет к появлению некоторого отскока в обновлениях местоположения, потому что в данный момент для телефона вы вибрируете между вышками сотовой связи, когда он согласовывает переход.
Так, что на самом деле означает радиусЭто то, что вы заинтересованы в данных примерно такой точности, но API не будет гарантировать, что вы получите обновления в пределах этого радиуса.Вы можете думать об этом как о том, что Apple говорит: «Мы собираемся объединить вашу точность в одну из трех групп - но мы не дали вам список, потому что мы хотим оставить за собой право разрабатывать более эффективные методы определения вашего местоположения безВы должны изменить свой код ".Конечно, в действительности любое реальное приложение изменится, если они поменяют свой метод получения местоположения, потому что они раздражающе расплывчаты в этом материале о местоположении.
Другими словами, вы получитеопределение местоположения в вышке сотовой связи с некоторыми полностью выдуманными предположениями о том, насколько хороша эта точность;когда вы переходите к следующей башне, вы мгновенно переходите к ее местоположению с таким же нечетким исправлением - имеет ли это смысл?CoreLocation сообщает вам, что вы на вышке сотовой связи с точностью до того, как далеко достигает сигнал вышки сотовой связи;когда вы перейдете к другой башне, вы, вероятно, получите бодрость передачи.
Так что, когда дело доходит до того, чтобы действительно хорошо выполнить свою работу, вы должны предположить, что данные относятся к категории "отлично", "хорошо" или "плохо", и использовать другие методы, например фильтры Калмана - если вам действительно нужно лучше угадать, где находится пользователь.В качестве приближения нулевого порядка я бы просто отменил обратные вызовы на основе time обновления, которое дано, и предположил, что пользователь на самом деле не прыгает километры назад и вперед в течение нескольких секунд,скорее, путешествуя в направлении первого нового обновления.