Dépliant: comment dessiner des lignes courbes?

17

Donc, j'essaie de dessiner des lignes courbes dans mon application qui est basée sur une carte Leaflet.

Pour autant que je sache, Leaflet ne prend pas en charge le dessin de lignes courbes pour le moment, donc ma question est vraiment de savoir comment obtenir au mieux une fonctionnalité de ligne courbe.

Le problème est rendu plus difficile car mon code devra être compatible IE-8, ce qui signifie que le SVG pur n'est pas une solution. (Leaflet fait en fait un retour à VML s'il détecte qu'aucun support SVG n'est présent ...)

Donc, une possibilité serait d'écrire moi-même un code d'extension de brochure basé sur SVG avec son propre repli sur VML. Ce serait un sacré travail. : /

Quelqu'un at-il une meilleure proposition?

fgysin réintègre Monica
la source
Je viens juste de réaliser que je n'ai jamais accepté de réponse. J'ai choisi celle de @dobrych parce que Raphaël semble être une très belle bibliothèque et fournit une belle solution de rechange VML. Je pourrais aussi me pencher sur l'arc.js.
fgysin réintègre Monica

Réponses:

5

Compte tenu de la prise en charge d'IE8, nous n'avons pas beaucoup d'options sur la table. Je ne me souviens que d'une seule librairie SVG qui a un repli VML - Raphaël.js Vous pouvez donc essayer cette implémentation du plugin de couche Raphaël pour Leaflet. https://github.com/dynmeth/RaphaelLayer Je n'ai pas essayé le plugin moi-même, mais j'ai utilisé Raphaël avec succès. J'espère que vous pourrez en trouver une utilisation.

Voici l'exemple de travail (liens d'image vers la démo) http://visualizingurbanfutures.com/2012/09/06/maps-with-raphael-js/

Si ce n'est pas l'exigence IE8, j'irais utiliser D3 pour tous les vecteurs du Web SIG.

dobrych
la source
8

Vous pouvez utiliser le plugin arc.js pour le dépliant pour tracer des lignes courbes.

neogeomat
la source
Arc.js dessine de grandes routes de cercle, pas des courbes arbitraires.
Marc Pfister
3

Créer votre propre couche personnalisée est probablement une solution pour résoudre ce problème. Mais oui, je suis d'accord que ce serait beaucoup de travail. Une autre option serait de dessiner vos propres courbes (bezier, b-spline ou quelque chose comme ça) en fonction des coordonnées géographiques. Je n'ai aucune idée si cela a l'air sympa, mais je pourrais imaginer que le résultat ne serait pas trop mauvais et qu'il est définitivement beaucoup plus rapide. Il existe de nombreux scripts JS pour de tels algorithmes. Il pourrait être utile d'envisager de projeter vos données dans quelque chose comme UTM pour le calcul.

Si vous trouvez smth. veuillez nous le faire savoir ...

Yojimbo
la source