2016-06-08 4 views
0

У меня есть центральный тег SVG, в котором динамически отображаются несколько элементов, таких как rect, circle и т. Д. Как я могу подключить эти два.Как подключить два элемента в теге SVG?

Я попытался с помощью jsPlumb но this страницы в jsPlumb блоге утверждает, что

ПРОБЛЕМА Вы не можете соединить два Rect элемента (или любую SVG форму) напрямую. Это связано с тем, что формы внутри элемента SVG не имеют одинаковой информации о местоположении, как и все другие элементы DOM. Итак, теперь у вас есть эта разметка:

Я изучаю с двух дней, чтобы искать способ, но все библиотеки соединяют два DIV вместе или два тега SVG. Есть ли способ объединить SVG ELEMENTS вместе?

ответ

-1

Я думаю, что решение описано в вашем link (раздел «РЕШЕНИЕ»). Вам нужно определить способ вычисления смещения для каждой фигуры, а затем переопределить некоторые методы jsPlumb (getOffset и getSize).

Затем вы сможете использовать JSplumb для подключения прямоугольников.

+0

Я читал это. У меня будет много разных типов фигур, даже пользовательских фигур, поэтому определение координат или смещений каждой фигуры будет не очень эффективным. – Arihant

+0

Также не составит труда определить смещение настраиваемой фигуры. Вы просто получаете координаты четырех самых дальних точек на фигуре в каждом направлении: верхний, самый правый, самый нижний, самый левый (в формате '{x, y}'). Затем используйте для вычисления смещений ширину 'rightmost.x-leftmost.x' и height' lowerommost.y-topmost.y', так как вы будете использовать ширину и высоту прямоугольника для вычисления его смещения. – Tex

+1

Возможно, вам захочется воспользоваться библиотекой SVG, которая предлагает функцию getBBox() '(get bounding box), или написать ее самостоятельно. Ограничивающий прямоугольник должен быть прямоугольником с четырьмя координатами '[[leftmost.x, topmost.y], [rightmost.x, topmost.y], [rightmost.x, bottomommost.y], [leftmost.x, bottommostost. у]] '. Используемая вами реализация 'getBBox()' должна быть достаточно общей, чтобы возвращать ограничительную рамку для любой формы, в которой вам нужно будет найти смещение, и в этом случае вы можете покончить с калькуляторами для каждой фигуры и просто использовать каждый ограничивающий прямоугольник для вычисления вашего смещения. – Tex

Смежные вопросы