2015-04-28 2 views
1

Я пытаюсь сделать приложение для отслеживания в Android. Я использую Fused Location Api, и, как было сказано на многих разных сайтах, я фильтрую местоположения по его точности.Плохая точность в плавном расположении Api

public void onLocationChanged(Location location) { 
    if (location.getAccuracy() <= 10.0f && location.hasAccuracy()) { 
    //saveLocation(); or whatever 
    } 

Код более подробно разработан, это только для отражения идеи.

Приложение рисует Polyline, пока я иду, и я получил место каждые 5 секунд. И если GPS не включен, я говорю, что пользователь должен включить его.

Проблема (я не могу загружать изображения, чтобы описать ее), что мой путь/маршрут, линия, странные кривые, ходят внутри зданий и т. Д. ... и я не знаю как просто держать линию на улице ...

Если я перехожу на «старый» API, с locationManager и т. д., я бы получил лучшие места? Или есть другой способ с Fused Location?

Спасибо!

+0

Может быть, если я просто tqke точек каждые * больше * секунд ... линия будет более прямой. (но если я изменю свое направление, он тоже пройдет через здания). Я не вижу решения. – msfogg

ответ

0

Сигнал GPS обычно довольно «шумный». По моему опыту (в основном с менеджером местоположений), даже когда приемник неподвижен, последовательные измерения gps могут «прыгать» на целых 10 м. Соединение необработанных точек данных с полилиниями, вероятно, будет иметь очень зазубренный путь.

Мое предложение - сделать выборку быстрее и отфильтровать данные. Существует множество способов фильтрации. Например, вы можете просто усреднить самые последние значения N широты (и сделать то же самое для долготы) - фильтр «средний». Более сложный подход будет использовать знания относительно вероятных скоростей и изменений в направлении (например, фильтрация Калмана).

 Смежные вопросы

  • Нет связанных вопросов^_^