Faltblatt: Wie zeichne ich gekrümmte Linien?

17

Daher versuche ich, in meiner Anwendung, die auf einer Leaflet-Karte basiert, gekrümmte Linien zu zeichnen.

Soweit ich weiß, unterstützt Leaflet das Zeichnen von gekrümmten Linien im Moment nicht. Meine Frage ist also, wie ich die Funktionalität von gekrümmten Linien am besten nutzen kann.

Das Problem wird erschwert, weil mein Code IE-8-kompatibel sein muss, was bedeutet, dass reines SVG keine Lösung ist. (Leaflet führt tatsächlich einen Fallback zu VML durch, wenn festgestellt wird, dass keine SVG-Unterstützung vorhanden ist ...)

Eine Möglichkeit wäre also, selbst einen Flyer-Erweiterungscode zu schreiben, der auf SVG mit einem eigenen Fallback auf VML basiert . Das wäre verdammt viel Arbeit. : /

Hat jemand einen besseren Vorschlag?

fgysin setzt Monica wieder ein
quelle
Gerade erst wurde mir klar, dass ich keine Antwort akzeptierte. Ich habe mir die von @dobrych ausgesucht, weil Raphaël eine sehr nette Bibliothek zu sein scheint und einen netten VML-Fallback bietet. Ich könnte auch in die arc.js schauen.
fgysin setzt Monica

Antworten:

5

In Anbetracht der Anforderungen an die IE8-Unterstützung stehen nicht viele Optionen zur Verfügung. Ich kann mich nur an eine SVG-Bibliothek mit VML-Fallback erinnern - Raphaël.js. Sie können also diese Raphaël-Layer-Plugin-Implementierung für Leaflet ausprobieren. https://github.com/dynmeth/RaphaelLayer Ich habe das Plugin nicht selbst ausprobiert, sondern Raphaël erfolgreich eingesetzt. Hoffe, Sie können eine Verwendung finden.

Hier ist das Arbeitsbeispiel (Bildlinks zur Demo) http://visualizingurbanfutures.com/2012/09/06/maps-with-raphael-js/

Wenn nicht IE8-Anforderung, würde ich D3 für alle Vektoren im Web-GIS verwenden.

Dobrych
quelle
8

Sie können das arc.js- Plugin für Broschüren verwenden, um gekrümmte Linien zu zeichnen.

neogeomat
quelle
Arc.js zeichnet Großkreisrouten, keine willkürlichen Kurven.
Marc Pfister
3

Das Erstellen einer eigenen benutzerdefinierten Ebene ist wahrscheinlich eine Lösung für dieses Problem. Aber ja, ich bin damit einverstanden, dass es eine Höllenarbeit sein würde. Eine andere Möglichkeit wäre, eigene Kurven (Bezier, B-Spline oder ähnliches) basierend auf den geografischen Koordinaten zu zeichnen. Ich habe keine Ahnung, ob das schön aussieht, aber ich könnte mir vorstellen, dass das Ergebnis nicht so schlecht wäre und es definitiv viel schneller erreicht wird. Es gibt viele JS-Skripte für solche Algorithmen. Es lohnt sich möglicherweise zu überlegen, Ihre Daten für die Berechnung in so etwas wie UTM zu projizieren.

Wenn Sie etw finden raus lass es uns wissen ...

Yojimbo
quelle