我的 fiddle :http://jsfiddle.net/G5mTx/10/
正如您所看到的,我当前组织节点的方式没有平衡,并且当父节点有超过 1 个子节点时存在一些重叠。
对于那些不熟悉 DOT 算法的人,可以在这里找到简短、模糊的解释:http://www.ece.uci.edu/~jhahn/pdf/dot.pdf
基本上,DOT 组织节点使得图形是最佳的,这意味着它是简洁的、具有最小的线交叉并且是平衡的。
我听说有些人在将 DOT 算法发送到客户端之前运行服务器端...这将始终更快...但我需要每个节点都具有悬停和单击状态,正如我计划的那样允许用户重新分配箭头/线条指向的位置。
我的意思是,我可以在服务器端生成 SVG。但是我如何将悬停/单击事件连接到节点,并告诉服务器节点在重新分配行时代表哪个模型?
注意:我的服务器运行 Ruby on Rails 2.3.8
最佳答案
我在这种情况下苦苦挣扎,并在我的服务器上运行了 DOT 算法,仅将节点的新坐标发送回浏览器。最终我发现这个设置并不令人满意。
我改用 D3's force layout algorithm ,它是用 Javascript 实现的,看起来比 DOT 更现代,现在我高兴多了。
关于javascript - SVG/Raphael,如何在 JavaScript 中实现 DOT 算法? (图组织),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7556206/