【发布时间】:2019-05-03 15:27:19
【问题描述】:
我正在使用 d3 绘制一堆箭头(通过链接连接的节点)。当按下 ctrl 键并单击并拖动背景时,我正在使用 d3.zoom 转换背景。
我想放大箭头,以便在页面加载时它们填满屏幕。这很好用,但是当我平移(通过 ctrl + 拖动背景)时,它会从我的自动缩放位置跳到原点。
(这里我通过计算自动变换/缩放,获取顶部svg元素的子组并设置其变换属性来翻译)
这是我设置缩放的代码:
zoom(width, height){
// Get autozoom translate and scale
const autozoom = this.AutoZoom(width, height);
// Bind zoom event to top level svg and on zooom append transform attribute to svg > g
topSvg.call(d3.zoom()
.scaleExtent([1, 2])
.on("zoom", () =>
svgG.attr("transform", (e) => {
return d3.event.transform;
}))
);
//Make the initial transform to translate grop
if ((autozoom != null) ) {
svg.attr("transform", `translate(${autozoom .translate})scale(${autozoom.scale})`);
}
}
当我点击并拖动时,如何阻止图表从翻译位置跳转到原点?
【问题讨论】:
-
阅读 d3-zoom 文档,有一些功能可以满足您的需求,如果您返回不依赖于
e的东西,为什么还要使用箭头功能@ -
是的,我一直在查看文档。 translateExtent 函数似乎是我想要使用的,因为我想要缩放视图的左上角和右下角。我还没有任何成功。我使用了箭头函数,所以我可以放置断点并进行测试。我忘了把它拿出来。
-
还有更多名称中带有
translate的函数
标签: d3.js