function zoomed() { svg.attr("transform", d3.event.transform); }
var zoom = d3.zoom().on("zoom", zoomed);
var svgMain = d3.select('body').append('svg').call(zoom);
var svg = svgMain.append('g') // All the drawing done here
当我使用svg
以编程方式翻译svg.call(zoom.translateBy, 100, 100)
时,请使用鼠标拖动元素,svg
转换属性会捕捉到拖动前的值。
几乎就好像没有存储或保存由svg.call
影响的转换,并且还原为d3.event.transform
中存储的转换。
This question似乎正在针对同一问题,尽管对于v3。
答案 0 :(得分:3)
似乎您正在将缩放行为应用于两个不同的节点 - svgMain
和svg
。
尝试运行svgMain.call(zoom.translateBy, 100, 100)
而不是svg.call(...)
,看看它是否解决了问题。