Почему я получаю неправильную позицию GPS после didFailWithError?
Я разработал приложение для Apple Watch 2-3, которое использует внутренний GPS для сохранения трека и получения скорости, расстояния и т. Д.
Приложение написано на Swift, XCODE 9 и использует CLLocation.
Иногда CLLocation отправляет didFailWithError, следующие 3-5 местоположений GPS совершенно неверны, на расстоянии сотен метров от реальной точки. Я устанавливаю BestForNavigation и проверяю горизонтальную точность < 32м. Я фильтрую местоположения в прошлом.
Это происходит в основном с часами в воде, даже несколько сантиметров.
Кто-нибудь испытывал это?
Спасибо
1 ответ
Спутниковые сигналы GPS довольно слабые; Они передаются со спутников, находящихся на орбите около 20000 км над вами. Для получения точного местоположения GPS-приемник должен получить сигнал от 4 спутников (менее точное исправление можно получить, используя только 3 спутника).
Что еще хуже, часы имеют довольно маленькую антенну GPS, а микроволновые сигналы, используемые системой GPS, поглощаются такими вещами, как здания, деревья, тело человека и, особенно, вода.
Если честно, если учесть трудности, удивительно, что эта маленькая вещь на вашем запястье может найти местоположение вообще, не говоря уже с точностью до 10 метров.
Вам просто нужно приложить максимум усилий с данными, которые вы получите.