Вибір OpenLayers або листівки? [зачинено]


93

Я дебатував з одним із моїх колег на OpenLayers v / s Leaflet. Я зауважив, що OpenLayers є набагато кращим API, якщо ми хочемо створити проект, де вам потрібне пряме підключення до Geoserver та PostGIS.

Тоді я знайшов Open Data Kit , який виглядає досить новим, але має особливості підключення до Geoserver та PostGIS.

Тож деталі мого проекту такі:

  1. Використовуйте інтерфейс карти для отримання інформації про функції
  2. Створіть індивідуальний інструмент, який переносить lat / lon від користувача щодо того, де він / вона клацає по карті, а потім отримує дані клімату з растру (який обробляється py-скриптом на сервері)
  3. Дозволяє користувачу завантажувати excel, який надсилається до сценарію py, який повертає GeoJSON, який створює векторні функції на карті
  4. Дозвольте користувачеві створити векторні багатокутники, які отримають функції, які він перетинає з шару WFS.
  5. Витягує шар із сховища даних PostGIS на GeoServer та відображає шари на карті.

Тож тепер я розгублений, що краще, і чому використання OpenLayers через Leaflet має більше сенсу чи ні?


1
Залежить від проекту.
CaptDragon

1
а. Удосконаліть своє запитання, надавши більше деталей про проект б. Ви говорите про пряме підключення до бази даних (postgis) для користувачів, ви впевнені?
Пабло

вибачте з цього приводу, оновив деталі мого проекту
Sam007


Взагалі я віддаю перевагу Leaflet, тому що він, як правило, призводить до скорочення і більш читаних .js файлів. Але OL може робити те, чого не може Leaflet, оскільки вам дозволяється більш глибокий і детальний доступ - Отже, я згоден. Це залежить від проекту, але 1 голос за Leaflet від мене.
MartinHvidberg

Відповіді:


87

Я використовував OpenLayers і Leaflet у своїх додатках. На цій форумі було багато обговорень на цю тему та інших людей на планеті-Інтернеті. Зазвичай вони потрапляють у 2 табори - особливості та гнучкість OpenLayers порівняно з простотою Leaflet. Я не був би здивований, якби хтось породив ініціативу "OpenLeaf", яка скоро виходить заміж за кращих з обох світів!

Я виявив, що Leaflet є дуже простим у використанні, маленьким розміром 64K, порівняно з понад 700K Openlayers, і за дуже мало кроків ви можете створити додатки, які мають свіжість і привабливість сучасних веб-і мобільних GIS-додатків. Ваш стек - GeoServer, PostGIS тощо - це стандартний стек, тому OpenLayers або Leaflet можна легко включити.

Сказавши це, я все одно ходив би з OpenLayers з наступних причин

  1. Навколо OpenLayers є лише TON матеріалів. Він набагато зріліший за Листівка.
  2. Перегляньте порівняння комітетів та користувачів .
  3. Стек OpenLayers, GeoServer, PostGIS настільки зарекомендував себе у світі FOSS, що ви йдете по твердому шляху.
  4. У OpenLayers є трохи більше функцій на Map Controls .
  5. Хоча це трохи більше роботи для створення переходів і візуальних ефектів, це можна зробити в OpenLayers.

1
А як щодо мобільних пристроїв? Що краще підходить?
Sam007

1
Так. Зараз я будую мобільні додатки за допомогою OpenLayers та SenchaTouch. На Openlayers працює багато додатків для мобільних карт. Ось кілька прикладів openlayers.org/dev/examples/?q=mobile .
Рамеш Елайяваллі

28

Листовка на всьому шляху. Я відчуваю, що Leaflet - це наступний крок на шляху розвитку клієнтів браузера, що базується на відкритих кодах. Ka-Map -> OpenLayers -> Листовка.

Листок простий у використанні і робить саме те, що написано на жерсті. OpenLayers роздувся, намагаючись бути всіма речами для всіх людей, Leaflet робить 20% речей, які потрібні 80% часу.


14
Отже, це не просто "Листовка на всьому шляху", це "Листовка, якщо вам не потрібна жодна з усіх цих функцій, відсутніх у ній". Я погоджуюсь, що Leaflet набагато простіше у використанні, але якщо вам потрібно зробити щось не таке загальне, вам потрібно піти з OL.
Хуан

1
У листівці бракує багатьох функцій. Листовка добре підходить для дуже основних карт, але, як уже пояснив Рамеш Елайяваллі Ol-3, найкраще, а також ви можете зменшити розмір, вибравши функції, використовуючи побудовані на замовлення.
Абхіджіт Гуджар

18

Хоча я використовував Leaflet у своїй програмі webGIS, OpenLayers має набагато більше переваг перед Leaflet. Наприклад, якщо ви хочете використовувати свою програму на мобільних пристроях, OpenLayers на даний момент є обов'язковим.

Є багато ресурсів, пов'язаних з OpenLayers, проте я думаю, що розробляти додаток з Leaflet простіше, ніж OpenLayers (простіше читати код і розуміти структуру). Якщо у вас є обмеження в часі і ви маєте невеликий досвід роботи з Javascript, використання Leaflet може бути кращим рішенням, щоб зробити це швидше. Або якщо ви хочете розробити дуже просту програму, Leaflet спочатку може бути набагато простіше адаптувати.

Але після того, як я розробив додаток з Leaflet, тепер я кажу, що хотів би, щоб я використовував OpenLayers на початку. Тому що, коли ваш додаток стає складним (наприклад, виклик складних шарів із бази даних, розробка надійного мобільного додатку тощо), Leaflet починає обмежувати ваші здібності. Отже, я думаю, що витратити трохи більше часу на розуміння та вивчення структури OpenLayers на етапі навчання, врешті-решт, того варто.

Як врахували деталі проекту;

Використовуйте інтерфейс карти для отримання інформації про функції:

І Leaflet, і OpenLayers цілком можуть це зробити. Суть у тому, щоб отримати координати події клацання та надіслати запит на сервер. Посилання запиту буде однаковим для обох додатків.

Створіть індивідуальний інструмент, який переносить lat / lon від користувача щодо того, де він / вона натискає на карту, а потім отримує дані клімату з растру (який обробляється сценарієм py на сервері):

Я домігся цього в Leaflet (до речі, я також називав кліматичні дані). Я не отримував растрові дані з сервера, але справа в тому, щоб створити посилання на запит, що легко для обох додатків. Однак якщо ви хочете вибрати багатокутник на цьому етапі, Leaflet досягти трохи важко.

Дозволяє користувачу завантажувати excel, який надсилається до сценарію py, який повертає GeoJSON, який створює векторні функції на карті:

Приблизно однаковий напрямок роботи як для Leaflet, так і для OpenLayers. Я не можу сказати, хто з них кращий.

Дозволити користувачеві створювати векторні багатокутники, які отримають функції, які він перетинає з шару WFS:

Я не маю уявлення про можливості редагування OpenLayers, але у Leaflet є плагін під назвою Leaflet Draw, який простий у використанні та маніпулює малюнками (на стороні javascript) після завершення малювання. Також Leaflet має підтримку WFS-T, якщо ви хочете маніпулювати просторовими даними на сервері WFS. OpenLayers може бути кращим за це, я не знаю.

Вилучає шар із сховища даних PostGIS на GeoServer та відображає шари на карті:

Безумовно, OpenLayers краще для цієї роботи, оскільки простіше підключити PostGIS-сервер.

До речі, існує набір додатків під назвою OpenGeo Suite, який включає OpenLayers, GeoServer та PostGIS; що вирішить усі проблеми, які має веб-розробник GIS-додатків.


Приємна детальна відповідь!
Devdatta Tengshe

Через три роки, як ви ставитесь до Leaflet та мобільних пристроїв? Будь-яке поліпшення?
Mawg

10

У цій презентації є велике порівняння двох рамок :

Листовка проти OpenLayers

І ще одна стаття має чудовий підсумок:

Клієнти часто запитують нас: "Яку найкращу бібліотеку відображення JavaScript на базі клієнта використовувати для створення сучасного веб-додатка з версією Map Suite WebAPI Edition?" Як і багато речей у розробці програмного забезпечення, відповідь не завжди зрозуміла. Відповідь залежить від ваших вимог та переваг розвитку. Оскільки обидві рамки добре зареєстровані та добре працюють на мобільних пристроях, ми зазвичай задаємо наступні питання, щоб допомогти нашим клієнтам прийняти правильне рішення.

Наскільки просте відображення частини програми, яку ви будуєте?

Чим простіші вимоги до картографування, тим більше ми схиляємось до використання Leaflet. Leaflet виконує фантастичну роботу з вирішенням найпоширеніших завдань картографування, таких як використання базових плиток карти, панорамування та масштабування, а його API легко зрозуміти та простий у використанні. Однак після того, як ви вийдете за рамки звичайних завдань, вам потрібно використовувати додатки Leaflet, і тут все ускладнюється. Можливо, ви шукаєте функціонал, який, на жаль, не існує.

Якщо у вас є багатофункціональний додаток з великою кількістю функціональних можливостей, ми прагнемо використовувати OpenLayers 3. OpenLayers 3 має більший і складніший API, який дозволить вам виконувати всі загальні функції картографування, які виконує Leaflet плюс багато інших. Наприклад, якщо у вашій програмі є вимоги, пов'язані з проекцією карт, OpenLayers 3 дозволить вам виконати ці вимоги легше, ніж якщо ви використовуєте Leaflet. Звичайно, завдяки більш надійному API приходить більш кругла крива навчання, тому майте це на увазі, коли ви надаєте оцінки своїм зацікавленим сторонам у проекті.

Скільки JavaScript-коду ви хочете написати?

Оскільки Leaflet - API більш високого рівня, ніж OpenLayers 3, для його запуску та роботи зазвичай потрібно менше коду JavaScript. Після того, як ви захочете відхилитися від стандартної функціональності, яку надає Leaflet, швидше за все, ви закінчите писати багато коду, якщо не буде плагіна, який відповідає вашим точним потребам. З іншого боку, OpenLayers 3 - API нижчого рівня, який потребує більше кодування JavaScript для ініціалізації та налаштування карти. Це може бути зручно, коли ви маєте спеціальні та складні вимоги, оскільки API дозволяє більше контролювати карту та ваші дані.

Підсумок

На завершення, бувають випадки, коли найкраще використовувати Leaflet, і моменти, коли OpenLayers 3 виграє. Якщо ваші вимоги до картографування прості, вам найкраще спочатку перевірити листівку. Але якщо ви шукаєте бібліотеку карток, яка більш настроюється і не проти забруднитися розробкою JavaScript, зверніться до OpenLayers 3.

Оскільки обидві бібліотеки мають свої сильні сторони, ми включили зразки коду як для Leaflet, так і для OpenLayers 3 з Map Suite WebAPI Edition, які можна завантажувати через Product Center або переглядати в ThinkGeo Wiki. Ці зразки є корисними ресурсами при вирішенні питання, яку бібліотечну карту Javascript-бібліотеки використовувати для вашої програми, оскільки ви можете з перших рук побачити різні користувацькі враження та вимоги кодування між двома бібліотеками.

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


5

Я щойно пережив це рішення для свого нового мобільного проекту, і явний переможець - OpenLayers. Листівка, як писав цей текст, була досить млявою на мобільному. Переходи для панорамування / збільшення не відчували себе плавними, а часом дезорієнтували. Окрім рідного, я спробував OpenLayers і досвід набагато кращий. Все-таки не такий хороший, як рідний, але, безумовно, корисний і реальний варіант.


1
Цікаво. Я б очікував, що Leaflet буде легшим і плавнішим на мобільному пристрої. Дякуємо, що поділилися цим досвідом.
LarsH

@Christian Fritz - чи був ваш досвід роботи з OL3 чи OL2?
sfletche

2
@sfletche порівняння було між OL3 та листівкою 0.7.3
Крістіан Фріц,

Через три роки, як ви ставитесь до Leaflet та мобільних пристроїв? Будь-яке поліпшення?
Mawg

так, звичайно. Ми використовуємо листівки у виробництві і не бачимо жодних проблем на мобільному пристрої.
Крістіан Фріц

3

Я б сказав, перевірте документацію API для обох. Мені здається, він OpenLayersпропонує широкий набір функцій, однак час розробки / налагодження довший.

LeafletСексуальніше і набагато простіше, ніж OL, але якщо ви хочете багато зробити зі своєю картою, я думаю, що колись вам може знадобитися функція, яка ще не реалізована Leaflet!

Я дуже рекомендую поглянути на API! Відкриті шари та листівки

Також вам може знадобитися врахувати, що поточний стабільний випуск для Leaflet є, 0.5.1але це 2.12для OpenLayers.

PS Якщо я хочу розробити мобільний додаток, я думаю, що можу йти Leaflet.


3

Існує основний підручник, який порівнює API API і OpenLayers 3, і Leaflet, шляхом того, щоб ви будували одне і те саме в обох. Він написаний Astun Technology, а завдання підручника:

  • Основна карта з OSM плитками
  • OS-GB карта з плитками опитування Ordnance
  • Шар GeoJSON з маркерами
    • Інформація про шар GeoJSON
  • Шар WMS
    • Інформація про рівень WMS

Ось посилання: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html


прокрутка пробілом порушена btw
bugmenot123

3

Це залежить від того, що ви намагаєтеся зробити. Листовка простіша та швидша для 80% проектів веб-карт.

Так само, як вам не потрібен космічний корабель, щоб об'їхати своє сусідство, більшість часу я вважав, що OpenLayers є занадто складним, щоб робити дійсно прості речі, особливо з версії 3.

Наприклад, для створення селектора шарів потрібно, можливо, 5-6 рядків коду в Leaflet, тоді як у OpenLayers 4 ви повинні будувати його з нуля. У вас є чудові інструменти для цього, але більшу частину часу ви не бажаєте спеціалізованого селектора шарів, а лише того, який добре працює.

Ще одна важлива річ, яку слід врахувати, це те, що більшість інформації, навчальних посібників та дискусій в Інтернеті стосуються OpenLayers 2. Вони застаріли, оскільки Версія 3 не сумісна з Версією 2. І ми зараз на версії 4. Версія 2 мав багато простих речей, таких як селектор шарів, спливаючі вікна тощо, а також складніші функції; але з будь-якої причини вони просто видалили такі речі, щоб розвинутись до складної та дуже потужної системи. Крім того, про Leaflet зараз набагато більше інформації, ніж у 2012 році, і це більш зріла технологія.

На закінчення запитайте себе, чи потрібна вам машина або космічний корабель. Ви не будете літати з автомобілем, але їздити на космічному кораблі, щоб відвідати покупки, може бути дуже складним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.