Estoy tratando de dibujar una etiqueta en un polígono de un archivo svg. El problema al que me enfrento es encontrar aproximadamente el centro de este polígono para colocar la etiqueta, ya que las coordenadas de la ruta están en formato svg y necesitan ser analizadas. ¿Hay una manera más fácil de determinar el centro de un polígono svg (tal vez alguien puede señalar una biblioteca de JavaScript o un fragmento)? Estoy usando la biblioteca de JavaScript Raphael para manipular el svg, pero no parece ir más allá de la funcionalidad svg estándar.Poner etiqueta en el "centro" de una ruta SVG
Respuesta
Lo más simple que podría intentar hacer es calcular el centro tomando el promedio de todos los puntos en el polígono. Debería funcionar para todos menos los polígonos más irregulares. He usado el mismo algoritmo para buenos resultados en mis programas.
Lo mejor de la suerte.
puede probar con el siguiente aproximación para hacer algo similar a la sugerencia polígono, basado en métodos SVG DOM:
var totalPathLength = pathelm.getTotalLength();
var step = totalPathLength/100;
for(var dist=0; dist < totalPathLength; dist+=step)
{
var pt = pathelm.getPointAtLength(dist);
addToAverage(pt.x, pt.y);
}
creo que el enfoque más simple es utilizar el centro de BoundingBox del elemento de la ruta (pathelm. getBox()), eso es más simple que la sugerencia del polígono.
PD: 'var bbox = p.getBox(); var x = Math.floor (bbox.x + bbox.width/2.0); var y = Math.floor (bbox.y + bbox.height/2.0); 'hice el truco para mí, thx. – lwe
¡Gracias @Iwe! Eso fue mucho más simple de lo que podría imaginar :) – Viet
@ El comentario de Iwe merece ser una respuesta separada. Es un enfoque más simple y diferente con diferentes pros y contras. Aquí hay una [** JSBIN demostración de ambas formas de país de Vietnam y Canadá **] (http://jsbin.com/orAzoFI/3/edit) que muestra algunos puntos clave y diferencias: que ninguno de los métodos garantiza que el centro estará dentro de la forma, y que el método de Erik tira del centro hacia partes del camino que están más fracturadas/complejas/tienen una circunferencia relativa más alta. – user568458
insertar una etiqueta de texto en el interior del SVG y posicionarla mediante el cálculo de la anchura y la altura
<svg width="447pt" height="559pt" viewBox="0 0 894 1118" version="1.1" xmlns="http://www.w3.org/2000/svg">
............
............
<text x="450" y="300" font-family="Verdana" font-size="15" fill="red" >
Text To Show
</text>
</svg>
- 1. Cómo colocar texto en el centro de una ruta svg
- 2. Cómo alinear el centro de una etiqueta personalizada en Highcharts
- 3. ¿Qué significa "C" en una ruta SVG?
- 4. SVG - círculo de escala desde el centro
- 5. Calcular centro de SVG arco
- 6. Usando SVG, ¿es posible agregar texto al centro de una ruta y alinearlo horizontalmente?
- 7. ¿Cómo centro un SVG en un div?
- 8. ¿Cómo puedo poner una línea vertical en el centro de un div?
- 9. Cómo calcular el área de una ruta SVG C#
- 10. ¿Cómo centro verticalmente una etiqueta en un div?
- 11. centro de una etiqueta H1 dentro de un DIV
- 12. Crear etiqueta SVG con JavaScript
- 13. ¿Es posible poner una lista dentro de una etiqueta span?
- 14. ¿Convertir texto en ruta (svg) en el servidor?
- 15. ¿Cómo centro verticalmente el texto en el título de una etiqueta de Excel?
- 16. ¿Cómo se anima una ruta SVG en IOS?
- 17. Etiqueta de imagen SVG no funciona
- 18. Rellenar elemento de ruta SVG con una imagen de fondo
- 19. ¿Puedo cambiar el color de relleno de una ruta svg con CSS?
- 20. centro documentView en el centro de NSScrollView
- 21. Visualización de ruta en la etiqueta
- 22. ¿Cómo suavizar una ruta SVG dibujada a mano alzada?
- 23. Dibujar ruta en la lona con los datos de ruta SVG (caminos SVG a rutas de lona)
- 24. SVG: ¿simplifica la ruta para eliminar curvas?
- 25. Convertir ruta SVG a comandos absolutos
- 26. Firefox: ¿Puedo usar una ruta relativa en la etiqueta BASE?
- 27. Horneado se transforma en comandos del elemento de ruta SVG
- 28. SVG Gradient se vuelve negro cuando hay una etiqueta BASE en la página HTML?
- 29. poner una etiqueta img dentro de una etiqueta a href provoca un borde alrededor de la imagen en IE
- 30. Dibujar una forma anulada en SVG
Lo siento, para no formulado claramente lo que mi pregunta. El problema es más acerca de cómo obtener las coordenadas del atributo d de la ruta que está en este formato para calcular el centro o para encontrar una biblioteca de JavaScript que lo haga sin analizar el atributo de acuerdo con la especificación svg. –
sol
El primer problema para resolver primero es convertir primero el svg en polígono. He estado buscando un código para convertir las rutas svg en polígonos pero no pude encontrar uno. Tal vez tenga que desenterrar los códigos fuente de los proyectos svg – ivanceras