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 如何知道SVG路径的绝对位置?_Javascript_Svg - Fatal编程技术网

Javascript 如何知道SVG路径的绝对位置?

Javascript 如何知道SVG路径的绝对位置?,javascript,svg,Javascript,Svg,我用InkScape生成了一个SVG,所有路径都移动到相对位置(m): 罗塞洛 我需要从javascript知道每个路径的绝对位置,但我不能。在我看来,这就是你想要的。我找到了一种知道绝对位置的方法。错误在于试图找到绝对坐标,而没有像InkScape那样应用底层平移和计数像素,从下到上,而不是像SVG那样从上到下 按照此陡度,以像素为单位了解路径第一个节点的绝对位置: 首先获取svg对象的宽度和高度。斯维特,斯维特 第二,获得基本布局的变换平移。BaseTranx,BaseTrans 第三,

我用InkScape生成了一个SVG,所有路径都移动到相对位置(m):


罗塞洛

我需要从javascript知道每个路径的绝对位置,但我不能。

在我看来,这就是你想要的。

我找到了一种知道绝对位置的方法。错误在于试图找到绝对坐标,而没有像InkScape那样应用底层平移和计数像素,从下到上,而不是像SVG那样从上到下

按照此陡度,以像素为单位了解路径第一个节点的绝对位置:

首先获取svg对象的宽度和高度。斯维特,斯维特

第二,获得基本布局的变换平移。BaseTranx,BaseTrans

第三,获取路径的第一个节点。pathX,pathY

如果存在,则获取路径的变换平移,如果不为0。pathTransX,pathTransY

使用此值,我们可以找到InkScape中第一个节点的绝对X和Y:

X=baseTransX+pathTransX+pathX


Y=svgHeight-(baseTransY+pathTransY+pathY)

试试这样的方法:

        ele=$('#Rosello')[0]
        var bbox = ele.getBBox()
        var top = bbox.y + bbox.y2
在x方向也应如此


我不确定,但我观察到getBBox相当慢。所以要小心。

谢谢Robert,但是尝试每个方法和属性normalizedPathSegList总是为null,Chrome没有getNormalizedPathSegList()未捕获类型错误:Object[Object svgpatheElement]没有方法“getNormalizedPathSegList”@corretge:那是因为它不是您的路径。getNormalizedPathSegList(),这是yourpath.normalizedPathSegList。@ErikDahlström正在尝试这个方法,正如我在第一条评论中所说,我得到的是null。
        ele=$('#Rosello')[0]
        var bbox = ele.getBBox()
        var top = bbox.y + bbox.y2