Folleto: ¿cómo dibujar líneas curvas?

17

Entonces, estoy tratando de dibujar líneas curvas en mi aplicación que se basa en un mapa de folleto.

Por lo que sé, Leaflet no admite el dibujo de líneas curvas en este momento, por lo que mi pregunta es realmente más acerca de cómo obtener mejor la funcionalidad de la línea curva allí.

El problema se hace más difícil porque mi código tendrá que ser compatible con IE-8, lo que significa que SVG puro no es la solución. (El folleto en realidad hace un retroceso a VML si detecta que no hay soporte SVG presente ...)

Entonces, una posibilidad sería escribir un código de extensión de folleto basado en SVG con su propio respaldo a VML. Esto sería mucho trabajo. : /

¿Alguien tiene una mejor propuesta?

fgysin reinstalar a Monica
fuente
Justo ahora me di cuenta de que nunca acepté una respuesta. Elegí el de @dobrych porque Raphaël parece ser una biblioteca muy agradable y ofrece un buen respaldo VML. Podría mirar en el arco.js también.
fgysin restablece a Mónica el

Respuestas:

5

Teniendo en cuenta el requisito de soporte de IE8, no tenemos muchas opciones sobre la mesa. Solo puedo recordar una biblioteca SVG que tiene respaldo VML: Raphaël.js. Así que puedes probar esta implementación del complemento de capa Raphaël para Leaflet. https://github.com/dynmeth/RaphaelLayer No probé el complemento yo mismo, pero utilicé con éxito Raphaël. Espero que puedas encontrar un uso.

Aquí está el ejemplo de trabajo (enlaces de imágenes a la demostración) http://visualizingurbanfutures.com/2012/09/06/maps-with-raphael-js/

Si no es un requisito de IE8, usaría D3 para cualquier vector en SIG web.

dobrych
fuente
8

Puede usar el complemento arc.js para el folleto para dibujar líneas curvas.

neogeomat
fuente
Arc.js dibuja grandes rutas circulares, no curvas arbitrarias.
Marc Pfister
3

Crear su propia capa personalizada es probablemente una solución para resolver ese problema. Pero sí, estoy de acuerdo en que sería mucho trabajo. Otra opción sería dibujar sus propias curvas (bezier, b-spline o algo así) según las coordenadas geográficas. No tengo idea si eso se ve bien, pero podría imaginar que el resultado no sería tan malo y definitivamente se logra mucho más rápido. Hay muchos scripts JS para tales algoritmos. Puede valer la pena considerar proyectar sus datos en algo como UTM para el cálculo.

Si encuentras algo. fuera por favor háganos saber ...

Yojimbo
fuente