我已经为我的研究项目使用了“定向图编辑器” - http://bl.ocks.org/rkirsling/5001347,我已经更新了它,现在看起来像这样 - http://jsfiddle.net/fb89orLt/2/。 我的问题是,我怎么能不允许在2个蓝色圆圈之间画一个链接(例如,我不想让d3在“星巴克”和“仁人家园”之间画出链接)。我正在考虑实现比较“拖动到自我”线上的2个节点的内容,如在定向图编辑器中已经完成的那样,但是没有想到解决方案。
这是添加了新节点并检查“拖到自我”条件的代码片段:
enter code here
// select node
mousedown_node = d;
if(mousedown_node === selected_node) selected_node = null;
else selected_node = mousedown_node;
selected_link = null;
enter code here
// reposition drag line
drag_line
.style('marker-end', 'url(#end-arrow)')
.classed('hidden', false)
.attr('d', 'M' + mousedown_node.x + ',' + mousedown_node.y + 'L' + mousedown_node.x + ',' + mousedown_node.y);
enter code here
restart();
})
.on('mouseup', function(d) {
if(!mousedown_node) return;
enter code here
// needed by FF
drag_line
.classed('hidden', true)
.style('marker-end', '');
enter code here
// check for drag-to-self
mouseup_node = d;
if(mouseup_node === mousedown_node) { resetMouseVars(); return; }
// unenlarge target node
d3.select(this).attr('transform', '');
请帮我解决这个问题。谢谢。非常感谢任何帮助。