SVG создает узлы, доступные через DOM, а canvas - нет. поскольку canvas не создает DOM-узлы, в большинстве браузеров он рендерится быстрее, чем SVG. Если вы извлекаете информацию из базы данных на основе действий пользователя, может быть проще управлять событиями и манипулировать картой с помощью SVG. Тем не менее, вы также можете обрабатывать пользовательские события на холсте, просто отслеживая положение мыши относительно холста. Это будет означать сопоставление координат для комнат и т. Д. С координатами (x, y) на холсте, что может быть неприятно, если ваши требования по какой-либо причине изменятся.
Я просто размышляю, но можно разместить каждую комнату в виде отдельного изображения на холсте - по сути, составив комнаты вместе, составив карту здания. Где изображение должно быть размещено и путь к файлу изображения для каждой комнаты может быть сохранен в БД в качестве атрибутов комнаты, что добавляет некоторую гибкость для непредвиденных непредвиденных ситуаций в будущем. Затем вы можете легко нарисовать ваши маршруты с контекстным перемещением и переносом поверх комбинированных изображений.