У меня возник вопрос: есть ли способ связать данные местоположения GPS с ранее загруженным маршрутом из API указаний google? Я знаю, что есть API Snap-to-road, но я хочу заставить его связать точку с конкретным маршрутом, к тому же привязка к дорогам не имеет режима «ходьбы». Любые идеи о том, как это сделать? С уважениемСвязанный сенсорный GPS-прием по пути от направления API
ответ
Путь простой полилинии (набор сегментов). Вам просто нужно найти ближайшую точку полилинии. Это означает, что один из двух вариантов ближайшего конца сегмента или ближайшая точка проекции к любому из сегментов. Затем вам потребуется некоторый порог (как правило, основанный на точности приемника GPS-приемника). Для расчетов определенно вам следует искать некоторую геопространственную библиотеку, работающую с java и Android. Для небольших площадей (допустим, если минимальный ограничивающий прямоугольник маршрута меньше 100 х 100 миль), то вместо геодезических можно использовать вычисления евклидова. Не забудьте увеличить длину одной градуса долготы (одна градус широты всегда равна 60 Нм).
Отказ: Я работаю для Pathsense.
У нас есть и продолжайте работать с провайдером местоположения, чтобы предоставить в реальном времени (или немного задерживается, в зависимости от того, как вы его настроили), сопоставленные с картами обновления местоположения для Android. Однако:
Он использует GPS и датчики для обеспечения он остается в правильном пути, так что он может использовать немного больше энергии, чем GPS, если не управлять должным образом (как и любой поставщик местоположения).
Хотя установка его на
0
по-прежнему улучшает работу при сопоставлении карт, чем GPS, если пользователь работает в области с большим количеством высотных зданий, обновление местоположения по-прежнему может пойти по неверной дороге на короткое время , Функция задержки важна, если вам не требуется немедленное обновление, так как она дает библиотеке больше времени для определения правильной дороги, на которой пользователь включен.
Pathsense демо репо:
https://github.com/pathsense/pathsense-samples-android/tree/master/pathsense-invehiclelocationdemo-app
Однако, если вам просто нужно иметь карту согласованный путь, который не в реальном времени или близко к нему, а также оснастку Google на дороге вам не подходит , Я нашел эту классную библиотеку, которая может быть полезна. Я еще не пробовал это сам, поэтому не могу сказать, как хорошо это работает, но может быть интересным для изучения.
GraphHopper библиотека репо:
https://github.com/graphhopper/graphhopper
Я нашел способ, чтобы найти ближайшую точку к полилинии и проекцию точки на этой ломаной линии в http://stackoverflow.com/questions/36104809/find- the-closeest-point-on-polygon-to-user-location (спасибо снова всемогущему antonio), но мне все равно хотелось бы узнать ваше мнение о наилучших способах сопоставления этого типа карт. – Poider12
Я использую метод, который я предложил в решении для исправления ошибок, связанных с точностью GPS (ошибки GPS очень коррелированы во времени, поэтому данный путь все больше и больше не остается таким же, как и время), поэтому я считаю, что это лучший вариант, если вы не хотите использовать функцию Snap to Roads из API Google Maps Roads – antonio
Большое спасибо @antonio! Еще одна вещь: есть ли у вас функция, которая вместо того, чтобы получать путь, происхождение, расстояние (например, предоставленную экстраполяцию), получает путь, происхождение и точку в этом маршруте и выводит расстояние? – Poider12