【发布时间】:2014-02-25 21:22:51
【问题描述】:
我正在尝试在平移和缩放时使可缩放/拖动矩形不超出 svg 边界。我试图根据这个example 来实现它,但我似乎无法让它工作。我创建了this jsfiddle,只有可缩放和可拖动的矩形。同样,我试图做到这一点,这样你就不能将矩形拖到我放置边框的 svg 框之外。我知道我需要更新移动功能。下面的代码来自第一个链接示例,但似乎效果不佳,因此我将其中的一部分注释掉。
function move() {
var t = d3.event.translate,
s = d3.event.scale;
//t[0] = Math.min(width / 2 * (s - 1), Math.max(width / 2 * (1 - s), t[0]));
//t[1] = Math.min(height / 2 * (s - 1) + 230 * s, Math.max(height / 2 * (1 - s) - 230 * s, t[1]));
//zoom.translate(t);
svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}
编辑:因此,当您一直放大并且它比 svg 大时,我还需要能够拖动矩形。在下图中,蓝色矩形是 svg,绿色是矩形,您一直放大到绿色矩形比 SVG 占用更多。这类似于constrained zoom example 中的地图。您可以放大州并在全国范围内拖动,导航到当前 svg 大小之外的州
【问题讨论】: