Prenez cet exemple intemporel du zoom D3. Code raccourci ci-dessous :
var svg = d3.select("svg")
...;
var zoom = d3.zoom()
.scaleExtent([1, 40])
.translateExtent([[-100, -100], [width + 90, height + 100]])
.on("zoom", zoomed);
...
d3.select("button")
.on("click", resetted);
svg.call(zoom);
function zoomed() {
view.attr("transform", d3.event.transform);
gX.call(xAxis.scale(d3.event.transform.rescaleX(x)));
gY.call(yAxis.scale(d3.event.transform.rescaleY(y)));
}
function resetted() {
svg.transition()
.duration(750)
.call(zoom.transform, d3.zoomIdentity);
}
Dans la bibliothèque D3 Zoom, on spécifie le comportement du zoom, puis on applique le zoom au canevas ou à la cible SVG. Comment/où pourrais-je envoyer un callback en tant que paramètre de la fonction zoomed()
sans redéfinir le comportement du zoom ?