我發現這個來自Rob Schmuecker的example用於將節點集中在一個被點擊的樹中。這個例子適用於D3js版本3.我將此示例移植到d3js version 4。但在我的例子中,如果我嘗試移動svg,svg會在定位後跳轉。有人知道最近出了什麼問題嗎?這裏有一些代碼片段。D3js V4中心節點在Zoomable樹
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));
}
謝謝你這就是它。我更新了我的例子,它的工作原理。 [鏈接] https://jsfiddle.net/Tokker/mwm1sxhh/21/ – Tokker