如何将多个D3转换命令拆分为单独的语句

时间:2015-06-10 07:39:06

标签: javascript d3.js

我的缩放有些问题。我发现这种缩放的方法是 2x翻译 1x缩放

g.transition()
      .duration(750)
      .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")scale(" + k + ")translate(" + -x + "," + -y + ")");

这很有效。但我想通过使用缩放命令来保存缩放状态,例如所以我尝试了以下方式:

zoom.translate([width / 2, height / 2]);
zoom.scale(k);
zoom.translate([-x, -y]);
g.transition()
      .duration(750)
      .attr("transform", "translate(" + zoom.translate() + ")scale(" + zoom.scale() + ")");

但是这样zoom.translate([width / 2, height / 2]);完全被忽略了,因为我已经覆盖了它。

但是如何使用缩放命令来解决我的问题?

另一个想法

如何将两个翻译语句都写成一个。这有可能吗?

关于此的一些有用链接:

1 个答案:

答案 0 :(得分:1)

我用以下内容解决了 - 非常令人毛骨悚然的解决方案。它运作良好,但对我来说它看起来非常难看,并且基于在特殊变量中保存转换:

var currentzoomy = d3.transform("translate(" + width / 2 + "," + height / 2 + ")scale(" + k + ")translate(" + -x + "," + -y + ")")
zoom.scale(currentzoomy.scale[0]);
zoom.translate(currentzoomy.translate);

这是一个好的解决方案吗?也许有人现在更清楚我的问题是什么。 =)