В путь с велонавигатором 2ГИС
На прошлой неделе мы показали новый навигатор — для велосипедов и самокатов. Рассказываем подробнее, как придумывали и рисовали его.
Сделать маршруты для велосипедистов мы хотели давно, но именно в 2020 особенно ощутили потребность — настал бум сервисов доставки, и многие курьеры пересели на велосипеды.
К нам пришли B2B-клиенты с запросами на API для велосипедной маршрутизации, которое помогало бы строить оптимальные маршруты и предсказывать время в пути. Мы приступили к разработке с прицелом, что в скором времени веломаршруты появятся в 2ГИС и будут использовать этот же API. Так и вышло!
Строим безопасный и кратчайший маршруты
Опросив велосипедистов, мы выяснили, что большинство катается по тротуарам и велодорожкам. Но есть и смельчаки, которые перемещаются по автомобильным дорогам — это курьеры, спортсмены и те, кто на велике ездит на работу.
Мы получили две явные группы, которые ездят по городу по-разному. Это подсказало нам, что базовых маршрутов должно быть два: без выезда на проезжую часть — для комфортного «любительского» катания; и с возможностью передвигаться по автодороге — для тех, кому важно добраться максимально быстро.
В приложении эти маршруты называются:
«безопасный» — без выездов на проезжую часть;
- «кратчайший» — с выездом на проезжую часть, где это разрешено ПДД.
Чтобы строить маршруты и по дорогам, и по тротуарам, нужно подружить два отдельных графа — автомобильный и пешеходный — и учесть правила перемещения велосипедистов по городу. А чтобы алгоритм нашёл оптимальный маршрут, ему нужно посчитать время преодоления разных типов дорог и препятствий. Нам пришлось попотеть, чтобы подобрать значения времени и настроить алгоритм так, чтобы маршрут вёл через дорогу в нужных местах, не перескакивал с дороги на тротуар и обратно, не делал слишком частых поворотов. Эта работа кипела до самого релиза и наверняка продолжится и после него.
Учитываем перепад высот
Мы составляем карту высот на основе агрегированных обезличенных данных с устройств пользователей. Чем больше разных маршрутов вы строите, тем больше данных о перепадах высот появляется у нас.
В приложении данные о высотах выглядят как диаграммы и шкалы на линии маршрута:
- диаграмма поможет оценить профиль местности на всём маршруте;
- цветовая шкала показывает, на каких участках дороги есть подъёмы.
Мы выбрали принцип раскраски, который напоминает пробки: в автонавигаторе мы показываем их жёлтым и красным, потому что пробки — это препятствие, проблема и стресс. Стресс для велосипедиста и водителя самоката — чаще всего подъём в горку:
- зелёные столбики — уклон менее 1,3 %,
- жёлтые столбики — уклон от 1,3 до 6 %,
- красные столбики — уклон от 6 % и больше.
На диаграмму уклоны переносятся так: столбик окрашивается в цвет, соответствующий самому крутому наклону вверх на этом участке пути. Считаем именно крутой подъём, а не средний перепад высоты на участке, так как подъём может компенсироваться крутым спуском. Тогда столбик пришлось бы красить в зелёный. Столбики серого цвета означают, что для этого участка у нас пока не хватает данных о высоте.
Показываем препятствия и разное покрытие дорог
Мы говорили о том, что подъём в горку — стресс для велосипедиста, но не только он! Грунтовка, ямы и кочки, насыпи из щебня, разбитый асфальт, а ещё лестница и калитки — масса препятствий. И мы их показываем. Данные о разных типах поверхности мы собирали годами и продолжаем обновлять, преодолевая тысячи километров на автомобилях и пешком, и рады, что можем делиться этой информацией.
В меню навигатора указано расстояние, которое придётся преодолеть по разным типам дорог (кстати, «плохая дорога» может быть как на грунтовке, так и на автодороге, где покрытие пришло в негодность и ехать по нему трудно).
На карте, на линии маршрута, эти типы поверхности получили свою особую раскраску (паттерн), которая ложится поверх градиента изменения рельефа. На подбор и настройку паттернов ушло очень много времени: было важно, чтобы они выглядели хорошо на градиентной подложке, хорошо считывались при езде, и, желательно, сами говорили о том, что означает каждый из них. Задача оказалось сложной и с точки зрения дизайна, и технически. Обязательно расскажем подробнее об этом в следующих статьях.
Лестницы, калитки, места въезда на новые типы поверхности мы отмечаем на карте иконками с подписями, чтобы не было разночтений. Также во время ведения мы предупреждаем о препятствиях и событиях нотификацией на месте диаграммы «рельефа». Например, за 200 метров до въезда на плохую дорогу появится предупреждение, которое задержится на несколько секунд, чтобы велосипедист успел его заметить.
Даём подсказки о манёврах
В велосипедном навигаторе мы использовали подсказки о маневрах и озвучку из пешего навигатора. Они хорошо зарекомендовали себя, поэтому пока мы решили в них ничего не менять. А вот маркер (синяя стрелка) взяли из автонавигатора — очень уж он красив и понятен.
Чтобы исключить лестницы и подземные переходы на всём пути, мы добавили в настройки отдельный фильтр — с ним приложение найдёт маршрут в обход всех лестниц. Часто проехать лишний километр проще и быстрее, чем тащить на себе велосипед через подземный переход. Здесь же есть фильтр автомобильных дорог: когда он включен, приложение будет искать маршруты без выезда на проезжую часть.
Когда ведение запущено, всю информацию о маршруте можно посмотреть в меню навигатора, потянув или нажав на панель ЕТА (индикаторы в нижней части экрана). Там собрано всё, что мы знаем о маршруте, а также доступ к настройкам, поиску и кнопке завершения маршрута.
Пользоваться навигатором для велосипедов можно в версии 6.2 под iOS и 6.3 под Android.
Круто, наконец-то. Часто езжу на велосипеде, и знать примерное время прибытия конечно очень важно
а типа яндекс карты и maps.me не умеют в маршруты для велосипеда уже давным давно? а у вас такая потребность в этом, что вы даже не смогли погуглить такой функционал ранее?)
Комментарий недоступен
Позабавил момент, что скрины с велонавигацией показаны на последнем айфоне. На велосипеде, зато с новым айфоном)
Для тебя наверное шоком окажется что люди иногда оставляют машину дома и едут на велосипеде.
Вы в городах давно бывали?) Я стараюсь использовать машину только в случаях самой крайней необходимости, ибо пробки и проблемы с парковкой. Велик очень выручает: отвезти ребенка, съездить на рынок, в пункт выдачи, в кафешку, в парк и т.д.
есть велосипеды по цене авто