Задать вопрос

Как реализовать таксометр?

Делаю таксометр для онлайн такси. Каждые несколько секунд на сервер отправляются координаты водилы (широта и долгота). И потом по Гаверсинусу вычисляем расстояние. Но есть одно но - не учитываются повороты и т. д. считается расстояние по прямой. Правильно ли так делать? Или есть более точный метод рассчета?
  • Вопрос задан
  • 1751 просмотр
Подписаться 7 Оценить Комментировать
Решения вопроса 2
@semt1
Если это для определения стоимости поездки до заказа - то через API карт.
Если это для определения реально пройденного растояния - то просто часто снимать показания, повороты тоже будут учтены.
Ответ написан
Комментировать
@IveLeen
Насколько я знаю во всех таксо-приложениях расстояние от водилы до клиента измеряется именно по прямой. Очень интересно когда клиент стоит на набережной и ему назначают водилу, который курит на другом берегу, да до него метров 300-400, но по дорогам он проедет километров 15-20. Более точный метод расчета - нейросети, например алгоритмы яндекса по построению маршрутов.

Но, суть вопроса чуть в другом. Таксометр. Несколько секунд это сколько?? Например секунд за 5-10 водила не успеет очень далеко уехать, пусть он за эти пять секунд трижды повернул, расстояние особо не изменится, и показания таксометра можно считать достоверными.

Вероятно, нет другого выхода, как только считать расстояние по прямой, НО чем чаще интервал позиционирования, тем точнее будет пройденное расстояние.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
teknik2008
@teknik2008
Расскажите про GOLANG. Мне интересно
А в чем проблема взять api карт, построить маршрут из точек и вам дадут расстояние.
А так у вас ломаная и множества точек, и посчитайте каждый отрезок, и сложите.
Ну а вообще проще получать км от авто, и время пути.
Ответ написан
@buhantsev
Я бы предложил не отправлять на сервер координаты, а вычислять пройденный путь на устройстве, а на сервер отправлять пройденное расстояние. Либо отправлять на сервер трек в упакованном виде с более частым снятием показаний (например как здесь https://habrahabr.ru/post/318796 или здесь https://developers.google.com/maps/documentation/u...
Ответ написан
Комментировать
freeExec
@freeExec
Участник OpenStreetMap
Проблема кривых треков решается сматчиванием трека с графом дорог. Так что если хотите более точных показаний расстояний то копайте в эту сторону. Вот ребята пилят удобный граф под это дело, но я читал по диагонали, не знаю насколько там завершено.
Ответ написан
Комментировать
@IlliaKharytonov
Вообще это делается так: специальный инженер ставит специальный девайс на машину (собственно, таксиметр), который имеет сенсор, связанный с трансмиссией, и который передаёт на таксиметр электрический сигнал каждые 100-200 метров. Инженер затем садится и едет заранее известное расстояние, чтобы "обучить" сенсор. Когда водитель нажимает кнопку (пассажир взял такси), начинается отсчёт времени. Девайс запрограммирован так, что если в течение какого-то времени (например, 30 секунд) он не получает сигналов, то он считает, что начался простой, и начинает считать время за простой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы