nemodufruine
@nemodufruine
Иженер телекомуникаций

Как создать карту аудиторий с построением пути между ними?

Коллеги, подскажите как создать интерактивную карту для сайта, похожую визуально на эту, но чтобы была возможность проложить маршрут между двумя аудиториями. Важно, чтобы этажи находились слоями. Возможно есть какие то сервисы картографирования? Спасибо.
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 3
trapwalker
@trapwalker
Программист, энтузиаст
Однозначно SVG.
Прорисуйте на плане все возможные осмысленные пути. Там где они стыкуются/разветвляются будут узлы графа. Рёбра - это линии между узлами. Каждому ребру дайте свой идентификатор, желательно текстовый и осмысленный. Можно дополнительно зашифровать в нём номер корпуса и этажа.
У каждого узла тоже должен быть свой идентификатор.
В бэкенде у вас будет граф в виде матрицы связности узлов.
С помощью алгоритма Дейкстры в этом графе ищется путь. Идентификаторы рёбер этого пути перечисляются и на основе их формируется CSS правило, которое в SVG подсветит соответствующие рёбра.
Кнопки переключения слоёв и код, который это будет делать можно встроить в сам SVG.
Ответ написан
@AleksRap
На мой взгляд проще реализовать на svg
Ответ написан
Adamos
@Adamos
Картографирование-то тут при чем? Дискретные пути. Нарезаете коридоры на отрезки, лестницу считаете таким же отрезком. На каждом этаже определяете набор отрезков от каждого кабинета до лестницы (до каждой лестницы, если их несколько). Определяете для каждой пары кабинетов либо кратчайшее сочетание "до лестницы - по лестнице - до кабинета", если они на разных этажах, либо ближайшее к одному из кабинетов пересечение их маршрутов до лестниц, отбрасывая участки от этого пересечения до лестницы. Останется путь от кабинета до кабинета на одном этаже.
Каждому отрезку сопоставляете его длину (для расчета оптимальных путей) и графическое отображение на карте. Запихиваете эту инфу и описанные выше функции выбора путей в JS внутри SVG, получаете интерактивную карту.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы