OpenLayers veya Leaflet'i seçmek? [kapalı]


93

OpenLayers v / s Leaflet'teki meslektaşlarımdan biriyle tartışıyordum. Geoserver ve PostGIS ile doğrudan bağlantıya ihtiyaç duyacağınız bir proje inşa etmek istiyorsak OpenLayers'ın daha iyi bir API olduğuna dikkat çektim.

Sonra oldukça yeni görünen ama Geoserver ve PostGIS ile bağlantı özelliklerine sahip olan Open Data Kit'i buldum.

Yani benim proje detayları şöyle:

  1. Özellik Bilgisini almak için harita arayüzünü kullanın
  2. Kullanıcıdan haritayı tıkladığı yere kadar lat / lon alan ve ardından İklim Verilerini rasterden alan (sunucudaki bir py betiği tarafından işlenir) alan özelleştirilmiş bir araç oluşturun
  3. Kullanıcının, haritada Vektör Özellikleri oluşturan bir GeoJSON döndüren py komut dosyasına gönderilen excel'i yüklemesine izin verir
  4. Kullanıcının, WFS Katmanından kesiştiği Özellikleri alacağı vektör çokgenler oluşturmasına izin verin.
  5. GeoServer'daki PostGIS Veri Deposundan Katmanı alır ve katmanları harita üzerinde görüntüler.

Şimdi, hangisinin daha iyi olduğu ve neden Leaflet üzerinde OpenLayers kullanmanın daha anlamlı olacağı konusunda kafam karıştı.


1
Projeye bağlı.
CaptDragon 20:12

1
a. Projeyle ilgili daha fazla ayrıntı vererek sorunuzu geliştirin. b. Kullanıcılar için veritabanına (postgis) doğrudan bağlantıdan bahsediyorsunuz, emin misiniz?
Pablo

bunun için üzgünüm, proje bilgilerimi güncelledi
Sam007


Genel olarak Leaflet'i tercih ederim, çünkü daha kısa ve daha okunaklı .js dosyalarına yönelme eğilimindedir. Ancak OL, Leaflet'in yapamadığı şeyleri yapabilir, çünkü daha derine ve daha ayrıntılı erişime izin verilir - Yani, katılıyorum. Bu projeye bağlı, ancak benden Broşür için 1 oy.
MartinHvidberg

Yanıtlar:


87

Uygulamalarımda hem OpenLayers hem de Leaflet kullandım. Bu forumda bu konuyla ve diğerleriyle gezegen-internette çok fazla tartışma yapıldı. Genellikle 2 kampa girerler - OpenLayers'ın Broşürün sadeliğine karşı özellikleri ve esnekliği. Birisi kısa sürede iki dünyanın da en iyileriyle evlenecek bir "OpenLeaf" girişimi başlatırsa şaşırmam!

Leaflet'i kullanımı çok basit, minik 64K boyutunda, 700K'lık Openlayer'lara kıyasla buldum ve çok az adımda, günümüzün web ve mobil GIS uygulamalarının tazeliğini ve göz şekerini içeren uygulamalar oluşturabilirsiniz. Yığınınız - GeoServer, PostGIS vb. Standart bir yığtır, bu nedenle OpenLayers veya Leaflet kolayca dahil edilebilir.

Bunu söyledikten sonra , aşağıdaki sebeplerden dolayı hala OpenLayers ile gideceğim

  1. OpenLayers çevresinde sadece bir ton malzeme var. Leaflet'ten çok daha olgun.
  2. Komisyonlar ve kullanıcılar üzerindeki karşılaştırmaya göz atın .
  3. OpenLayers, GeoServer, PostGIS yığını FOSS dünyasında o kadar ispatlanmış ki sağlam bir yoldasınız.
  4. OpenLayers, Harita Kontrollerinde biraz daha fazla özelliğe sahip .
  5. Geçişler ve görsel efektler oluşturmak için biraz daha iş olsa da, OpenLayers'da yapılabilir.

1
Ayrıca mobil cihazlardan ne haber? Hangisi daha uygun?
Sam007

1
Evet. Şu anda OpenLayers ve SenchaTouch kullanarak mobil uygulamalar yapıyorum. Openlayers'da çalışan birçok mobil harita uygulaması var. İşte bazı örnekler openlayers.org/dev/examples/?q=mobile .
Ramesh Elaiyavalli

28

Broşürü sonuna kadar. Leaflet'in açık kaynaklı karo tabanlı tarayıcı istemcilerinin gelişimindeki bir sonraki adım olduğunu hissediyorum. Ka-Harita -> OpenLayers -> Broşür.

Broşür kullanımı basit ve teneke söylediklerini yapar. OpenLayers, tüm insanlara her şey olmaya çalışarak şişirildi, Leaflet, zamanın% 80'ini gerektiren işlerin% 20'sini yapıyor.


14
Bu yüzden, sadece "tümüyle broşür" değil, "içinde eksik olan tüm bu özelliklerden hiçbirine ihtiyacınız yoksa, broşür." Leaflet'in kullanımı daha kolay olduğu konusunda hemfikirim, ancak o kadar yaygın olmayan bir şey yapmanız gerekirse, OL ile gitmek zorundasınız.
Juan

1
Broşürde pek çok işlev yoktur. Broşür sadece çok basit haritalar için iyidir, fakat önceden Ramesh Elaiyavalli Ol-3 tarafından açıklandığı gibi en iyisidir ve ayrıca özel yapım kullanarak özellikleri seçerek boyutunu azaltabilirsiniz.
Abhijit Gujar

18

WebGIS uygulamamda Leaflet'i kullanmama rağmen, OpenLayers Leaflet'e göre çok daha fazla avantaja sahip. Örneğin, uygulamanızı mobil cihazlarda kullanmak istiyorsanız, OpenLayers şimdilik bir zorunluluktur.

OpenLayers ile ilgili birçok kaynak var, ancak Leaflet ile uygulama geliştirmenin OpenLayers'tan daha kolay olduğunu düşünüyorum (bir kodu okumak ve yapıyı anlamak daha kolay). Zaman sınırlamanız varsa ve Javascript ile ilgili biraz deneyiminiz varsa, Leaflet'i kullanmak daha hızlı sonuç almak için daha iyi bir çözüm olabilir. Ya da çok basit bir uygulama geliştirmek istiyorsanız, ilk başta uyarlamak çok daha kolay olabilir.

Ancak Leaflet ile bir uygulama geliştirdikten sonra, şimdiden başında OpenLayers'ı kullanabilmeyi diliyorum. Çünkü uygulamanız karmaşık hale geldiğinde (örneğin bir veritabanından karmaşık katmanları çağırmak, sağlam bir mobil uygulama geliştirmek, vb.), Leaflet yeteneklerinizi sınırlandırmaya başlar. Bu yüzden, öğrenme aşamasında OpenLayers yapısını anlamak ve öğrenmek için biraz daha fazla zaman harcamanın sonunda buna değeceğini düşünüyorum.

Proje detayları dikkate alındığında;

Özellik Bilgisini almak için harita arayüzünü kullanın:

Hem Leaflet hem de OpenLayers bunu mükemmel şekilde yapabilir. Buradaki nokta, click olayının koordinatlarını almak ve sunucuya istek göndermek. İstek bağlantısı her iki uygulama için aynı olacaktır.

Kullanıcıdan haritayı tıkladığı yere kadar lat / lonu alan ve ardından İklim Verilerini rasterden alan (sunucudaki bir py betiği tarafından işlenir) getiren özelleştirilmiş bir araç oluşturun:

Bunu Leaflet'te elde ettim (bu arada iklim verilerini de arıyordum). Raster verilerini bir sunucudan almadım ama buradaki amaç her iki uygulama için de kolay olan bir istek bağlantısı oluşturmak. Ancak, bu aşamada bir çokgen seçmek istiyorsanız, Leaflet'te elde edilmesi biraz zordur.

Kullanıcının, haritada Vektör Özellikleri oluşturan bir GeoJSON döndüren py komut dosyasına gönderilen excel'i yüklemesine izin verir:

Leaflet ve OpenLayers için yaklaşık aynı çalışma çizgisi. Hangisinin daha iyi olduğunu söyleyemem.

Kullanıcının WFS Katmanından kesiştiği Özellikleri alacağı vektör çokgenler oluşturmasına izin ver:

OpenLayers'ın düzenleme yetenekleri hakkında hiçbir fikrim yok, ancak Leaflet, çizim tamamlandıktan sonra çizimleri (javascript tarafında) kullanımı ve işlenmesi kolay olan Leaflet Draw adlı bir eklentiye sahip. Ayrıca, WFS sunucusundaki uzamsal verileri değiştirmek isterseniz, Leaflet'in bir WFS-T desteği vardır. OpenLayers bundan daha iyi olabilir, bilmiyorum.

GeoServer'daki PostGIS Veri Deposundan Katmanı alır ve katmanları harita üzerinde görüntüler:

Kesinlikle OpenLayers bu iş için daha iyidir çünkü PostGIS sunucusuna bağlanmak daha kolaydır.

Bu arada, OpenLayers, GeoServer ve PostGIS'i içeren OpenGeo Suite adlı bir uygulama paketi var ; bir web tabanlı GIS uygulama geliştiricisi olan tüm sorunları çözecek.


Güzel ayrıntılı cevap!
Devdatta Tengshe

Üç yıl sonra, Leaflet ve mobil cihazlar hakkında ne düşünüyorsunuz? Herhangi bir gelişme?
Mawg

10

Bu sunumda iki çerçeve üzerinde büyük bir karşılaştırma var :

OpenLayers vs Leaflet

Ve başka bir makalenin de harika bir özeti var:

Müşteriler sık ​​sık bize, “Map Suite WebAPI Sürümü ile modern bir web uygulaması oluştururken kullanılabilecek en iyi JavaScript eşleme kitaplığı hangisidir?” Yazılım Geliştirme'deki pek çok şey gibi, yanıt her zaman net değildir. Cevap gereksinimlerinize ve gelişim tercihlerinize bağlıdır. Her iki çerçeve de iyi belgelendirildiğinden ve mobil cihazlarda tam olarak çalıştığından, müşterilerimizin doğru kararı vermelerine yardımcı olmak için genellikle aşağıdaki soruları soruyoruz.

Oluşturmakta olduğunuz uygulamanın haritalama kısmı ne kadar basit?

Haritalama gereksinimleri ne kadar basit olursa, Leaflet'i kullanma yolunda o kadar eğilimli oluruz. Leaflet, temel harita döşemelerini kullanmak, kaydırma ve yakınlaştırma gibi en yaygın haritalama görevlerini yerine getirme konusunda harika bir iş çıkarmaktadır ve API'si anlaşılması ve kullanımı kolaydır. Ancak ortak görevlerin ötesine geçtiğinizde, Leaflet Eklentilerini ve bunun daha da karmaşıklaştığı bir yerde kullanmanız gerekir. Aradığınız işlevsellik olabilir, ne yazık ki var olmaz.

Çok sayıda işlevselliğe sahip zengin özellikli bir uygulamanız varsa, OpenLayers 3'ü kullanmaya yöneliyoruz. OpenLayers 3, Leaflet'in sunduğu birçok genel haritalama işlevini ve daha fazlasını yapmanıza olanak sağlayacak daha geniş ve karmaşık bir API'ye sahiptir. Örneğin, uygulamanızın harita projeksiyonu ile ilgili gereksinimleri varsa, OpenLayers 3, Leaflet kullandığınızdan daha kolay bir şekilde bu gereksinimleri yerine getirmenize izin verecektir. Elbette, daha güçlü bir API ile daha dik bir öğrenme eğrisi geliyor, bu yüzden proje paydaşlarınıza tahminler verirken bunu aklınızda bulundurun.

Ne kadar JavaScript kodu yazmak istiyorsun?

Leaflet, OpenLayers 3'ten daha yüksek seviyeli bir API olduğundan, onu çalıştırmak ve çalıştırmak için genellikle daha az JavaScript kodu gerekir. Ancak, Leaflet'in sağladığı standart işlevsellikten sapmak istediğinizde, tam gereksinimlerinizi karşılayabilecek bir eklenti olmadığı sürece, çok fazla kod yazmanız olasıdır. Öte yandan, OpenLayers 3, haritayı başlatmak ve ayarlamak için daha fazla JavaScript kodlaması gerektiren daha düşük bir API'dir. API harita ve verileriniz üzerinde daha fazla kontrol sağladığından, özelleştirilmiş ve karmaşık gereksinimleriniz olduğunda bu kullanışlı olabilir.

özet

Kapanışta Leaflet'i kullanmanın en iyi olduğu zamanlar ve OpenLayers 3'ün kazandığı zamanlar vardır. Haritalama gereksinimleriniz basitse, önce Leaflet'i incelemek sizin yararınızadır. Ancak daha özelleştirilebilir ve JavaScript geliştirmeyle kirlenmeye aldırmayan bir eşleme kütüphanesi arıyorsanız, OpenLayers 3'e ulaşın.

Her iki kütüphanenin de güçlü yanlarına sahip olduğu için, Product Center'dan indirilebilen veya ThinkGeo Wiki'de görüntülenebilen Map Suite WebAPI Sürümü ile hem Leaflet hem de OpenLayers 3 için kod örnekleri ekledik. Bu örnekler, uygulamanız için hangi müşteri tarafı Javascript eşleme kitaplığının kullanılacağına karar verirken faydalı kaynaklardır, çünkü iki kullanıcı arasındaki farklı kullanıcı deneyimlerini ve kodlama gereksinimlerini ilk elden görebilirsiniz.

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


5

Yeni mobil projem için bu karardan yeni geçtim ve en açık kazanan OpenLayers. Broşür, bu yazı itibariyle, mobil cihazlarda oldukça halsizdi. Pan / zum geçişleri düzgün değildi ve zaman zaman kafa karıştırıcıydı. Yerli olmaktan uzak, OpenLayers'ı denedim ve deneyim çok daha iyi. Hala yerli kadar iyi değil ama kesinlikle kullanılabilir ve gerçek bir seçenek.


1
İlginç. Leaflet'in mobil bir cihazda daha hafif ve yumuşak olmasını beklerdim. Bu deneyimi paylaştığınız için teşekkür ederiz.
LarsH 10:14

@ Hıristiyan Fritz - OL3 veya OL2 ile deneyiminiz oldu?
sfletche

2
@sfletche karşılaştırması OL3 ile broşür 0.7.3 arasındaydı
Christian Fritz

Üç yıl sonra, Leaflet ve mobil cihazlar hakkında ne düşünüyorsunuz? Herhangi bir gelişme?
Mawg

Evet kesinlikle. Broşürü üretimde kullanıyoruz ve mobilde herhangi bir sorun görmüyoruz.
Christian Fritz

3

Her ikisi için de API belgelerini kontrol edin derdim. Benim için çok OpenLayersçeşitli özellikler sunuyor, ancak geliştirme / hata ayıklama süresi daha uzun.

LeafletOL yerine daha seksi ve çok daha kolay, ancak haritanızla çok şey yapmak istiyorsanız, bir gün Leaflethenüz uygulanmayan bir özelliğe ihtiyaç duyabileceğinizi düşünüyorum !

API’lara göz atmanızı gerçekten tavsiye ederim! OpenLayers ve Broşür

Ayrıca broşür olduğunu, şu anki kararlı sürüme dikkate almak gerekebilir 0.5.1ama bu kadar 2.12openlayers için.

PS Mobil bir uygulama geliştirmek istersem, gidebileceğimi düşünüyorum Leaflet.


3

Hem OpenLayers 3 hem de Leaflet'in API'lerini her ikisinde de aynı şeyi inşa ettirerek karşılaştıran temel bir eğitim var. Astun Teknoloji tarafından yazılmış ve öğretici görevleri şunlardır:

  • OSM çinileri ile temel harita
  • Mühimmat Anketi çinileri ile OS-GB Haritası
  • İşaretçileri olan GeoJSON katmanı
    • GeoJSON katmanı için bilgi
  • WMS katmanı
    • WMS katmanı için bilgi

İşte link: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html


boşluk çubuğu tarafından kaydırma btw bozuldu
bugmenot123

3

Ne yapmaya çalıştığınıza bağlı. Broşür web harita projelerinin% 80'i için daha basit ve hızlı.

Aynı şekilde mahallenizde dolaşmak için bir uzay gemisine ihtiyacınız yok, çoğu zaman OpenLayers'ı gerçekten basit şeyler yapmak için çok karmaşık buldum, özellikle de Versiyon 3'ten.

Örneğin, bir katman seçici oluşturmak, Leaflet'te belki 5-6 kod satırı alırken, OpenLayers 4'te sıfırdan oluşturmanız gerekir. Bunu yapmak için harika araçlara sahipsiniz, ancak çoğu zaman özelleştirilmiş bir katman seçicisi istemezsiniz, yalnızca bir tanesi iyi çalışır.

Dikkate alınması gereken bir diğer önemli husus ise, İnternet'teki bilgilerin, derslerin ve tartışmaların çoğunun OpenLayers 2 ile ilgili olduğudur. Versiyon 3, Versiyon 2 ile uyumlu olmadığı için güncel değiller. daha karmaşık fonksiyonlarla birlikte katman seçici, açılır pencereler, vb. gibi birçok basit şey vardı; Fakat ne olursa olsun, karmaşık ve çok güçlü bir sisteme doğru gelişmek için bu tür şeyleri siler. Ayrıca, artık Leaflet hakkında 2012'den daha fazla bilgi var ve bu daha olgun bir teknoloji.

Sonuç olarak, bir arabaya veya bir uzay gemisine ihtiyacınız olup olmadığını kendinize sorun. Bir araba ile uçmayacaksınız, ancak alışveriş yapmak için bir uzay gemisini sürmek gerçekten karmaşık olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.