我刚刚开始使用D3 V4,而且我无法使用平移和缩放功能。问题是我希望初始比例值大于1,所以我使用
设置它zoom.scaleTo(svg, 2);
然而,只要我平移或缩放,刻度就会重置为1。
这是JSFiddle上这种行为的一个例子,我做错了什么?
答案 0 :(得分:10)
问题在于:
var svg = d3.select("body").append("svg")
.attr("width", 600)
.attr("height", 600)
.call(zoom)
.append("g");
您正在将group元素而不是svg元素分配给变量svg
。
zoom
已正确应用于svg元素,但是当您调用zoom.scaleTo(svg, 2)
时,您正在缩放组元素,而不是svg元素。
这可以通过首先创建svg元素并将其分配给svg
变量,然后再创建和分配group元素来解决。
var svg = d3.select("body").append("svg")
.attr("width", 600)
.attr("height", 600)
.call(zoom);
var mainContainer = svg.append("g");
这是固定的JSFiddle:https://jsfiddle.net/skgktrcu/2/