{"id":14277,"url":"\/distributions\/14277\/click?bit=1&hash=17ce698c744183890278e5e72fb5473eaa8dd0a28fac1d357bd91d8537b18c22","title":"\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0442\u0440\u044b \u0431\u0435\u043d\u0437\u0438\u043d\u0430 \u0438\u043b\u0438 \u0437\u043e\u043b\u043e\u0442\u044b\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u044f","buttonText":"\u041a\u0430\u043a?","imageUuid":"771ad34a-9f50-5b0b-bc84-204d36a20025"}

В путь с велонавигатором 2ГИС

На прошлой неделе мы показали новый навигатор — для велосипедов и самокатов. Рассказываем подробнее, как придумывали и рисовали его.

Сделать маршруты для велосипедистов мы хотели давно, но именно в 2020 особенно ощутили потребность — настал бум сервисов доставки, и многие курьеры пересели на велосипеды.

К нам пришли B2B-клиенты с запросами на API для велосипедной маршрутизации, которое помогало бы строить оптимальные маршруты и предсказывать время в пути. Мы приступили к разработке с прицелом, что в скором времени веломаршруты появятся в 2ГИС и будут использовать этот же API. Так и вышло!

Строим безопасный и кратчайший маршруты

Опросив велосипедистов, мы выяснили, что большинство катается по тротуарам и велодорожкам. Но есть и смельчаки, которые перемещаются по автомобильным дорогам — это курьеры, спортсмены и те, кто на велике ездит на работу.

Мы получили две явные группы, которые ездят по городу по-разному. Это подсказало нам, что базовых маршрутов должно быть два: без выезда на проезжую часть — для комфортного «любительского» катания; и с возможностью передвигаться по автодороге — для тех, кому важно добраться максимально быстро.

В приложении эти маршруты называются:

  • «безопасный» — без выездов на проезжую часть;

  • «кратчайший» — с выездом на проезжую часть, где это разрешено ПДД.
Два варианта — как красная и зелёная дорожка в «Умниках и умницах». Быстро, но рискованно или медленно, но спокойно.

Чтобы строить маршруты и по дорогам, и по тротуарам, нужно подружить два отдельных графа — автомобильный и пешеходный — и учесть правила перемещения велосипедистов по городу. А чтобы алгоритм нашёл оптимальный маршрут, ему нужно посчитать время преодоления разных типов дорог и препятствий. Нам пришлось попотеть, чтобы подобрать значения времени и настроить алгоритм так, чтобы маршрут вёл через дорогу в нужных местах, не перескакивал с дороги на тротуар и обратно, не делал слишком частых поворотов. Эта работа кипела до самого релиза и наверняка продолжится и после него.

Учитываем перепад высот

Мы составляем карту высот на основе агрегированных обезличенных данных с устройств пользователей. Чем больше разных маршрутов вы строите, тем больше данных о перепадах высот появляется у нас.

В приложении данные о высотах выглядят как диаграммы и шкалы на линии маршрута:

  • диаграмма поможет оценить профиль местности на всём маршруте;
  • цветовая шкала показывает, на каких участках дороги есть подъёмы.

Мы выбрали принцип раскраски, который напоминает пробки: в автонавигаторе мы показываем их жёлтым и красным, потому что пробки — это препятствие, проблема и стресс. Стресс для велосипедиста и водителя самоката — чаще всего подъём в горку:

  • зелёные столбики — уклон менее 1,3 %,
  • жёлтые столбики — уклон от 1,3 до 6 %,
  • красные столбики — уклон от 6 % и больше.
В режиме ведения график высот показывает, какая часть маршрута уже пройдена и что осталось впереди (как «градусник» из автонавигатора).

На диаграмму уклоны переносятся так: столбик окрашивается в цвет, соответствующий самому крутому наклону вверх на этом участке пути. Считаем именно крутой подъём, а не средний перепад высоты на участке, так как подъём может компенсироваться крутым спуском. Тогда столбик пришлось бы красить в зелёный. Столбики серого цвета означают, что для этого участка у нас пока не хватает данных о высоте.

Показываем препятствия и разное покрытие дорог

Мы говорили о том, что подъём в горку — стресс для велосипедиста, но не только он! Грунтовка, ямы и кочки, насыпи из щебня, разбитый асфальт, а ещё лестница и калитки — масса препятствий. И мы их показываем. Данные о разных типах поверхности мы собирали годами и продолжаем обновлять, преодолевая тысячи километров на автомобилях и пешком, и рады, что можем делиться этой информацией.

В меню навигатора указано расстояние, которое придётся преодолеть по разным типам дорог (кстати, «плохая дорога» может быть как на грунтовке, так и на автодороге, где покрытие пришло в негодность и ехать по нему трудно).

На карте, на линии маршрута, эти типы поверхности получили свою особую раскраску (паттерн), которая ложится поверх градиента изменения рельефа. На подбор и настройку паттернов ушло очень много времени: было важно, чтобы они выглядели хорошо на градиентной подложке, хорошо считывались при езде, и, желательно, сами говорили о том, что означает каждый из них. Задача оказалось сложной и с точки зрения дизайна, и технически. Обязательно расскажем подробнее об этом в следующих статьях.

Лестницы, калитки, места въезда на новые типы поверхности мы отмечаем на карте иконками с подписями, чтобы не было разночтений. Также во время ведения мы предупреждаем о препятствиях и событиях нотификацией на месте диаграммы «рельефа». Например, за 200 метров до въезда на плохую дорогу появится предупреждение, которое задержится на несколько секунд, чтобы велосипедист успел его заметить.

Один взгляд на линию маршрута даёт сразу всю нужную информацию: препятствия, тип поверхности, есть ли набор высоты.

Даём подсказки о манёврах

В велосипедном навигаторе мы использовали подсказки о маневрах и озвучку из пешего навигатора. Они хорошо зарекомендовали себя, поэтому пока мы решили в них ничего не менять. А вот маркер (синяя стрелка) взяли из автонавигатора — очень уж он красив и понятен.

Чтобы исключить лестницы и подземные переходы на всём пути, мы добавили в настройки отдельный фильтр — с ним приложение найдёт маршрут в обход всех лестниц. Часто проехать лишний километр проще и быстрее, чем тащить на себе велосипед через подземный переход. Здесь же есть фильтр автомобильных дорог: когда он включен, приложение будет искать маршруты без выезда на проезжую часть.

Когда ведение запущено, всю информацию о маршруте можно посмотреть в меню навигатора, потянув или нажав на панель ЕТА (индикаторы в нижней части экрана). Там собрано всё, что мы знаем о маршруте, а также доступ к настройкам, поиску и кнопке завершения маршрута.

Пользоваться навигатором для велосипедов можно в версии 6.2 под iOS и 6.3 под Android.

0
103 комментария
Написать комментарий...
Rax034

Позабавил момент, что скрины с велонавигацией показаны на последнем айфоне. На велосипеде, зато с новым айфоном)

Ответить
Развернуть ветку
Valentin Dombrovsky

Как Вы там в 90-х? На шестисотом Мерседесе ездите поди?

Ответить
Развернуть ветку
100 комментариев
Раскрывать всегда