正在重置缩放属性d3



每当我点击一个对象并保持原样时,我都在试图找到一种方法来重置svg的缩放属性。例如,在这个jsfiddle中,如果你缩小并点击一个正方形,缩放会被重置,但当我尝试平移屏幕时,缩放会回到我点击正方形之前的状态。有没有一种方法,当我点击一个正方形时,缩放会回到100%,即使在平移时也会保持在100%?

JSFiddle:http://jsfiddle.net/nrabinowitz/p3m8A/

这是我的变焦呼叫:

svg.call(d3.behavior.zoom().on("zoom", redraw));

关键是告诉缩放行为您正在重置缩放和平移。要实现这一点,只需将其保存在一个变量中,并在设置SVG的transform属性时适当地设置值。

var zoom = d3.behavior.zoom();
svg.call(zoom.on("zoom", redraw));
// ...
.on("click", function () {
        counter++;
        canvas
          .transition()
          .duration(1000)
          .attr('transform', "translate(" + (offset * counter) + ",0)");
        zoom.scale(1);
        zoom.translate([offset * counter, 0]);
     drawBox(x, y);
    });

在这里更新了jsfiddle。

最新更新