D3 v4:元素'快照'程序化转换后的先前翻译

时间:2017-04-20 10:26:26

标签: d3.js svg

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中存储的转换。

Logging d3.event.transform shows the problem

This question似乎正在针对同一问题,尽管对于v3。

1 个答案:

答案 0 :(得分:3)

似乎您正在将缩放行为应用于两个不同的节点 - svgMainsvg

尝试运行svgMain.call(zoom.translateBy, 100, 100)而不是svg.call(...),看看它是否解决了问题。