【发布时间】:2019-01-15 10:24:59
【问题描述】:
我试图限制 d3 缩放中的平移,但我没有得到正确的结果。我正在使用以下代码来扩展scale 和translate。
var treeGroup = d3.select('.treeGroup');
var rootSVG = d3.select('.rootSVG')
var zoom = d3.zoom()
.scaleExtent([1.6285, 3])
.translateExtent([[0, 0],[800, 600]])
.on('zoom', function(){
treeGroup.attr('transform', d3.event.transform);
})
rootSVG.call(zoom);
这里是 JSFiddle:https://jsfiddle.net/nohe76yd/45/
scaleExtent 工作正常,但 translateExtent 出现问题。如何为 translateExtent 指定正确的值,以便在平移内容时始终保留在 svg 容器内?
【问题讨论】:
-
平移范围取决于缩放/比例因子。在 on-zoom 函数中,使用 Math.min 和 Math.max 修改变换。 stackoverflow.com/a/51563890/9938317
标签: d3.js