Я пытаюсь понять это и думаю, что что-то можно сделать с помощью CLLocationManager
distanceFilter
. Свойство позволяет ограничить didUpdateToLocation
делегирование вызовов для обновлений, которые, по крайней мере, на минимальном расстоянии от предыдущего обновления. Например, с проблемой одометра, скажем, вы стоите, но gps беспорядочно сообщает о позициях 1 м вокруг вас. Если вы установите distanceFilter
на 2, то ни одно из этих обновлений не будет зарегистрировано как движение.
Хитрость заключается в том, чтобы найти значение distanceFilter
, который работает, и я считаю, что это как-то связано с horizontalAccuracy
от GPS (который я предполагаю, является причиной ошибочных обновлений) и скорость, с которой вы путешествуете , horizontalAccuracy
должен быть хорошим с активностью на открытом воздухе, но предполагается, что эти небольшие неточности накапливаются и вызывают неправильное считывание показаний одометра.
Если каждый вызов didUpdateLocation
вводит небольшое количество ошибок (скажем, до 10 см в чтении), то это имеет смысл, медленная активность, такие как ходьба будет грубо неточной, если вызов был сделан каждый метр на didUpdateToLocation
. Это будет до (10 см/1 м =) 10% от ошибки за обновление. Если это было сделано в автомобиле, движущемся со скоростью 100 км/ч, а distanceFilter
были установлены на 10 м (что является безопасной установкой, так как автомобиль, движущийся со скоростью 100 км/ч, будет двигаться очень близко к прямой линии более 10 м), то та же ошибка 10 см будет иметь максимум (10 см/10 м =) 1% ошибки за обновление. Скорее всего, это сложнее, но я пытаюсь проиллюстрировать, что скорость играет определенную роль.
Я думаю, что решение состоит в том, чтобы выбрать значение для distanceFilter
, что минимизирует ошибочные обновления, но, самое главное, учитывает скорость пользователя (например, с автомобилем в предыдущем примере). Кто-нибудь хочет найти алгоритм или формулу?
Вы нашли ответ на этот вопрос? – chris
Я думаю, что идея использования фильтра нижних частот звучит, но у меня еще не было возможности попробовать это. – Avalanchis