我使用dagre和d3来显示图形。可以拖动和缩放图形元素和视口。每当我重新绘制图形(或绘制另一个图形)时,拖动/缩放视口后,视口将停留在先前设置的位置,但会在第一次交互时重置(跳至[0,0]和默认的缩放比例)。

如何通过函数调用在d3中重置视口的位置?

最佳答案

Dagre作者在这里-您正在使用dagre演示还是此自定义代码?如果您使用的是dagre演示,我可以确认您观察到的行为,解决方法是添加以下行:

svgGroup.attr("transform", "translate(5, 5)");

在此代码块之前(dagre / demo.js,在我的树中的第252行):

svg.call(d3.behavior.zoom().on("zoom", function redraw() {
    svgGroup.attr("transform",
          "translate(" + d3.event.translate + ")"
          + " scale(" + d3.event.scale + ")");
}));


我已经在此票证下的源代码中更新了演示:https://github.com/cpettitt/dagre/issues/56

谢谢!

10-07 12:14