Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用SvgPanZoom平移和缩放以适合图元_Javascript_Svg_Zooming_Pan_Svgpanzoom - Fatal编程技术网

Javascript 如何使用SvgPanZoom平移和缩放以适合图元

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.

我正在使用svg平移缩放库,我需要平移/缩放视图以适应特定元素。 我可以使用fit方法,但它适合整个内容。在这种情况下,我只需要适合一个特定的元素。 另一个选项是计算所需的平移和缩放,并使用自定义控件,但是如何获得元素的平移/缩放以适合窗口

更新

我试图遵循@bumbu“更简单”的解决方案。这是我的第一个想法,但是我遇到了一些关于缩放点位置的问题

这是一个显示预期行为和计算尝试的小提琴

计算如下:

var bb=$("#target")[0].getBBox();
var x=bb.x+bb.width/2;
var y=bb.y+bb.height/2;


但不知何故,预期的缩放中心(225225)并不正确。

在不详细介绍的情况下,我会尝试两种方法:

更容易:

  • 初始化svg平移缩放库
  • 适合你的身体并居中
  • 计算您感兴趣的元素的位置(左上和右下,或中心和大小)
  • 现在,根据视口大小,您应该能够计算每个元素的缩放级别和中心点
更难:

  • 计算原始对象相对于原始视口的相对位置
  • 根据当前视口大小,您应该能够计算每个元素的缩放级别和中心点

在缩放之前,我发现了一个解决方案平移,我找不到正确的方法来使用zoomAtPoint()方法


相关问题:谢谢,但这只是要求如何获得单击元素的恒定坐标。在我的例子中,我需要缩放,但我不知道如何获得适合设计元素的正确缩放/平移值谢谢,更简单的方法是我的第一次尝试。但我在缩放点坐标时遇到了一些麻烦。我已经更新了问题。
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);