Gojs - подсвечивать узлы при выделении мышью на экране - PullRequest
0 голосов
/ 27 июня 2019

Я использую библиотеку https://www.npmjs.com/package/@simonwep/selection-js, чтобы выбрать область на экране.У меня есть карта Gojs, где я хочу выделить все узлы внутри области, которую я выделил мышью.

Дело в том, что значения координат, которые я получаю от Gojs, не имеют смысла ..

У меня есть узел в верхнем левом углу карты, где x должен быть 0, а y также 0.

Когда я использую var docloc = this.diagram.transformDocToView(node.part.location);

, значения равны {x: 46.79957533551601, y: 13.364121297226063}

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

Когда я использую node.part.actualBounds.size

Я получаю {width: 313.7058502906977, height: 82.43768168604652}

Что неверно !!

Я рисую маленькую область мышью вокруг узла выше и вижу ширину 94px.

Пожалуйста, помогите !!

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

После некоторого копания я получил следующее решение:

const nodePosition = this.diagram.transformDocToView(node.actualBounds.position);
const nodeCenter = this.diagram.transformDocToView(node.actualBounds.center);
const nodeBoundaries = {
          x1: nodePosition.x,
          x2: nodePosition.x + (nodeCenter.x - nodePosition.x) * 2,
          y1: nodePosition.y,
          y2: nodePosition.y + (nodeCenter.y - nodePosition.y) * 2
};

Я рассчитал границы узла, используя координаты центра.

Я должен был transformDocToView сначала !!

0 голосов
/ 03 июля 2019

У вас есть шаблон узла, которым вы можете поделиться?Координаты GoJS не соответствуют оконным координатам, поэтому вам, вероятно, потребуется выполнить и это преобразование.

...