Wybierając OpenLayers lub Ulotkę? [Zamknięte]


93

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:

  1. Użyj interfejsu mapy, aby pobrać informacje o funkcji
  2. 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)
  3. 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
  4. Zezwól użytkownikowi na tworzenie wielokątów wektorowych, które będą pobierać funkcje przecinające się z warstwy WFS.
  5. 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?


1
Zależy od projektu.
CaptDragon,

1
za. Popraw swoje pytanie, podając więcej szczegółów na temat projektu. b. Mówisz o bezpośrednim połączeniu z bazą danych (postgis) dla użytkowników, jesteś pewien?
Pablo,

przepraszam za to, zaktualizowałem szczegóły mojego projektu
Sam007,


Ogólnie wolę Ulotkę, ponieważ prowadzi ona do krótszych i bardziej czytelnych plików .js. Ale OL może robić rzeczy, których nie potrafi Ulotka, ponieważ masz dostęp do głębszego i bardziej szczegółowego dostępu - zgadzam się. To zależy od projektu, ale 1 głos na Ulotkę ode mnie.
MartinHvidberg

Odpowiedzi:


87

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

  1. Wokół OpenLayers jest tylko TON materiału. Jest o wiele bardziej dojrzały niż Leaflet.
  2. Sprawdź porównanie zatwierdzeń i użytkowników .
  3. Stos OpenLayers, GeoServer, PostGIS jest tak sprawdzony w świecie FOSS, że idziesz ścieżką solidną.
  4. OpenLayers ma nieco więcej funkcji w Map Controls .
  5. Trochę więcej pracy wymaga tworzenie przejść i efektów wizualnych, ale można to zrobić w OpenLayers.

1
A co z urządzeniami mobilnymi? Który jest bardziej odpowiedni?
Sam007

1
Tak. Obecnie buduję aplikacje mobilne przy użyciu OpenLayers i SenchaTouch. Na Openlayers działa wiele aplikacji do map mobilnych. Oto kilka przykładów openlayers.org/dev/examples/?q=mobile .
Ramesh Elaiyavalli

28

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.


14
Więc nie chodzi tylko o „Ulotkę przez całą drogę”, ale „Ulotkę, jeśli nie potrzebujesz żadnej z tych brakujących funkcji”. Zgadzam się, że Ulotka jest znacznie prostsza w użyciu, ale jeśli chcesz zrobić coś nie tak powszechnego, musisz iść na OL.
Juan

1
Ulotka nie ma wielu funkcji. Ulotka jest dobra tylko dla bardzo podstawowych map, ale jak już wyjaśnił Ramesh Elaiyavalli Ol-3 jest najlepsza, a także można zmniejszyć rozmiar, wybierając funkcje za pomocą niestandardowej budowy.
Abhijit Gujar,

18

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.


Ładna szczegółowa odpowiedź!
Devdatta Tengshe,

Trzy lata później, co sądzisz o Ulotce i urządzeniach mobilnych? Jakaś poprawa?
Mawg

10

Istnieje świetne porównanie dwóch ram w tej prezentacji :

Ulotka kontra OpenLayers

I kolejny artykuł ma również wielkie podsumowanie:

Klienci często pytają nas: „Jaka jest najlepsza biblioteka mapowania JavaScript po stronie klienta, którą można zastosować podczas budowania nowoczesnej aplikacji internetowej przy użyciu Map Suite WebAPI Edition?” Podobnie jak w wielu sprawach związanych z tworzeniem oprogramowania, odpowiedź nie zawsze jest jasna. Odpowiedź zależy od twoich wymagań i preferencji programistycznych. Ponieważ obie platformy są dobrze udokumentowane i działają solidnie na urządzeniach mobilnych, zwykle zadajemy następujące pytania, aby pomóc naszym klientom w podjęciu właściwej decyzji.

Jak prosta jest część mapowania tworzonej aplikacji?

Im prostsze są wymagania dotyczące mapowania, tym bardziej skłaniamy się do korzystania z Ulotki. Ulotka doskonale obsługuje najbardziej popularne zadania mapowania, takie jak konsumowanie kafelków mapy podstawowej, przesuwanie i powiększanie, a jej interfejs API jest łatwy do zrozumienia i prosty w użyciu. Kiedy jednak wykroczysz poza zwykłe zadania, musisz użyć wtyczek do ulotek i to tam, gdzie sprawy stają się bardziej skomplikowane. Być może funkcjonalność, której szukasz, niestety nie istnieje.

Jeśli masz bogatą w funkcje aplikację z dużą ilością funkcji, chętnie skorzystamy z OpenLayers 3. OpenLayers 3 ma większy i bardziej złożony interfejs API, który pozwoli ci wykonywać wszystkie typowe funkcje mapowania, które wykonuje Leaflet oraz wiele innych. Na przykład, jeśli twoja aplikacja ma wymagania dotyczące projekcji mapy, OpenLayers 3 pozwoli ci spełnić te wymagania łatwiej niż w przypadku korzystania z Ulotki. Oczywiście, z bardziej niezawodnym API jest bardziej stroma krzywa uczenia się, więc miej to na uwadze, przekazując prognozy interesariuszom projektu.

Ile kodu JavaScript chcesz napisać?

Ponieważ Ulotka jest interfejsem API wyższego poziomu niż OpenLayers 3, zwykle wymaga mniej kodu JavaScript, aby go uruchomić. Jeśli jednak będziesz chciał odejść od standardowej funkcjonalności, którą zapewnia Ulotka, prawdopodobne jest, że skończysz pisać dużo kodu, chyba że istnieje wtyczka, która dokładnie odpowiada twoim potrzebom. Z drugiej strony OpenLayers 3 to API niższego poziomu, które wymaga więcej kodowania JavaScript do zainicjowania i skonfigurowania mapy. Może to być wygodne, gdy masz spersonalizowane i złożone wymagania, ponieważ API pozwala na większą kontrolę nad mapą i Twoimi danymi.

Podsumowanie

Na zakończenie są chwile, kiedy najlepiej użyć Ulotki i chwile, w których wygrywa OpenLayers 3. Jeśli Twoje wymagania dotyczące mapowania są proste, najlepiej jest najpierw zapoznać się z Ulotką. Ale jeśli szukasz biblioteki mapowania, która jest bardziej konfigurowalna i nie masz nic przeciwko brudzeniu się programowaniem JavaScript, sięgnij po OpenLayers 3.

Ponieważ obie biblioteki mają swoje mocne strony, dołączyliśmy próbki kodu zarówno dla Ulotki, jak i OpenLayers 3 wraz z Map Suite WebAPI Edition, które można pobrać przez Product Center lub obejrzeć na Wiki ThinkGeo. Przykłady te są przydatnymi zasobami przy podejmowaniu decyzji, która biblioteka odwzorowań JavaScript po stronie klienta ma być używana w Twojej aplikacji, ponieważ możesz zobaczyć z jednej strony różne doświadczenia użytkownika i wymagania dotyczące kodowania między dwiema bibliotekami.

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


5

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.


1
Ciekawy. Spodziewałbym się, że Leaflet będzie lżejsza i gładsza na urządzeniu mobilnym. Dziękujemy za podzielenie się tym doświadczeniem.
LarsH

@Christian Fritz - czy podobało ci się doświadczenie z OL3 czy OL2?
sfletche

2
@sfletche porównanie było między OL3 a ulotką 0.7.3
Christian Fritz

Trzy lata później, co sądzisz o Ulotce i urządzeniach mobilnych? Jakaś poprawa?
Mawg

tak, zdecydowanie. Używamy ulotki w produkcji i nie widzimy żadnych problemów na urządzeniach mobilnych.
Christian Fritz,

3

Powiedziałbym, że sprawdź dokumentację API dla obu. Wydaje mi się, że OpenLayersoferuje szeroki wachlarz funkcji, jednak czas programowania / debugowania jest dłuższy.

Leafletjest 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 zaimplementowana Leaflet!

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 to 2.12dla OpenLayers.

PS Jeśli chcę opracować aplikację mobilną, myślę, że mogę Leaflet.


3

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:

  • Podstawowa mapa z kafelkami OSM
  • Mapa OS-GB z kafelkami Ordnance Survey
  • Warstwa GeoJSON ze znacznikami
    • Informacje dla warstwy GeoJSON
  • Warstwa WMS
    • Informacje dla warstwy WMS

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


przewijanie spacją jest zepsute btw
bugmenot123

3

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.