d3.js la réécriture de zoom exemple dans version4

Faites glisser et Déposez Exemple

Je suis en train de réécrire une partie de l'exemple ci-dessus pour l'utiliser dans mon code, plus précisément de cette pièce:

function centerNode(source) {
        scale = zoomListener.scale();
        x = -source.y0;
        y = -source.x0;
        x = x * scale + viewerWidth / 2;
        y = y * scale + viewerHeight / 2;
        d3.select('g').transition()
            .duration(duration)
            .attr("transform", "translate(" + x + "," + y + ")scale(" + scale + ")");
        zoomListener.scale(scale);
        zoomListener.translate([x, y]);
    }

Cependant, je suis coincé depuis la v4 paquet a un peu changé. J'ai écrit mon zoomListener fonction

    var zoomListener = d3.zoom()
                 .scaleExtent([0.3,2])
                 .on("zoom", zoomed);

    function zoomed() {
       transform = d3.event.transform;
       console.log(d3.event);
         svg.attr("transform", transform);
    } 

function centerNode(source){
  t = transform;
  console.log(t);
  x = t.x*t.k; //I only want things to be centered vertically
  y = (t.y + -source.x0)*t.k + (viewerHeight)/2 ;
  svg.transition()
     .duration(duration)
     .attr("transform","translate(" + x + "," + y +")scale(" + t.k + ")");

  transform.scale(t.k); //DOES NOT WORK
  transform.translate([x, y]); //DOES NOT WORK

}

et je sais que d'après la doc, les choses ont changé et les infos ne sont plus stockés sur ce que serait mon zoomListener
D3 V4 release note sur le zoom Je suppose que je suis juste confus sur la façon dont je suis supposé faire avec la nouvelle version. Les dernières lignes de mon centerNode de fonction ne fonctionnent pas ce qui a pour effet que, lorsque je centre le nœud du zoom et de panoramique reset...

Toute suggestion?

OriginalL'auteur Tekill | 2016-07-22