Goo_man
@Goo_man
Основатель Template Robot

Программирование векторного слоя

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

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

Пока что я рассматриваю в качестве технологии реализации данного интерактивного элемента JavaScript. Flash недопустим, по оговоренности в задаче. Еще есть мысли об использовании HTML5 Canvas, но пока что я не знаю его возможностей, так как никогда не работал с ним.

Кто что думает по поводу того, какую технологию выбрать для реализации? Может есть советы от тех, кто уже делал что-то подобное.
  • Вопрос задан
  • 2709 просмотров
Пригласить эксперта
Ответы на вопрос 3
Laplace
@Laplace
Ничего в этом не понимаю, но СЛЫШАЛ, что при использовании HTML5 Canvas работать с геометрией как с вектором не выйдет, т.к. объекты сразу растеризуются и все трансформации потом делаются уже с растром.
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
А почему не SVG?

Canvas — очень низкоуровневое API, чтобы рисовать с его помощью векторы, придется написать немаленькую обертку (хотя, может, что-то уже есть).
Ответ написан
dom1n1k
@dom1n1k
Если использовать Canvas непосредственно, через его родной API — да, никакого вектора там не будет. Что в растр упало, то пропало.
Но существуют фреймворки-надстройки, которые в большей или меньшей степени дают векторные возможности.
Навскидку: Processing.js, MooTools Canvas Library, Gury, Paper.js, CanvasXpress, LibCanvas, jCanvaScript (авторы последних двух присутствуют на Хабре). Все они легко гуглятся. Посмотрите доки, может что-то и подойдет.
Кроме того, есть куча библиотек более узкого профиля, например рисование графиков-диаграмм или отображения карт по тиру Google Maps.

Если говорить, о SVG, то обучно вспоминают библиотеку Raphael (автор на Хабре есть). Хотя она, конечно, не единственная.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы