クリックしたツリー内のノードをセンタリングするためのRob Schmueckerのexampleが見つかりました。この例はD3jsバージョン3で動作します。この例をd3js version 4に移植しました。しかし、私の例では、私はsvgを移動しようとすると、センタリング後にSVGがジャンプします。誰かが間違っていることを知っていますか?ここでいくつかのコードスニペット。ズーム可能なツリー内のD3js V4センターノード
var baseSvg = d3.select("#tree-container").append("svg").attr("width", viewerWidth)
.attr("height", viewerHeight)
.attr("class", "overlay")
.call(zoomListener);
function zoom() {
if(d3.event.transform != null) {
svgGroup.attr("transform", d3.event.transform);
}
}
function centerNode(source) {
t = d3.zoomTransform(baseSvg.node());
x = -source.y0;
y = -source.x0;
x = x * t.k + viewerWidth/2;
y = y * t.k + viewerHeight/2;
d3.select('g').transition().duration(duration).call(zoomListener.transform, d3.zoomIdentity.translate(x,y).scale(t.k));
}
ありがとうございました。私は私の例を更新し、それは動作します。 [link] https://jsfiddle.net/Tokker/mwm1sxhh/21/ – Tokker