这里有个问题
d3.js: pan with limits
回答限制锅具移动的问题。但这使用轴,而我没有。
我所拥有的是一个力图,它具有平移和缩放的能力。
现在,我使用来限制缩放:
.call(d3.behavior.zoom().on("zoom", redraw).scaleExtent([0.8, 2]))
我想知道如何限制该图的平移,以免将网络/图拖到视口之外。
(网络可能会更改大小,具体取决于导入的JSON文件,因此我无法使用确切数字)
inner.attr("transform","translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")");
最佳答案
没有等效的zoom.extent。不过,您可以在重绘功能中使用最小和最大覆盖缩放的平移。例如,如果要限制缩放以使其原始位置保持在500px以内:
function redraw() {
var oldT = yourZoom.translate()
var newT = [0,0]
newT[0] = Math.max(-500,oldT[0]);
newT[0] = Math.min(500,oldT[0]);
newT[1] = Math.max(-500,oldT[0]);
newT[1] = Math.min(500,oldT[0]);
yourZoom.translate(newT);
//The rest of your redraw function, now using the updated translate on your zoom
}