缩放到D3 Force Directed Graph上的单击节点

时间:2014-08-10 02:50:06

标签: javascript d3.js zooming force-layout

我正在尝试将面包车Wijk Smooth Zooming example应用到我正在工作的已经有drag+zoom功能的D3强制导向图上。但是,我不知道如何获得我当前的位置,以使其成为变换的起点。尝试使用普通变换时,我遇到了同样的问题。

我也尝试过查看click-to-zoom-transform,但我不确定如何将其应用于强制导向图。

我想要应用它的一些事情,包括当我点击链接时能够缩放并跳转到链接的目标节点。有没有办法获得当前的屏幕位置,所以我可以用它作为跳转到我想去的地方的起点?

1 个答案:

答案 0 :(得分:4)

实际上,我只是根据this example中点击的功能找出了它。我的等式对于我的比例和翻译数字是错误的。我需要以这种方式获取翻译号码:

translate = [width / 2 - scale * x, height / 2 - scale * y]

然后我需要调用()缩放行为,并使用缩放行为本身的转换,如下所示,最后使用“.event”使其触发:

svg.transition().duration(750)
   .call(zoom.translate(translate).scale(scale).event);

而不是像以前那样翻译svg而做错了:

svg.transition().duration(750)
   .attr("transform", translate(translate).scale(scale));