我正在實施Radial Reingold-Tilford樹(http://bl.ocks.org/mbostock/4063550),但隨着平移和縮放的基本示例,拖動以及可摺疊的可點擊節點。 我已經能夠實現它的大部分。然而,我需要的另一件事是將不同節點拖放到其他節點。我也能夠實現這一點,但拖動時我也想顯示鏈接/臨時連接器,但以徑向視圖實現它變得很麻煩。如何在D3的徑向Reingold-Tilford樹中使節點的拖放工作?
在這之後我該怎麼辦, 這是我現在的工作代碼。
http://jsfiddle.net/rabimba/d6DVn/1/
我需要首先正確地計算它的部分,而draglistener應該是
relCoords = d3.mouse($('svg').get(0));
if (relCoords[0] < panBoundary) {
panTimer = true;
pan(this, 'left');
} else if (relCoords[0] > ($('svg').width() - panBoundary)) {
panTimer = true;
pan(this, 'right');
} else if (relCoords[1] < panBoundary) {
panTimer = true;
pan(this, 'up');
} else if (relCoords[1] > ($('svg').height() - panBoundary)) {
panTimer = true;
pan(this, 'down');
} else {
try {
clearTimeout(panTimer);
} catch (e) {
}
}
d.x0 += d3.event.dy;
d.y0 += d3.event.dx;
var node = d3.select(this);
node.attr("transform", "translate(" + d.y0 + "," + (d.x - 90)+ ")");
updateTempConnector();
})
然後我可以就在連接器上的工作。 我已儘可能地評論。
在您的撥弄,我們得到一個錯誤, dofocus沒有定義的檢查它一次。好吧 –
是的。好的,可以。這部分代碼在這裏不需要。這是我爲JSON的內部操作,我只是硬編碼的小提琴。你可以放心地忽略這個 –
Hi @RabimbaKaranjai由於這個例子取自我的代碼http://www.robschmuecker.com/d3-js-drag-and-drop-zoomable-tree/我可以sefly說你不應該現在擔心上述片段的平移。在任何情況下,平移似乎都能正常工作,但拖動節點的位置與'tempConnector'一起錯誤! –