Dyskutowałem z jednym z moich kolegów na OpenLayers v / s Leaflet. Zwróciłem uwagę, że OpenLayers jest znacznie lepszym API, jeśli chcemy zbudować projekt, w którym potrzebujesz bezpośredniej łączności z Geoserver i PostGIS.
Potem znalazłem Open Data Kit , który wygląda całkiem nowy, ale ma funkcje łączności z Geoserver i PostGIS.
Szczegóły mojego projektu są następujące:
- Użyj interfejsu mapy, aby pobrać informacje o funkcji
- Utwórz niestandardowe narzędzie, które pobiera od użytkownika lat / lon w miejscu, w którym kliknie mapę, a następnie pobierze dane klimatyczne z rastra (który jest obsługiwany przez skrypt py na serwerze)
- Pozwala użytkownikowi na przesłanie programu Excel, który jest wysyłany do skryptu py, który zwraca GeoJSON, który tworzy funkcje wektorowe na mapie
- Zezwól użytkownikowi na tworzenie wielokątów wektorowych, które będą pobierać funkcje przecinające się z warstwy WFS.
- Pobiera warstwę z magazynu danych PostGIS na GeoServer i wyświetla warstwy na mapie.
Więc teraz jestem zdezorientowany, co jest lepsze i dlaczego używanie OpenLayers zamiast Leaflet ma więcej sensu, czy nie?
Odpowiedzi:
W moich aplikacjach korzystałem zarówno z OpenLayers, jak i Ulotki. Tak wiele dyskusji na ten temat odbyło się na tym forum, a także na innych w Internecie. Zazwyczaj dzielą się na 2 obozy - cechy i elastyczność OpenLayers w porównaniu z prostotą Ulotki. Nie zdziwiłbym się, gdyby ktoś zainicjował inicjatywę „OpenLeaf” wkrótce poślubiając najlepsze z obu światów!
Uznałem, że Ulotka jest bardzo łatwa w użyciu, ma niewielki rozmiar 64 KB, w porównaniu do ponad 700 000 Openlayerów, i w kilku krokach możesz stworzyć aplikacje, które mają świeżość i słodycz dzisiejszych internetowych i mobilnych aplikacji GIS. Twój stos - GeoServer, PostGIS itp., Jest standardowym stosem, więc można łatwo włączyć OpenLayers lub Leaflet.
Powiedziawszy to, nadal będę korzystać z OpenLayers z następujących powodów
źródło
Ulotka do końca. Wydaje mi się, że Leaflet to kolejny krok w ewolucji klientów przeglądarki opartych na kafelkach typu open source. Ka-Map -> OpenLayers -> Ulotka.
Ulotka jest prosta w użyciu i robi dokładnie to, co jest napisane na puszce. OpenLayers rozdęło się, starając się być wszystkim dla wszystkich, Leaflet robi 20% rzeczy, które są wymagane w 80% przypadków.
źródło
Chociaż użyłem Ulotki w mojej aplikacji webGIS, OpenLayers ma znacznie więcej zalet niż Ulotka. Na przykład, jeśli chcesz korzystać z aplikacji na urządzeniach mobilnych, OpenLayers jest na razie koniecznością.
Istnieje wiele zasobów związanych z OpenLayers, jednak myślę, że tworzenie aplikacji przy pomocy Ulotki jest łatwiejsze niż OpenLayers (łatwiej jest odczytać kod i zrozumieć strukturę). Jeśli masz ograniczenia czasowe i masz małe doświadczenie z Javascriptem, skorzystanie z Ulotki może być lepszym rozwiązaniem, aby zrobić to szybciej. Lub jeśli chcesz opracować bardzo prostą aplikację, Ulotka może być łatwiejsza na początku.
Ale po opracowaniu aplikacji za pomocą Ulotki, teraz mówię, że chciałbym korzystać z OpenLayers na początku. Ponieważ gdy aplikacja staje się złożona (np. Wywoływanie złożonych warstw z bazy danych, tworzenie niezawodnej aplikacji mobilnej itp.), Ulotka zaczyna ograniczać twoje możliwości. Myślę więc, że poświęcenie trochę więcej czasu na zrozumienie i nauczenie się struktury OpenLayers na etapie uczenia się będzie w końcu tego warte.
Jak uwzględniono szczegóły projektu;
Użyj interfejsu mapy, aby pobrać informacje o funkcji:
Zarówno Ulotka, jak i OpenLayers mogą to doskonale zrobić. Chodzi o to, aby uzyskać współrzędne zdarzenia kliknięcia i wysłać żądanie do serwera. Link żądania będzie taki sam dla obu aplikacji.
Utwórz niestandardowe narzędzie, które pobiera od użytkownika lat / lon w miejscu, w którym kliknie mapę, a następnie pobierze dane klimatyczne z rastra (który jest obsługiwany przez skrypt py na serwerze):
Sam to osiągnąłem w Ulotce (nawiasem mówiąc, dzwoniłem też do danych klimatycznych). Nie pobierałem danych rastrowych z serwera, ale chodzi tutaj o utworzenie łącza żądania, które jest łatwe dla obu aplikacji. Jeśli jednak chcesz wybrać wielokąt na tym etapie, osiągnięcie Ulotki jest trochę trudne.
Pozwala użytkownikowi na przesłanie programu Excel, który jest wysyłany do skryptu py, który zwraca GeoJSON, który tworzy funkcje wektorowe na mapie:
W przybliżeniu ta sama linia pracy zarówno dla Ulotki, jak i OpenLayers. Nie mogę powiedzieć, który jest lepszy.
Zezwól użytkownikowi na tworzenie wielokątów wektorowych, które będą pobierać funkcje przecinające się z warstwy WFS:
Nie mam pojęcia o możliwościach edycji OpenLayers, ale Ulotka ma wtyczkę o nazwie Leaflet Draw, która jest łatwa w użyciu i manipuluje rysunkami (po stronie javascript) po zakończeniu rysowania. Również Ulotka ma obsługę WFS-T, jeśli chcesz manipulować danymi przestrzennymi na serwerze WFS. OpenLayers może być lepszy, nie wiem.
Pobiera warstwę z magazynu danych PostGIS na GeoServer i wyświetla warstwy na mapie:
Zdecydowanie OpenLayers jest lepszy do tego zadania, ponieważ łatwiej jest podłączyć serwer PostGIS.
Nawiasem mówiąc, istnieje pakiet aplikacji o nazwie OpenGeo Suite, który obejmuje OpenLayers, GeoServer i PostGIS; co rozwiąże wszystkie problemy programisty aplikacji GIS.
źródło
Istnieje świetne porównanie dwóch ram w tej prezentacji :
I kolejny artykuł ma również wielkie podsumowanie:
From http://blog.thinkgeo.com/2015/09/08/leaflet-vs-openlayers-3-which-is-the-better-client-side-javascript-mapping-library/
źródło
Właśnie podjąłem tę decyzję dotyczącą mojego nowego projektu mobilnego, a zwycięzcą został OpenLayers. Ulotka w chwili pisania tego tekstu była dość powolna na urządzeniach mobilnych. Przejścia dla przesuwania / powiększania nie były płynne i czasami dezorientowały. Wkrótce wypróbowałem OpenLayers i doświadczenie jest znacznie lepsze. Nadal nie tak dobry jak rodzimy, ale zdecydowanie użyteczny i prawdziwa opcja.
źródło
Powiedziałbym, że sprawdź dokumentację API dla obu. Wydaje mi się, że
OpenLayers
oferuje szeroki wachlarz funkcji, jednak czas programowania / debugowania jest dłuższy.Leaflet
jest bardziej seksowny i znacznie łatwiejszy w prowadzeniu niż OL, jednak jeśli chcesz dużo zrobić ze swoją mapą, myślę, że pewnego dnia możesz potrzebować funkcji, która nie jest jeszcze zaimplementowanaLeaflet
!Naprawdę polecam przyjrzeć się interfejsom API! OpenLayers & Leaflet
Również może trzeba wziąć pod uwagę, że Aktualna wersja stabilna na ulotce
0.5.1
, ale to2.12
dla OpenLayers.PS Jeśli chcę opracować aplikację mobilną, myślę, że mogę
Leaflet
.źródło
Istnieje podstawowy samouczek, który porównuje interfejsy API zarówno OpenLayers 3, jak i Leaflet, dzięki czemu możesz zbudować to samo w obu z nich. Jest napisany przez Astun Technology, a zadania samouczka to:
Oto link: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html
źródło
To zależy od tego, co próbujesz zrobić. Ulotka jest prostsza i szybsza w przypadku 80% projektów map internetowych.
W ten sam sposób, w jaki nie potrzebujesz statku kosmicznego, aby ominąć swoją okolicę, przez większość czasu OpenLayers był zbyt skomplikowany, aby robić naprawdę proste rzeczy, szczególnie z wersji 3.
Na przykład, tworzenie selektora warstw zajmuje może 5-6 linii kodu w Ulotce, podczas gdy w OpenLayers 4 musisz zbudować go od zera. Masz do tego niesamowite narzędzia, ale przez większość czasu nie chcesz niestandardowego selektora warstw, tylko takiego, który działa dobrze.
Inną ważną rzeczą do rozważenia jest to, że większość informacji, samouczków i debat w Internecie dotyczy OpenLayers 2. Są one nieaktualne, ponieważ wersja 3 nie jest kompatybilna z wersją 2. A teraz jesteśmy w wersji 4. Wersja 2 miał wiele prostych rzeczy, takich jak wybór warstw, wyskakujące okienka itp. wraz z bardziej złożonymi funkcjami; ale z jakiegokolwiek powodu po prostu usunęli tego rodzaju rzeczy, aby ewoluować w kierunku złożonego i bardzo potężnego systemu. Co więcej, teraz jest o wiele więcej informacji na temat Ulotki niż w 2012 roku i jest to bardziej dojrzała technologia.
Podsumowując, zadaj sobie pytanie, czy potrzebujesz samochodu czy statku kosmicznego. Nie będziesz latał samochodem, ale jazda statkiem kosmicznym na zakupy może być naprawdę skomplikowana.
źródło