Memilih OpenLayers atau Leaflet? [Tutup]

93

Saya berdebat dengan salah satu kolega saya di OpenLayers v / s Leaflet. Saya menyatakan bahwa OpenLayers adalah API yang jauh lebih baik jika kami ingin membangun sebuah proyek, di mana Anda memerlukan konektivitas langsung ke Geoserver dan PostGIS.

Kemudian saya menemukan Open Data Kit , yang terlihat cukup baru tetapi memiliki fitur konektivitas dengan Geoserver dan PostGIS.

Jadi detail proyek saya adalah sebagai berikut,

  1. Gunakan antarmuka peta untuk mengambil Info Fitur
  2. Buat alat yang disesuaikan yang mengambil lat / lon dari pengguna ke mana ia mengklik peta dan kemudian mengambil Data Iklim dari raster (yang ditangani oleh skrip py di server)
  3. Mengizinkan pengguna mengunggah excel, yang dikirim ke skrip py, yang mengembalikan GeoJSON, yang menciptakan Fitur Vektor di peta
  4. Bolehkan pengguna untuk membuat poligon vektor, yang akan mengambil Fitur yang berpotongan dari Lapisan WFS.
  5. Mengambil Layer dari PostGIS Datastore di GeoServer dan menampilkan layer pada peta.

Jadi sekarang saya bingung mana yang lebih baik dan mengapa menggunakan OpenLayers di atas Leaflet lebih masuk akal atau tidak?

Sam007
sumber
1
Tergantung pada proyek.
CaptDragon
1
Sebuah. Tingkatkan pertanyaan Anda dengan memberikan rincian lebih lanjut tentang proyek. b. Anda berbicara tentang koneksi langsung ke database (postgis) untuk pengguna, apakah Anda yakin?
Pablo
maaf soal itu, perbarui detail proyek saya
Sam007
Secara umum saya lebih suka Leaflet, karena cenderung mengarah ke file .js yang lebih pendek dan lebih mudah dibaca. Tetapi OL dapat melakukan hal-hal yang tidak dapat dilakukan Leaflet, karena Anda diizinkan mengakses lebih dalam dan lebih detail - Jadi, saya setuju. Tergantung pada proyeknya, tetapi 1 suara untuk Leaflet dari saya.
MartinHvidberg

Jawaban:

87

Saya telah menggunakan OpenLayers dan Leaflet di aplikasi saya. Sudah ada begitu banyak diskusi tentang topik ini di forum ini dan yang lainnya di planet-internet. Mereka biasanya jatuh ke dalam 2 kubu - fitur dan fleksibilitas OpenLayers versus kesederhanaan Leaflet. Saya tidak akan terkejut jika seseorang menumbuhkan inisiatif "OpenLeaf" segera menikahi yang terbaik dari kedua dunia!

Saya menemukan Leaflet sangat mudah digunakan, ukuran 64K yang mungil, dibandingkan dengan lebih dari 700K Openlayers, dan dalam beberapa langkah Anda dapat membuat aplikasi yang memiliki kesegaran dan eye-candy dari aplikasi GIS web dan seluler saat ini. Stack Anda - GeoServer, PostGIS dll., Adalah stack standar, sehingga OpenLayers atau Leaflet dapat dengan mudah dimasukkan.

Karena itu, saya masih akan pergi dengan OpenLayers karena alasan berikut

  1. Hanya ada TON materi di sekitar OpenLayers. Ini jauh lebih dewasa daripada Leaflet.
  2. Lihat perbandingan tentang komitmen dan pengguna .
  3. OpenLayers, GeoServer, PostGIS stack sangat terbukti di dunia FOSS sehingga Anda berada di jalur yang padat.
  4. OpenLayers memiliki sedikit lebih banyak fitur pada Kontrol Peta .
  5. Walaupun ini sedikit lebih berfungsi untuk membuat transisi dan efek visual, ini bisa dilakukan di OpenLayers.
Ramesh Elaiyavalli
sumber
1
Juga bagaimana dengan perangkat seluler? Mana yang lebih cocok?
Sam007
1
Iya. Saat ini saya sedang membangun aplikasi seluler menggunakan OpenLayers dan SenchaTouch. Ada banyak aplikasi peta seluler yang berjalan di Openlayers. Berikut adalah beberapa contoh openlayers.org/dev/examples/?q=mobile .
Ramesh Elaiyavalli
28

Selebaran sepanjang jalan. Saya merasa Leaflet adalah langkah selanjutnya pada evolusi klien browser berbasis ubin sumber terbuka. Ka-Map -> OpenLayers -> Leaflet.

Leaflet mudah digunakan dan melakukan apa yang tertulis di kaleng. OpenLayers menjadi kembung dengan berusaha menjadi segalanya bagi semua orang, Leaflet melakukan 20% hal yang diperlukan 80% dari waktu.

ChrisInCambo
sumber
14
Jadi bukan hanya "Leaflet all the way", ini "Leaflet jika Anda tidak memerlukan semua fitur yang hilang di dalamnya". Saya setuju bahwa Leaflet jauh lebih mudah digunakan, tetapi jika Anda perlu melakukan sesuatu yang tidak umum Anda harus menggunakan OL.
Juan
1
Leaflet tidak memiliki banyak fungsi. Leaflet baik untuk peta yang sangat dasar tetapi pada seperti yang sudah dijelaskan oleh Ramesh Elaiyavalli Ol-3 adalah yang terbaik dan Anda juga dapat mengurangi ukuran dengan memilih fitur dengan menggunakan custom built.
Abhijit Gujar
18

Meskipun saya menggunakan Leaflet dalam aplikasi webGIS saya, OpenLayers memiliki lebih banyak keunggulan dibandingkan Leaflet. Sebagai contoh jika Anda ingin menggunakan aplikasi Anda di perangkat seluler, OpenLayers adalah suatu keharusan untuk saat ini.

Ada banyak sumber daya yang terkait dengan OpenLayers, namun saya pikir mengembangkan aplikasi dengan Leaflet lebih mudah daripada OpenLayers (lebih mudah untuk membaca kode dan memahami strukturnya). Jika Anda memiliki batasan waktu dan memiliki sedikit pengalaman dengan Javascript, menggunakan Leaflet mungkin merupakan solusi yang lebih baik untuk menyelesaikannya dengan lebih cepat. Atau jika Anda ingin mengembangkan aplikasi yang sangat sederhana, Leaflet bisa lebih mudah untuk beradaptasi pada awalnya.

Tetapi setelah saya mengembangkan aplikasi dengan Leaflet, sekarang saya mengatakan saya berharap saya telah menggunakan OpenLayers di awal. Karena ketika aplikasi Anda menjadi kompleks (seperti memanggil lapisan kompleks dari basis data, mengembangkan aplikasi seluler yang kuat, dll.), Leaflet mulai membatasi kemampuan Anda. Jadi, saya pikir menghabiskan sedikit lebih banyak waktu untuk memahami dan mempelajari struktur OpenLayers pada tahap pembelajaran pada akhirnya akan sia-sia.

Karena rincian proyek dipertimbangkan;

Gunakan antarmuka peta untuk mengambil Info Fitur:

Leaflet dan OpenLayers dapat melakukannya dengan sempurna. Intinya di sini adalah untuk mendapatkan koordinat acara klik dan mengirim permintaan ke server. Tautan permintaan akan sama untuk kedua aplikasi.

Buat alat yang disesuaikan yang membawa lat / lon dari pengguna ke tempat ia mengklik peta dan kemudian mengambil Data Iklim dari raster (yang ditangani oleh skrip py di server):

Saya mencapainya sendiri di Leaflet (saya juga menyebut data iklim). Saya tidak mengambil data raster dari server tetapi intinya di sini adalah membuat tautan permintaan, yang mudah untuk kedua aplikasi. Namun jika Anda ingin memilih poligon pada tahap ini agak sulit dicapai di Leaflet.

Mengizinkan pengguna mengunggah excel, yang dikirim ke skrip py, yang mengembalikan GeoJSON, yang membuat Fitur Vektor di peta:

Kira-kira garis pekerjaan yang sama untuk Leaflet dan OpenLayers. Saya tidak bisa mengatakan mana yang lebih baik.

Izinkan pengguna untuk membuat poligon vektor, yang akan mengambil Fitur yang berpotongan dari Lapisan WFS:

Saya tidak tahu tentang kemampuan mengedit OpenLayers tetapi Leaflet memiliki plugin bernama Leaflet Draw, yang mudah digunakan dan memanipulasi gambar (di sisi javascript) setelah menggambar selesai. Leaflet juga memiliki dukungan WFS-T jika Anda ingin memanipulasi data spasial pada server WFS. OpenLayers mungkin lebih baik dari itu, saya tidak tahu.

Mengambil Layer dari PostGIS Datastore di GeoServer dan menampilkan layer pada peta:

OpenLayers jelas lebih baik untuk pekerjaan ini karena lebih mudah untuk menghubungkan server PostGIS.

Omong-omong, ada suite aplikasi yang disebut OpenGeo Suite yang mencakup OpenLayers, GeoServer, dan PostGIS; yang akan menyelesaikan semua masalah yang dimiliki pengembang aplikasi GIS berbasis web.

mkturkeri
sumber
Jawaban terinci yang bagus!
Devdatta Tengshe
Tiga tahun kemudian, bagaimana perasaan Anda tentang Leaflet & perangkat seluler? Adakah perbaikan?
Mawg
10

Ada perbandingan besar pada dua kerangka kerja dalam presentasi ini :

Leaflet vs OpenLayers

Dan artikel lain juga memiliki ringkasan yang bagus:

Pelanggan sering bertanya kepada kami, "Pustaka pemetaan JavaScript sisi klien mana yang terbaik untuk digunakan saat membangun aplikasi web modern dengan Map Suite Edisi WebAPI?" Seperti banyak hal dalam Pengembangan Perangkat Lunak, jawabannya tidak selalu jelas. Jawabannya tergantung pada kebutuhan dan preferensi pengembangan Anda. Karena kedua kerangka kerja tersebut didokumentasikan dengan baik dan bekerja dengan kokoh di perangkat seluler, kami biasanya mengajukan pertanyaan berikut untuk membantu pelanggan kami membuat keputusan yang tepat.

Seberapa sederhana memetakan bagian dari aplikasi yang Anda buat?

Semakin sederhana persyaratan pemetaan, semakin kita condong ke arah menggunakan Leaflet. Leaflet melakukan pekerjaan luar biasa dalam menangani tugas pemetaan yang paling umum seperti mengonsumsi ubin peta dasar, menggeser, dan memperbesar, dan API-nya mudah dimengerti dan mudah digunakan. Namun, setelah Anda melampaui tugas-tugas umum, Anda perlu menggunakan Leaflet Plugins dan ini di mana segalanya menjadi lebih rumit. Mungkin ada fungsi yang Anda cari yang sayangnya tidak ada.

Jika Anda memiliki aplikasi yang kaya fitur dengan banyak fungsionalitas, kami tertarik untuk menggunakan OpenLayers 3. OpenLayers 3 memiliki API yang lebih besar dan lebih kompleks yang akan memungkinkan Anda untuk melakukan semua fungsi pemetaan umum yang dilakukan Leaflet ditambah banyak lagi. Misalnya, jika aplikasi Anda memiliki persyaratan yang melibatkan proyeksi peta, OpenLayers 3 akan memungkinkan Anda untuk memenuhi persyaratan ini lebih mudah daripada jika Anda menggunakan Leaflet. Tentu saja, dengan API yang lebih kuat hadir kurva pembelajaran yang lebih curam, jadi ingatlah itu ketika memberikan perkiraan kepada para pemangku kepentingan proyek Anda.

Berapa kode JavaScript yang ingin Anda tulis?

Karena Leaflet adalah API tingkat yang lebih tinggi daripada OpenLayers 3, biasanya dibutuhkan lebih sedikit kode JavaScript untuk mengaktifkan dan menjalankannya. Namun, begitu Anda ingin menyimpang dari fungsionalitas standar yang disediakan oleh Leaflet, kemungkinan Anda akhirnya akan menulis banyak kode kecuali ada plug-in yang memenuhi kebutuhan Anda. Di sisi lain, OpenLayers 3 adalah API tingkat lebih rendah yang membutuhkan lebih banyak pengkodean JavaScript untuk menginisialisasi dan mengatur peta. Ini bisa nyaman ketika Anda memiliki persyaratan khusus dan rumit, karena API memungkinkan lebih banyak kontrol atas peta dan data Anda.

Ringkasan

Sebagai penutup, ada saat-saat terbaik menggunakan Leaflet dan saat-saat OpenLayers 3 menang. Jika persyaratan pemetaan Anda sederhana, Anda sebaiknya memeriksa Leaflet terlebih dahulu. Tetapi jika Anda mencari perpustakaan pemetaan yang lebih dapat dikustomisasi dan tidak keberatan menjadi kotor dengan pengembangan JavaScript, jangkau OpenLayers 3.

Karena kedua perpustakaan memiliki kekuatan masing-masing, kami telah menyertakan sampel kode untuk Leaflet dan OpenLayers 3 dengan Map Suite WebAPI Edition yang dapat diunduh melalui Pusat Produk atau dilihat di ThinkGeo Wiki. Sampel ini adalah sumber daya yang berguna ketika memutuskan perpustakaan pemetaan Javascript sisi klien yang akan digunakan untuk aplikasi Anda karena Anda dapat melihat secara langsung pengalaman pengguna yang berbeda dan persyaratan pengkodean antara kedua perpustakaan.

Dari http://blog.thinkgeo.com/2015/09/09/leaflet-vs-openlayers-3-which-is-the-better-client-side-javascript-mapping-library/

Simon Timur
sumber
5

Saya baru saja melewati keputusan ini untuk proyek seluler baru saya dan pemenangnya adalah OpenLayers. Leaflet, pada tulisan ini, agak lamban di ponsel. Transisi untuk pan / zoom tidak terasa mulus dan kadang-kadang membingungkan. Tidak mau asli, saya mencoba OpenLayers dan pengalamannya jauh lebih baik. Masih tidak sebagus asli, tapi jelas bisa digunakan dan merupakan opsi nyata.

Christian Fritz
sumber
1
Menarik. Saya berharap Leaflet lebih ringan dan halus di perangkat seluler. Terima kasih telah berbagi pengalaman ini.
LarsH
@Christian Fritz - apakah pengalaman Anda dengan OL3 atau OL2?
sfletche
2
@ sfletche perbandingannya antara OL3 dan leaflet 0.7.3
Christian Fritz
Tiga tahun kemudian, bagaimana perasaan Anda tentang Leaflet & perangkat seluler? Adakah perbaikan?
Mawg
iya tentu saja. Kami menggunakan selebaran dalam produksi dan tidak melihat masalah apa pun di ponsel.
Christian Fritz
3

Saya akan mengatakan periksa dokumentasi API untuk keduanya. Bagi saya tampaknya OpenLayersmenawarkan banyak fitur, namun waktu pengembangan / debugging lebih lama.

Leafletlebih seksi dan lebih mudah daripada OL, tetapi jika Anda ingin melakukan banyak hal dengan peta Anda, saya pikir suatu hari nanti Anda mungkin memerlukan fitur yang belum diimplementasikan Leaflet!

Saya sangat merekomendasikan untuk melihat API! OpenLayers & Leaflet

Anda juga mungkin perlu mempertimbangkan bahwa rilis stabil saat ini untuk Leaflet adalah 0.5.1tetapi 2.12untuk OpenLayers.

NB Jika saya ingin mengembangkan aplikasi seluler, saya pikir saya akan melakukannya Leaflet.

Mahdi
sumber
3

Ada tutorial dasar yang membandingkan API dari OpenLayers 3 dan Leaflet dengan meminta Anda membuat hal yang sama di keduanya. Ini ditulis oleh Astun Technology dan tugas tutorialnya adalah:

  • Peta dasar dengan ubin OSM
  • Peta OS-GB dengan ubin Survei persenjataan
  • Lapisan GeoJSON dengan spidol
    • Info untuk lapisan GeoJSON
  • Lapisan WMS
    • Info untuk lapisan WMS

Inilah tautannya: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html

Crantok
sumber
scrolling oleh
bilah
3

Itu tergantung pada apa yang Anda coba lakukan. Leaflet lebih sederhana dan lebih cepat untuk 80% proyek peta web.

Cara yang sama Anda tidak perlu pesawat ruang angkasa untuk berkeliling lingkungan Anda, sebagian besar waktu saya menemukan OpenLayers terlalu rumit untuk melakukan hal-hal yang sangat sederhana, khususnya dari Versi 3.

Misalnya, membuat pemilih lapisan membutuhkan 5-6 baris kode di Leaflet, sedangkan di OpenLayers 4 Anda harus membuatnya dari awal. Anda memiliki alat yang luar biasa untuk melakukannya, tetapi sebagian besar waktu Anda tidak ingin pemilih lapisan yang disesuaikan, hanya yang berfungsi dengan baik.

Hal penting lain yang perlu dipertimbangkan adalah bahwa sebagian besar informasi, tutorial dan debat di internet adalah tentang OpenLayers 2. Mereka ketinggalan zaman, karena Versi 3 tidak kompatibel dengan Versi 2. Dan kita sekarang di Versi 4. Versi 2 memiliki banyak hal sederhana seperti pemilih lapisan, sembulan, dll bersama dengan fungsi yang lebih kompleks; tetapi untuk alasan apa pun mereka hanya menghapus hal-hal itu untuk berkembang menjadi sistem yang kompleks dan sangat kuat. Selain itu, sekarang ada lebih banyak informasi tentang Leaflet daripada tahun 2012, dan ini adalah teknologi yang lebih matang.

Sebagai kesimpulan, tanyakan pada diri Anda apakah Anda membutuhkan mobil atau pesawat ruang angkasa. Anda tidak akan terbang dengan mobil, tetapi mengendarai pesawat ruang angkasa untuk berbelanja bisa sangat rumit.

Carlos Sarille
sumber