Javascript 如何使用SvgPanZoom平移和缩放以适合图元
我正在使用svg平移缩放库,我需要平移/缩放视图以适应特定元素。 我可以使用fit方法,但它适合整个内容。在这种情况下,我只需要适合一个特定的元素。 另一个选项是计算所需的平移和缩放,并使用自定义控件,但是如何获得元素的平移/缩放以适合窗口 更新 我试图遵循@bumbu“更简单”的解决方案。这是我的第一个想法,但是我遇到了一些关于缩放点位置的问题 这是一个显示预期行为和计算尝试的小提琴 计算如下:Javascript 如何使用SvgPanZoom平移和缩放以适合图元,javascript,svg,zooming,pan,svgpanzoom,Javascript,Svg,Zooming,Pan,Svgpanzoom,我正在使用svg平移缩放库,我需要平移/缩放视图以适应特定元素。 我可以使用fit方法,但它适合整个内容。在这种情况下,我只需要适合一个特定的元素。 另一个选项是计算所需的平移和缩放,并使用自定义控件,但是如何获得元素的平移/缩放以适合窗口 更新 我试图遵循@bumbu“更简单”的解决方案。这是我的第一个想法,但是我遇到了一些关于缩放点位置的问题 这是一个显示预期行为和计算尝试的小提琴 计算如下: var bb=$("#target")[0].getBBox(); var x=bb.x+bb.
var bb=$("#target")[0].getBBox();
var x=bb.x+bb.width/2;
var y=bb.y+bb.height/2;
但不知何故,预期的缩放中心(225225)并不正确。在不详细介绍的情况下,我会尝试两种方法: 更容易:
- 初始化svg平移缩放库
- 适合你的身体并居中
- 计算您感兴趣的元素的位置(左上和右下,或中心和大小)
- 现在,根据视口大小,您应该能够计算每个元素的缩放级别和中心点
- 计算原始对象相对于原始视口的相对位置
- 根据当前视口大小,您应该能够计算每个元素的缩放级别和中心点
相关问题:谢谢,但这只是要求如何获得单击元素的恒定坐标。在我的例子中,我需要缩放,但我不知道如何获得适合设计元素的正确缩放/平移值谢谢,更简单的方法是我的第一次尝试。但我在缩放点坐标时遇到了一些麻烦。我已经更新了问题。
var bb=$("#target")[0].getBBox();
var vbb=panZoomInstance.getSizes().viewBox;
var x=vbb.width/2-bb.x-bb.width/2;
var y=vbb.height/2-bb.y-bb.height/2;
var rz=panZoomInstance.getSizes().realZoom;
var zoom=vbb.width/bb.width;
panZoomInstance.panBy({x:x*rz,y:y*rz});
panZoomInstance.zoom(zoom);