【发布时间】:2015-08-11 03:13:32
【问题描述】:
我已经浏览了几篇关于如何缩放到更大的 SVG 中的元素的帖子,该 SVG 本身也具有缩放和平移功能,但没有任何运气。我有一张大地图,您可以在其中手动缩放和平移到元素,但我希望它在单击此类元素时缩放和平移到任何元素本身。我似乎无法为转换获得正确的值。
这是我到目前为止所得到的一个 jsfiddle:http://jsfiddle.net/1gyjd2xt/1/
var svg = d3.select("#svg-container svg");
var container = svg.select("#container");
zoom = d3.behavior.zoom()
.translate([0, 0])
.scale(1)
.scaleExtent([1, 10])
.on("zoom", zoomed);
svg.call(zoom);
function zoomed() {
container.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}
d3.selectAll(".text").on("click", function () {
var t = d3.transform(d3.select(this).attr("transform")),
x = t.translate[0],
y = t.translate[1];
console.log(x);
console.log(y);
var scale = 10;
//Zoom to element
//svg.transition()
//.call(zoom
//.translate( calculate X, calculate Y)
//.scale(scale).event);
});
【问题讨论】:
标签: javascript svg d3.js zooming