/point-me

Редактор маршрутов

Primary LanguageJavaScript

Point-Me

Ссылка на GitPages ссылке

  Редактор маршрутов — одностраничное приложение, в котором пользователь в интерактивном режиме может создавать на карте маршрут, указывая начальную, конечную и промежуточные точки движения. Для каждой точки маршрута можно посмотреть ее адрес.

Использованные в проекте технологии:

React
webpack(create-react-app)
SCSS
react-yandex-maps
jester+enzyme

Описание:

  Новая точка маршрута добавляется с помощью ввода ее названия в текстовом поле и нажатия Enter, либо кнопки "Добавить новую точку в центр карты". Если поле ввода пустое, то задается стандартное имя - "Точка". После этого:

  • введенная точка маршрута отображается в конце списка уже добавленныхточек;
  • в текущем центре карты появляется маркер, обозначающий новую точку маршрута.

  Напротив каждой точки маршрута в списке находится кнопка удаления, при ее нажатии точка маршрута пропадает из списка, а с карты пропадает ее маркер.

Порядок точек маршрута в списке можно изменять перетаскиванием.

Маркеры, соответствующие точкам маршрута, можно перемещать по карте перетаскиванием.

Маркеры на карте соединены прямыми линиями в том порядке, в котором они находятся в списке. Полученная таким образом ломаная изображает маршрут, первая точка в списке — начало маршрута, последняя — конец маршрута.

При изменении порядка точек в списке или их удалении, а также при перемещении маркеров маршрут на карте автоматически перерисовывается.

При клике на маркер появляется балун, в балуне отображается название соответствующей ему точки.

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

Установка

В командной строке:

git clone https://github.com/fudgi/point-me
cd point-me
npm i

Далее, npm start для запуска в режиме отладки. Запуститься локальный сервер на порте 3000. Если автоматического открытия браузера и перехода не произошло, то произведите запуск вручную и перейдите на url: http://localhost:3000. npm run build - сборка билда проекта. npm test - проведение тестов. Тестируется каждый компонент по-отдельности. Для проверки отрисовки используются snapshot тесты, а проверку отработки событий проводится с помощью симуляций клика и mock-функций.

Реализация

Структура проекта:

 -app_container
    |
    -sidebar
    |   |
    |   -sidebar_element
    |
    -map

App_container хранит данные обо всех точках на карте(координаты, имя, цвет) и прокидывает их в сайдбар и на карту. За базу карт выбраны Яндекс.Карты, используемые через react-yandex-maps. Карта, получая точки, ставит placemark'и и соединяет их с помощью polyline. При перемещении точки на карте передвигаемая точка соединяется пунктирной ломаной с соседними точками. Данные о новых координатах передаются в родительский компонент. В проекте не использован стандартный editor, так как в нем, насколько я понял, невозможно реализовать нумерацию точек в самих точках, т.е. сделать так, чтобы каждая точка на карте имела номер и свой цвет, которые бы ее идентифицировали.