Ich habe mit einem meiner Kollegen über OpenLayers v / s Leaflet diskutiert. Ich habe darauf hingewiesen, dass OpenLayers eine viel bessere API ist, wenn wir ein Projekt erstellen möchten, bei dem Sie eine direkte Verbindung zum Geoserver und PostGIS benötigen.
Dann fand ich Open Data Kit , das ziemlich neu aussieht, aber die Konnektivitätsmerkmale mit dem Geoserver und PostGIS aufweist.
Meine Projektdetails lauten also wie folgt:
- Verwenden Sie die Kartenschnittstelle, um Feature-Informationen abzurufen
- Erstellen Sie ein benutzerdefiniertes Tool, das dem Benutzer mitteilt, wo er auf die Karte klickt, und dann die Klimadaten aus dem Raster abruft (das von einem Py-Skript auf dem Server verarbeitet wird).
- Ermöglicht dem Benutzer das Hochladen von Excel, das an das Py-Skript gesendet wird, das ein GeoJSON zurückgibt, das Vektor-Features auf der Karte erstellt
- Ermöglichen Sie dem Benutzer das Erstellen von Vektorpolygonen, mit denen die Features, mit denen er sich überschneidet, aus der WFS-Ebene abgerufen werden.
- Ruft die Ebene aus dem PostGIS-Datenspeicher auf GeoServer ab und zeigt die Ebenen auf der Karte an.
Jetzt bin ich verwirrt, was besser ist und warum die Verwendung von OpenLayers über Leaflet sinnvoller ist oder nicht.
Antworten:
Ich habe sowohl OpenLayers als auch Leaflet in meinen Apps verwendet. In diesem Forum und auf planet-internet wurde so viel über dieses Thema diskutiert. Sie fallen normalerweise in zwei Lager - Funktionen und Flexibilität von OpenLayers im Vergleich zur Einfachheit von Leaflet. Es würde mich nicht wundern, wenn jemand eine "OpenLeaf" -Initiative ins Leben rufen würde, die bald das Beste aus beiden Welten heiratet!
Ich fand, dass Leaflet sehr einfach zu verwenden ist, eine kleine Größe von 64K im Vergleich zu über 700K Openlayern, und dass Sie in wenigen Schritten Apps erstellen können, die die Frische und die Aufmerksamkeit der heutigen Web- und mobilen GIS-Apps haben. Ihr Stack - GeoServer, PostGIS usw. - ist ein Standardstack, sodass OpenLayers oder Leaflet problemlos integriert werden können.
Trotzdem würde ich aus den folgenden Gründen immer noch mit OpenLayers arbeiten
quelle
Faltblatt den ganzen Weg. Ich denke, Leaflet ist der nächste Schritt in der Entwicklung der auf Open Source Kacheln basierenden Browser-Clients. Ka-Map -> OpenLayers -> Leaflet.
Die Gebrauchsanweisung ist einfach zu bedienen und hält genau das, was auf der Dose steht. OpenLayers ist aufgebläht, weil es versucht, für alle Menschen alles zu sein. Leaflet erledigt die 20% der Dinge, die in 80% der Fälle benötigt werden.
quelle
Obwohl ich Leaflet in meiner webGIS-Anwendung verwendet habe, hat OpenLayers viel mehr Vorteile gegenüber Leaflet. Wenn Sie beispielsweise Ihre Anwendung auf mobilen Geräten verwenden möchten, ist OpenLayers vorerst ein Muss.
Es gibt viele Ressourcen, die mit OpenLayers zu tun haben. Ich denke jedoch, dass das Entwickeln von Anwendungen mit Leaflet einfacher ist als mit OpenLayers (es ist einfacher, einen Code zu lesen und die Struktur zu verstehen). Wenn Sie zeitlich begrenzt sind und ein wenig Erfahrung mit Javascript haben, ist die Verwendung von Leaflet möglicherweise die bessere Lösung, um dies schneller zu erledigen. Oder wenn Sie eine sehr einfache Anwendung entwickeln möchten, lässt sich Leaflet zunächst viel einfacher anpassen.
Aber nachdem ich eine Anwendung mit Leaflet entwickelt habe, sage ich jetzt, ich wünschte, ich hätte OpenLayers am Anfang verwendet. Denn wenn Ihre Anwendung komplex wird (wie das Aufrufen komplexer Ebenen aus einer Datenbank, die Entwicklung einer robusten mobilen Anwendung usw.), schränkt Leaflet Ihre Fähigkeiten ein. Daher denke ich, dass es sich irgendwann lohnen wird, ein wenig mehr Zeit zu investieren, um die Struktur von OpenLayers in der Lernphase zu verstehen und zu lernen.
Da die Projektdetails berücksichtigt werden;
Verwenden Sie die Kartenschnittstelle, um Feature-Informationen abzurufen:
Sowohl Leaflet als auch OpenLayers können das perfekt. Hier geht es darum, die Koordinaten des Klickereignisses abzurufen und eine Anfrage an den Server zu senden. Der Anforderungslink ist für beide Anwendungen gleich.
Erstellen Sie ein benutzerdefiniertes Tool, das dem Benutzer mitteilt, wo er auf die Karte klickt, und dann die Klimadaten aus dem Raster abruft (das von einem Py-Skript auf dem Server verarbeitet wird):
Das habe ich selbst im Leaflet erreicht (ich habe übrigens auch die Klimadaten genannt). Ich habe die Rasterdaten nicht von einem Server abgerufen, aber hier geht es darum, einen Anforderungslink zu erstellen, der für beide Anwendungen einfach ist. Wenn Sie jedoch zu diesem Zeitpunkt ein Polygon auswählen möchten, ist es etwas schwierig, dieses zu erreichen.
Ermöglicht dem Benutzer das Hochladen von Excel, das an das Py-Skript gesendet wird, das ein GeoJSON zurückgibt, das Vektor-Features auf der Karte erstellt:
Etwa das gleiche Arbeitsgebiet für Leaflet und OpenLayers. Ich kann nicht sagen, welches besser ist.
Ermöglichen Sie dem Benutzer das Erstellen von Vektorpolygonen, mit denen die Features, die sie überschneiden, aus der WFS-Ebene abgerufen werden:
Ich habe keine Ahnung, was OpenLayers-Bearbeitungsmöglichkeiten angeht, aber Leaflet hat ein Plugin namens Leaflet Draw, das einfach zu verwenden ist und die Zeichnungen (auf der Javascript-Seite) bearbeitet, nachdem das Zeichnen abgeschlossen ist. Außerdem bietet Leaflet eine WFS-T-Unterstützung, wenn Sie die räumlichen Daten auf dem WFS-Server bearbeiten möchten. OpenLayers könnte besser sein, ich weiß es nicht.
Ruft die Ebene aus dem PostGIS-Datenspeicher auf GeoServer ab und zeigt die Ebenen auf der Karte an:
OpenLayers ist definitiv besser für diesen Job, da es einfacher ist, einen PostGIS-Server zu verbinden.
Übrigens gibt es eine Anwendungssuite namens OpenGeo Suite , die OpenLayers, GeoServer und PostGIS enthält. Damit werden alle Probleme gelöst, die ein webbasierter GIS-Anwendungsentwickler hat.
quelle
Es gibt einen guten Vergleich zwischen den beiden Frameworks in dieser Präsentation :
Und ein anderer Artikel hat auch eine tolle Zusammenfassung:
Von http://blog.thinkgeo.com/2015/09/08/leaflet-vs-openlayers-3-which-is-the-better-client-side-javascript-mapping-library/
quelle
Ich habe gerade diese Entscheidung für mein neues mobiles Projekt getroffen und der klare Gewinner ist OpenLayers. Zum jetzigen Zeitpunkt war das Flugblatt auf Mobilgeräten eher träge. Die Übergänge für das Schwenken / Zoomen fühlten sich nicht glatt an und waren zeitweise desorientiert. Kurz bevor ich einheimisch wurde, habe ich OpenLayers ausprobiert und die Erfahrung ist viel besser. Immer noch nicht so gut wie einheimisch, aber definitiv brauchbar und eine echte Option.
quelle
Ich würde sagen, überprüfen Sie die API-Dokumentation für beide. Mir scheint, dass es
OpenLayers
eine Vielzahl von Funktionen bietet, die Entwicklungs- / Debugging-Zeit ist jedoch länger.Leaflet
ist sexy und viel unkomplizierter als die OL, aber wenn du viel mit deiner Map machen willst, brauchst du vielleicht eines Tages eine Funktion, die noch nicht implementiert istLeaflet
!Ich empfehle dringend, sich APIs anzuschauen! OpenLayers & Faltblatt
Auch müssen Sie möglicherweise, dass die aktuelle stabile Version zu prüfen , für Leaflet ist ,
0.5.1
aber es ist2.12
für Openlayers.PS Wenn ich eine mobile Anwendung entwickeln möchte, denke ich, dass ich mich entscheiden könnte
Leaflet
.quelle
Es gibt ein grundlegendes Tutorial, das die APIs von OpenLayers 3 und Leaflet vergleicht, indem Sie in beiden das Gleiche erstellen. Es wurde von Astun Technology geschrieben und die Aufgaben des Tutorials lauten:
Hier ist der Link: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html
quelle
Es hängt davon ab, was Sie versuchen zu tun. Leaflet ist für 80% der Webkartenprojekte einfacher und schneller.
So wie Sie kein Raumschiff benötigen, um durch Ihre Nachbarschaft zu fahren, fand ich OpenLayers die meiste Zeit viel zu komplex, um wirklich einfache Dinge zu tun, insbesondere ab Version 3.
Zum Beispiel benötigt das Erstellen einer Ebenenauswahl in Leaflet möglicherweise 5-6 Codezeilen, während Sie sie in OpenLayers 4 von Grund auf neu erstellen müssen. Sie haben tolle Werkzeuge, um dies zu tun, aber die meiste Zeit möchten Sie keinen benutzerdefinierten Ebenen-Selektor, nur einen, der gut funktioniert.
Ein weiterer wichtiger Punkt ist, dass sich die meisten Informationen, Tutorials und Debatten im Internet auf OpenLayers 2 beziehen. Sie sind veraltet, da Version 3 nicht mit Version 2 kompatibel ist. Und wir sind jetzt bei Version 4. Version 2 hatte eine Menge einfacher Dinge wie Ebenenauswahl, Popups usw. zusammen mit komplexeren Funktionen; aber aus irgendeinem Grund haben sie einfach solche Dinge gelöscht, um sich zu einem komplexen und sehr mächtigen System zu entwickeln. Darüber hinaus gibt es jetzt viel mehr Informationen zu Leaflet als 2012 und es ist eine ausgereiftere Technologie.
Fragen Sie sich abschließend, ob Sie ein Auto oder ein Raumschiff benötigen. Sie werden nicht mit einem Auto fliegen, aber das Fahren eines Raumschiffs zum Einkaufen kann sehr kompliziert sein.
quelle