La scelta di OpenLayers o Leaflet? [chiuso]


93

Stavo discutendo con uno dei miei colleghi su OpenLayers v / s Leaflet. Ho sottolineato che OpenLayers è un'API molto migliore se desideriamo creare un progetto, in cui è necessaria una connettività diretta con Geoserver e PostGIS.

Poi ho trovato Open Data Kit , che sembra piuttosto nuovo ma ha le funzionalità di connettività con Geoserver e PostGIS.

Quindi i dettagli del mio progetto sono i seguenti,

  1. Utilizzare l'interfaccia della mappa per recuperare le informazioni sulle funzioni
  2. Crea uno strumento personalizzato che porta lat / lon dall'utente come dove fa clic sulla mappa e quindi recupera i dati climatici dal raster (che è gestito da uno script PY sul server)
  3. Consente all'utente di caricare Excel, che viene inviato allo script PY, che restituisce un GeoJSON, che crea funzionalità vettoriali sulla mappa
  4. Consenti all'utente di creare poligoni vettoriali, che recupereranno le Funzionalità che interseca dal Livello WFS.
  5. Recupera livello dal archivio dati PostGIS su GeoServer e visualizza i livelli sulla mappa.

Quindi ora sono confuso su quale sia meglio e perché usare OpenLayers su Leaflet abbia più senso o no?


1
Dipende dal progetto.
CaptDragon,

1
un. Migliora la tua domanda fornendo maggiori dettagli sul progetto. b. Stai parlando della connessione diretta al database (postgis) per gli utenti, sei sicuro?
Pablo,

scusatemi, ho aggiornato i dettagli del mio progetto
Sam007,


In generale preferisco Leaflet, perché tende a portare a file .js più brevi e più leggibili. Ma OL può fare cose che Leaflet non può, perché ti è concesso un accesso più profondo e più dettagliato - Quindi, sono d'accordo. Dipende dal progetto, ma 1 voto per Leaflet da parte mia.
Martin,

Risposte:


87

Ho usato sia OpenLayers che Leaflet nelle mie app. Ci sono state molte discussioni su questo argomento in questo forum e altri su internet planet. Di solito rientrano in 2 campi: caratteristiche e flessibilità di OpenLayer rispetto alla semplicità di Leaflet. Non sarei sorpreso se qualcuno generasse un'iniziativa "OpenLeaf" che presto sposerà il meglio dei due mondi!

Ho trovato Leaflet molto semplice da usare, una dimensione minuta di 64 KB, rispetto a oltre 700.000 Openlayer, e in pochissimi passaggi puoi creare app che hanno la freschezza e la bellezza delle app GIS web e mobile di oggi. Il tuo stack - GeoServer, PostGIS ecc., È uno stack standard, quindi OpenLayers o Leaflet possono essere facilmente incorporati.

Detto questo, andrei comunque con OpenLayers per i seguenti motivi

  1. C'è solo una tonnellata di materiale attorno a OpenLayers. È molto più maturo di Leaflet.
  2. Dai un'occhiata al confronto su commit e utenti .
  3. Lo stack OpenLayers, GeoServer, PostGIS è così provato nel mondo FOSS che stai seguendo un percorso solido.
  4. OpenLayers ha un po 'più di funzionalità sui controlli delle mappe .
  5. Mentre è un po 'più di lavoro per creare transizioni ed effetti visivi, può essere fatto in OpenLayers.

1
E i dispositivi mobili? Quale è più adatto?
Sam007,

1
Sì. Attualmente sto costruendo app mobili usando OpenLayers e SenchaTouch. Esistono molte app per mappe mobili in esecuzione su Openlayer. Ecco alcuni esempi di openlayers.org/dev/examples/?q=mobile .
Ramesh Elaiyavalli,

28

Opuscolo fino in fondo. Sento che Leaflet è il prossimo passo sull'evoluzione dei client browser basati su piastrelle open source. Ka-Map -> OpenLayers -> Leaflet.

Il volantino è semplice da usare e fa esattamente ciò che dice sulla scatola. OpenLayers è diventato gonfio nel tentativo di essere tutto per tutte le persone, Leaflet fa il 20% delle cose che sono necessarie l'80% delle volte.


14
Quindi non è solo "Opuscolo fino in fondo", è "Opuscolo se non hai bisogno di nessuna di quelle funzionalità mancanti". Sono d'accordo che Leaflet è molto più semplice da usare, ma se devi fare qualcosa di non così comune devi andare con OL.
Juan,

1
Opuscolo privo di molte funzioni. Il volantino è utile solo per le mappe di base, ma come già spiegato da Ramesh Elaiyavalli Ol-3 è il migliore e puoi anche ridurne le dimensioni selezionando le funzionalità utilizzando la creazione personalizzata.
Abhijit Gujar,

18

Sebbene abbia usato Leaflet nella mia applicazione webGIS, OpenLayers ha molti più vantaggi rispetto a Leaflet. Ad esempio, se si desidera utilizzare l'applicazione in dispositivi mobili, OpenLayers è un must per il momento.

Esistono molte risorse correlate a OpenLayers, tuttavia penso che lo sviluppo di applicazioni con Leaflet sia più semplice di OpenLayers (è più facile leggere un codice e comprenderne la struttura). Se hai un limite di tempo e hai poca esperienza con Javascript, usare Leaflet potrebbe essere una soluzione migliore per farlo più velocemente. O se vuoi sviluppare un'applicazione molto semplice, Leaflet può essere molto più semplice da adattare all'inizio.

Ma dopo aver sviluppato un'applicazione con Leaflet, ora dico che avrei voluto utilizzare OpenLayers all'inizio. Perché quando la tua applicazione diventa complessa (come chiamare livelli complessi da un database, sviluppare una robusta applicazione mobile, ecc.), Leaflet inizia a limitare le tue capacità. Quindi, penso che alla fine ne varrà la pena spendere un po 'più di tempo per capire e apprendere la struttura di OpenLayers in fase di apprendimento.

Come i dettagli del progetto considerati;

Utilizza l'interfaccia della mappa per recuperare le informazioni sulle funzioni:

Sia Leaflet che OpenLayer possono farlo perfettamente. Il punto qui è quello di ottenere le coordinate dell'evento click e inviare la richiesta al server. Il collegamento della richiesta sarà lo stesso per entrambe le applicazioni.

Crea uno strumento personalizzato che porta lat / lon dall'utente in merito a dove fa clic sulla mappa e quindi recupera i dati climatici dal raster (che è gestito da uno script PY sul server):

L'ho realizzato anch'io in Leaflet (a proposito, stavo anche chiamando i dati climatici). Non stavo recuperando i dati raster da un server, ma il punto qui è creare un collegamento di richiesta, che è facile per entrambe le applicazioni. Tuttavia, se si desidera selezionare un poligono in questa fase, è difficile ottenere Leaflet.

Consente all'utente di caricare Excel, che viene inviato allo script PY, che restituisce un GeoJSON, che crea funzionalità vettoriali sulla mappa:

Approssimativamente la stessa linea di lavoro sia per Leaflet che per OpenLayer. Non posso dire quale sia la migliore.

Consenti all'utente di creare poligoni vettoriali, che recupereranno le Funzionalità che interseca dal Livello WFS:

Non ho idea delle capacità di modifica di OpenLayers ma Leaflet ha un plugin chiamato Leaflet Draw, che è facile da usare e manipolare i disegni (sul lato javascript) dopo che il disegno è completato. Inoltre Leaflet ha un supporto WFS-T se si desidera manipolare i dati spaziali sul server WFS. OpenLayers potrebbe essere migliore di così, non lo so.

Recupera livello dal datastore PostGIS su GeoServer e visualizza i livelli sulla mappa:

Sicuramente OpenLayers è meglio per questo lavoro in quanto è più facile connettere il server PostGIS.

A proposito, esiste una suite di applicazioni chiamata OpenGeo Suite che include OpenLayers, GeoServer e PostGIS; che risolverà tutti i problemi che ha uno sviluppatore di applicazioni GIS basato sul web.


Bella risposta dettagliata!
Devdatta Tengshe,

Tre anni dopo, cosa ne pensi di Leaflet e dispositivi mobili? Qualche miglioramento?
Mawg

10

C'è un grande confronto sui due quadri in questa presentazione :

Leaflet vs OpenLayers

E un altro articolo ha anche un ottimo riassunto:

I clienti spesso ci chiedono: "Qual è la migliore libreria di mappatura JavaScript sul lato client da utilizzare quando si crea un'app Web moderna con Map Suite WebAPI Edition?" Come molte altre cose nello sviluppo software, la risposta non è sempre chiara. La risposta dipende dalle vostre esigenze e preferenze di sviluppo. Poiché entrambi i framework sono ben documentati e funzionano in modo solido sui dispositivi mobili, di solito poniamo le seguenti domande per aiutare i nostri clienti a prendere la decisione giusta.

Quanto è semplice mappare la parte dell'app che stai costruendo?

Quanto più semplici sono i requisiti di mappatura, tanto più tendiamo a utilizzare Leaflet. Leaflet svolge un lavoro fantastico nel gestire le attività di mappatura più comuni come il consumo di riquadri della mappa di base, il panning e lo zoom, e la sua API è facile da capire e da usare. Una volta andate oltre le attività comuni, tuttavia, è necessario utilizzare i plug-in Leaflet e questo dove le cose diventano più complicate. Potrebbero esserci delle funzionalità che stai cercando che purtroppo non esistono.

Se hai un'applicazione ricca di funzionalità con molte funzionalità, ti invitiamo a utilizzare OpenLayers 3. OpenLayers 3 ha un'API più grande e più complessa che ti permetterà di fare tutte le funzioni di mappatura comuni che Leaflet fa e molte altre. Ad esempio, se l'applicazione ha requisiti che coinvolgono la proiezione delle mappe, OpenLayers 3 ti consentirà di soddisfare questi requisiti più facilmente rispetto a se stai usando Leaflet. Naturalmente, con un'API più solida arriva una curva di apprendimento più ripida, quindi tienilo a mente quando fornisci le stime agli stakeholder del progetto.

Quanto codice JavaScript vuoi scrivere?

Poiché Leaflet è un'API di livello superiore rispetto a OpenLayers 3, di solito ci vuole meno codice JavaScript per farlo funzionare. Una volta che si desidera discostarsi dalle funzionalità standard fornite da Leaflet, tuttavia, è probabile che si finisca per scrivere molto codice a meno che non sia presente un plug-in che soddisfi le proprie esigenze. D'altra parte, OpenLayers 3 è un'API di livello inferiore che richiede più codice JavaScript per inizializzare e configurare la mappa. Questo può essere utile quando hai requisiti personalizzati e complessi, poiché l'API consente un maggiore controllo sulla mappa e sui dati.

Sommario

In chiusura, ci sono momenti in cui è meglio usare Leaflet e volte in cui OpenLayers 3 vince. Se i requisiti di mappatura sono semplici, è nel tuo interesse controllare prima Leaflet. Ma se stai cercando una libreria di mappatura più personalizzabile e non ti dispiace sporcarti con lo sviluppo di JavaScript, cerca OpenLayers 3.

Poiché entrambe le librerie hanno i loro punti di forza, abbiamo incluso esempi di codice sia per Leaflet che OpenLayers 3 con Map Suite WebAPI Edition che può essere scaricato tramite Product Center o visualizzato sul Wiki ThinkGeo. Questi esempi sono risorse utili per decidere quale libreria di mappatura Javascript sul lato client utilizzare per la tua app perché puoi vedere in prima persona le diverse esperienze utente e i requisiti di codifica tra le due librerie.

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


5

Ho appena preso questa decisione per il mio nuovo progetto mobile e il chiaro vincitore è OpenLayers. Il volantino, al momento della stesura di questo documento, era piuttosto lento sui dispositivi mobili. Le transizioni per pan / zoom non sembravano fluide e talvolta disorientava. A corto di nativo, ho provato OpenLayers e l'esperienza è molto meglio. Ancora non buono come nativo, ma sicuramente utilizzabile e una vera opzione.


1
Interessante. Mi sarei aspettato che Leaflet fosse più leggero e liscio su un dispositivo mobile. Grazie per aver condiviso questa esperienza.
LarsH,

@Christian Fritz - la tua esperienza con OL3 o OL2?
sfletche,

2
@sfletche il confronto era tra OL3 e il volantino 0.7.3
Christian Fritz,

Tre anni dopo, cosa ne pensi di Leaflet e dispositivi mobili? Qualche miglioramento?
Mawg

Sì, sicuramente. Usiamo il volantino in produzione e non vediamo alcun problema sui dispositivi mobili.
Christian Fritz,

3

Direi che controlla la documentazione API per entrambi. A quanto pare, OpenLayersoffre una vasta gamma di funzionalità, tuttavia i tempi di sviluppo / debug sono più lunghi.

Leafletè più sexy e molto più semplice rispetto all'OL, tuttavia se vuoi fare molto con la tua mappa, penso che un giorno potresti aver bisogno di una funzionalità che non è ancora stata implementata Leaflet!

Consiglio vivamente di dare un'occhiata alle API! OpenLayers & Leaflet

Inoltre potresti dover considerare che l'attuale versione stabile per Leaflet è 0.5.1ma è 2.12per OpenLayers.

PS Se voglio sviluppare un'applicazione mobile, penso che potrei provare Leaflet.


3

C'è un tutorial di base che confronta le API di OpenLayers 3 e Leaflet facendoti costruire la stessa cosa in entrambi. È stato scritto da Astun Technology e le attività del tutorial sono:

  • Mappa di base con riquadri OSM
  • Mappa OS-GB con riquadri di Ordnance Survey
  • Livello GeoJSON con marcatori
    • Informazioni per il livello GeoJSON
  • Livello WMS
    • Informazioni per il livello WMS

Ecco il link: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html


lo scorrimento con la barra spaziatrice è interrotto tra
bugmenot123

3

Dipende da cosa stai cercando di fare. Il volantino è più semplice e veloce per l'80% dei progetti di mappe web.

Allo stesso modo in cui non hai bisogno di un'astronave per spostarti nel tuo quartiere, la maggior parte delle volte ho trovato OpenLayers troppo complesso per fare cose davvero semplici, specialmente dalla Versione 3.

Ad esempio, la creazione di un selettore di layer richiede forse 5-6 righe di codice in Leaflet mentre in OpenLayers 4 devi costruirlo da zero. Hai strumenti fantastici per farlo, ma la maggior parte delle volte non vuoi un selettore di livelli personalizzato, solo uno che funzioni bene.

Un'altra cosa importante da considerare è che la maggior parte delle informazioni, tutorial e dibattiti su Internet riguardano OpenLayers 2. Non sono aggiornati, poiché la versione 3 non è compatibile con la versione 2. E ora siamo alla versione 4. Versione 2 aveva un sacco di cose semplici come selettore di livelli, popup, ecc. insieme a funzioni più complesse; ma per qualsiasi motivo hanno appena cancellato questo tipo di cose per evolvere verso un sistema complesso e molto potente. Inoltre, ci sono molte più informazioni ora su Leaflet rispetto al 2012, ed è una tecnologia più matura.

In conclusione, chiediti se hai bisogno di un'auto o di un'astronave. Non volerai con un'auto, ma guidare un'astronave per fare shopping può essere davvero complicato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.