Drag and Drop Exampled3.js przepisywanie powiększenia przykład w version4
Próbuję przepisać część tego przykładu powyżej używać w moim kodu, szczególnie ten kawałek:
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]);
}
jednak jestem od utknięcie Pakiet v4 bardzo się zmienił. Pisałam funkcję zoomListener być
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
}
i wiem, że zgodnie z doc rzeczy się zmieniły i informacji nie są już przechowywane są na co byłoby moje zoomListener D3 V4 release note on zoom Chyba jestem po prostu mylić, w jaki jestem załóżmy, że zrobimy to w nowej wersji. Kilka ostatnich linii mojej funkcji centerNode nie działa, co ma na celu to, że kiedy wyśrodkuję węzeł, resetowanie powiększania i przesuwania ...
Jakieś sugestie?
https://coderwall.com/p/psogia/simplest-way-to-add-zoom-pan-on-d3-js – Sphinxxx