Как узнать абсолютную позицию SVG PATH? - PullRequest
0 голосов
/ 07 января 2012

У меня есть SVG, созданный с помощью InkScape, все PATH имеют перемещение в относительное положение (м):

  <path xmlns="http://www.w3.org/2000/svg" 
        style="fill: #07fe01; 
               fill-opacity: 1; 
               display: inline; 
               stroke-width: 4px; 
               cursor: auto; 
               stroke: none; 
               opacity: 0.4; 
               filter: none; " 
         d="m 431.36764,202.65372 -20.46139,7.94003 -2.875,8.84375 -3.0625,13.21875 8.8125,0.96875 13.34375,6.84375 9.94451,-6.04527 11.96344,-1.95225 -2.3183,-6.56201 0.1291,-10.53422 z" 
         id="Rossello" 
         inkscape:connector-curvature="0"   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 

         sodipodi:nodetypes="ccccccccccc"  xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 
         transform="translate(-0.03124997,-689.42566)" 
         onclick="mapmed.click(this)" 
         onmouseover="mapmed.over(this)" 
         onmouseout="mapmed.out(this)">
            <title id="title3042">Rosselló</title>
  </path>

Мне нужно знать абсолютную позицию каждого пути из javascript, но я не могу.

Ответы [ 3 ]

1 голос
/ 01 марта 2015

Попробуйте что-то вроде этого:

        ele=$('#Rosello')[0]
        var bbox = ele.getBBox()
        var top = bbox.y + bbox.y2

То же самое должно работать в направлении х.

Я не уверен, но я заметил, что getBBox довольно медленный.Так что береги себя.

1 голос
/ 07 января 2012

Мне кажется, normalizedPathSegList - это то, что вы хотите.

0 голосов
/ 08 января 2012

Я нашел способ узнать абсолютную позицию.Ошибка заключалась в попытке найти абсолютные координаты без применения базового слоя для перевода и подсчета пикселей, как в InkScape, снизу вверх, а не сверху вниз, как в SVG.

Следуйте этим шагам, чтобы узнать абсолютную позициюпервого узла PATH в пикселях:

1-й получить ширину и высоту объекта SVG.svgWidth, svgHeight.

2nd получить преобразование преобразования базового макета.baseTransX, baseTransY.

3-й получить первый узел пути.pathX, pathY.

4th получить преобразование преобразования пути, если существует, если не 0. pathTransX, pathTransY.

С этими значениями мы можем найти абсолютные X и Y для первого узлав InkScape:

X = baseTransX + pathTransX + pathX

Y = svgHeight - (baseTransY + pathTransY + pathY)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...