. , , :
var zoom = d3.behavior.zoom()
.translate([0, 0])
.scale(1).scaleExtent([1, 3])
.on("zoom", zoomed);
. , 1 . , :
var zoom = d3.behavior.zoom();
, :
var scale=zoom.scale(); var position=zoom.translate();
- , :
function interpolateZoom(translate, scale) {
return d3.transition().duration(150).tween("zoom", function() {
var iTranslate = d3.interpolate(zoom.translate(), translate),
iScale = d3.interpolate(zoom.scale(), scale);
return function(t) {
zoom.scale(iScale(t)).translate(iTranslate(t));
};
});
};
zoomed - , , , :
function zoomed() {
g.transition().duration(1000)
.attr("transform", "translate(" + (window_width / 2 + translateX) + "," + (window_height / 2 ) + ")scale(" + zoomLevel + ")translate(" + (-x + 10) + "," + -y + ")")
.each("end", function () {
if (zoomLevel > 1) {
$("#zoom_control").show();
showCenteredTextInCircle();
interpolateZoom([x*zoomLevel, y*zoomLevel],zoomLevel);
}
});
}
, .