Drag and Drop Exampled3.js Umschreiben Zoom Beispiel in version4
Ich versuche, über einen Teil dieses Beispiel neu zu schreiben in meinem Code zu verwenden, und zwar dieses Stück:
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]);
}
aber ich bin immer da das steckt Das v4-Paket hat sich ziemlich verändert. Ich schrieb meine zoomListener Funktion
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
}
und ich weiß sein, dass nach dem doc Dinge haben sich geändert und Informationen sind nicht mehr gespeichert werden, was mein zoomListener wäre D3 V4 release note on zoom Ich glaube, ich bin nur verwirrt, wie ich bin nehme an, es mit der neuen Version zu machen. Die letzten paar Zeilen meiner centerNode-Funktion funktionieren nicht, was dazu führt, dass beim Zentrieren des Knotens das Zoomen und Schwenken zurückgesetzt wird ...
Irgendwelche Vorschläge?
https://coderwall.com/p/psogia/simplet-way-to-add-zoom-pan-on-d3-js – Sphinxxx