2010-10-25 21 views
8

¿Cómo puedo obtener la posición de un objeto en Raphael? Puedo obtener el tamaño usando getBBox(), pero parece que no hay forma de obtener el puesto.Raphael Position

+0

El problema puede ser primero una definición de "posición" de un objeto. Si se refiere al "centro de gravedad" del objeto, eso debe calcularse actualmente mediante el código de la aplicación, ya que depende del tipo de objeto. En este momento, parece que no hay un código de biblioteca para obtener el centro de formas comunes. Para formas arbitrarias, supongo que puede necesitar ser definido en el nivel de aplicación de todos modos, y el cuadro delimitador permite calcularlo. Si por posición te refieres a la posición clásica de la esquina superior izquierda, los atributos del cuadro delimitador (x, y) son el resultado, como se mencionó en @b_dubb. –

Respuesta

4

Dependiendo de qué tipo de forma sea, la documentación parece indicar que se puede acceder utilizando la función .attr(). Por lo tanto, si se trata de un círculo ...

var x = myCircle.attr('cx'); //cx is the center-x-coordinate of the circle 
var y = myCircle.attr('cy'); //same, for y 
var r = myCircle.attr('r'); //Radius of circle. 

Un cuadrado tendría attr s de x, y, ancho, altura. Verifique la documentación para más información.

+0

el.getBBox es el enfoque correcto. Por favor, mira la respuesta de Dmitry. – jbeard4

16

getBBox() debería darle la posición, así como las propiedades x e y.

var bbox = el.getBBox(); 
alert([bbox.x, bbox.y]); 
+5

gracias, pero sería genial si pudiera agregar esos consejos en la documentación de raphaeljs. – Mermoz

+6

Está en la documentación de Rafael –

2

también puede acceder a la valores x e y de esta manera:

var x = myCircle.attrs.x; 
var y = myCircle.attrs.y 
7

getBBox() Devuelve un objeto con 5 propiedades. que son:

  1. x
  2. y
  3. ancho
  4. altura
  5. toString()

si establece getBBox (falso) devolverá datos de las coordenadas de la posición del objeto DESPUÉS de una transformación. configurarlo para getBBox (verdadero) para devolver las coordenadas del objeto antes de la transformación

uso como esto ...

paper.Raphael(10,10,300,300); 
circle.paper(30, 55, 15); 
var circleBBox = circle.getBBox(false); 

editar: acaba de descargar R 2.1 y creo que ha añadido x2 e y2 a la propiedades devueltas por getBBox()

0

atributos x, y son aquellos dentro del conjunto. El problema aquí es que si el conjunto se traduce a otro lugar, las xey proporcionadas por .getBBOx() no tienen en cuenta la traducción.

Raphael.transformPath (path, transformar) puede ayudar mediante la aplicación de la misma se transforma de que el conjunto tiene ...

de traducir ese punto se puede:

tp = Raphael.transformPath("M"+x+","+y, set.attr('transform')) 
x = tp[0][1] 
y = tp[0][2]