【问题标题】:Changing zoom level of d3 SVG canvas?更改 d3 SVG 画布的缩放级别?
【发布时间】:2012-04-18 15:17:26
【问题描述】:
【问题讨论】:
标签:
javascript
zooming
scale
d3.js
【解决方案1】:
D3 允许使用缩放,而且实现起来相当容易。您只需要将图形包装在我称之为“视口”的“g”元素中。然后您将分配给 svg 元素的缩放事件:
svg.call(d3.behavior.zoom().on("zoom", redraw))
以下函数:
function redraw() {
d3.select("#viewport").attr("transform",
"translate(" + d3.event.translate + ")"
+ " scale(" + d3.event.scale + ")");
}
【解决方案2】:
var x, y, k;
if (d && centered !== d) {
var centroid = path.centroid(d);
x = centroid[0];
y = centroid[1];
k = 4;
centered = d;
} else {
x = w / 2;
y = h / 2;
k = 1;
centered = null;
}
在缩放功能中编写以下代码
svg.attr("变换", "translate(" + w / 2 + "," + h / 2 + ")scale(" + k + ")translate(" + -x + "," + -y + " )");
对于绝对比例,您不能使用此代码
这将有助于地图的缩放和平移