Leaflet: cara menggambar garis melengkung?

17

Jadi, saya mencoba menggambar garis lengkung di aplikasi saya yang didasarkan pada peta Leaflet.

Sejauh yang saya tahu Leaflet tidak mendukung menggambar garis lengkung saat ini, jadi pertanyaan saya sebenarnya lebih tentang bagaimana cara terbaik untuk mendapatkan beberapa garis lengkung funtionalitas di sana.

Masalahnya menjadi lebih sulit karena kode saya harus kompatibel dengan IE-8, yang berarti SVG murni bukanlah solusi. (Leaflet sebenarnya melakukan back-back ke VML jika mendeteksi bahwa tidak ada dukungan SVG yang hadir ...)

Jadi satu kemungkinan adalah menulis sendiri kode ekstensi leaflet berdasarkan SVG dengan fallback sendiri ke VML. Ini akan menjadi pekerjaan yang sangat berat. : /

Apakah ada yang punya usul yang lebih baik?

fgysin mengembalikan Monica
sumber
Baru saja menyadari bahwa saya tidak pernah menerima jawaban. Saya memilih yang oleh @dobrych karena Raphaël tampaknya menjadi perpustakaan yang sangat bagus dan menyediakan fallback VML yang bagus. Saya mungkin melihat ke arc.js juga.
fgysin mengembalikan Monica

Jawaban:

5

Mengingat persyaratan dukungan IE8, kami tidak memiliki banyak pilihan. Saya hanya dapat mengingat satu lib SVG yang memiliki fallback VML - Raphaël.js Jadi Anda dapat mencoba implementasi plugin lapisan Raphaël ini untuk Leaflet. https://github.com/dynmeth/RaphaelLayer Saya tidak mencoba plugin sendiri, tetapi berhasil menggunakan Raphaël. Semoga Anda dapat menemukan penggunaannya.

Berikut adalah contoh kerjanya (tautan gambar ke demo) http://visualizingurbanfutures.com/2012/09/06/maps-with-raphael-js/

Jika tidak persyaratan IE8, saya akan menggunakan D3 untuk vektor di GIS web.

dobrych
sumber
8

Anda dapat menggunakan plugin arc.js untuk leaflet untuk menggambar garis lengkung.

neogeomat
sumber
Arc.js menggambar rute lingkaran besar, bukan kurva sembarang.
Marc Pfister
3

Membuat lapisan kustom Anda sendiri mungkin merupakan salah satu solusi untuk mengatasi masalah itu. Tapi ya, saya setuju itu akan banyak pekerjaan. Pilihan lain adalah menggambar kurva Anda sendiri (bezier, b-spline atau sesuatu seperti itu) berdasarkan koordinat geografis. Saya tidak tahu apakah itu terlihat bagus, tetapi saya bisa membayangkan bahwa hasilnya tidak akan terlalu buruk dan itu pasti jauh lebih cepat dicapai. Ada banyak skrip JS untuk algoritme semacam itu. Mungkin perlu mempertimbangkan untuk memproyeksikan data Anda menjadi sesuatu seperti UTM untuk perhitungan.

Jika Anda menemukan sesuatu tolong beri tahu kami ...

Yojimbo
sumber