结合Bostock的约束变焦和边界框

时间:2016-05-09 12:07:41

标签: javascript d3.js transition

我正在尝试将约束缩放(http://bl.ocks.org/mbostock/4987520)集成到以边界框({​​{3}})为特色的示例中。 关键是在约束窗口缩放时获得与Bounding Box示例相同的行为(并且还能够使用鼠标移动/放大/缩小,这已在给定示例中完成)。

我一直在尝试并且也找到了一些例子(虽然不是为了做同样的事情)但是没有按预期工作。 我的代码可以归结为边界框中的代码,具有以下“移动”功能:

var t = d3.event.translate,
    s = d3.event.scale;
t[0] = Math.min(0,Math.max(t[0],width - width*s));
t[1] = Math.min(0,Math.max(t[1],height - height*s));
zoom.translate(t);
g.style("stroke-width", 1/s).attr("transform","translate(" + t + ")scale(" + s + ")");

现在我得到的行为几乎满足要求,只是当点击特定状态放大它时,视图突然重新点亮上一个点击状态,然后顺利地移动到新选择的状态。 奇怪的是,删除前面代码中的“zoom.translate(t)”修复了错误,但给手动缩放带来了“过度约束”的感觉,即通过放大并且“相机”转换为无法访问某些区域一种特殊的方式使其也无法缩小 - 缩放视图以某种方式被当前选定的状态所吸引。

如果有人知道如何解决预期的行为,我会很激动。

提前致谢, 基利安。

0 个答案:

没有答案