在zoom func中设置变换后,使用“initialscale”变量再次设置SVG比例,问题如下:
// Center the graph
var initialScale = 0.75;
svg.call(zoom.transform, d3.zoomIdentity.translate((svg.attr("width") - g.graph().width * initialScale) / 2, 20).scale(initialScale));
要解决这个问题,您需要根据SVG的当前比例转换更改“initialscale”变量中的值。如图所示:
// Center the graph
var initialScale = (typeof transform != 'undefined') ? transform.k : 0.75;
svg.call(zoom.transform, d3.zoomIdentity.translate((svg.attr("width") - g.graph().width * initialScale) / 2, 20).scale(initialScale));
带有修复程序的代码笔:
https://codepen.io/anon/pen/MBwBYY?editors=0011