Если вы хотите получить что-то вроде:
затем этот код добавляет круг к узлу, зная его идентификатор:
function addCircle(nodeId, circleText){
var parentNode = cy.$('#' + nodeId);
if (parentNode.data('isCircle') || parentNode.data('circleId'))
return;
parentNode.lock();
var px = parentNode.position('x') + 10;
var py = parentNode.position('y') - 10;
var circleId = (cy.nodes().size() + 1).toString();
parentNode.data('circleId', circleId);
cy.add({
group: 'nodes',
data: { weight: 75, id: circleId, name: circleText, isCircle: true },
position: { x: px, y: py },
locked: true
}).css({
'background-color': 'yellow',
'shape': 'ellipse',
'background-opacity': 0.5
}).unselectify();
}
// ...
addCircle('1', 'Bubble A');
но он должен вызываться после того, как станет известно положение узла, когда макет установится.
Блокировка предназначена для предотвращения разрыва этого узла и его круга.
Демо jsFiddle: http://jsfiddle.net/xmojmr/wvznb9pf/
Использование составного узла, который будет удерживать узел и его круг вместе, вероятно, будет лучше, если реализована поддержка позиционирования дочерних узлов.
Отказ от ответственности: я новичок в cytoscape.js, используйте на свой страх и риск
person
xmojmr
schedule
07.01.2015
addRandomNode
получает абсолютные координаты, и вы хотите создать круг в этом абсолютном положении? и вы думаете, что позиция, рассчитаннаяcy.nodes("#1").position('x')
иcy.nodes("#1").position('x')
неверна? - person xmojmr   schedule 07.01.2015