Выбираете OpenLayers или Leaflet? [закрыто]

93

Я спорил с одним из моих коллег по OpenLayers v / s Leaflet. Я отметил, что OpenLayers - намного лучший API, если мы хотим построить проект, в котором вам нужно прямое подключение к Geoserver и PostGIS.

Затем я нашел Open Data Kit , который выглядит довольно новым, но имеет функции подключения к Geoserver и PostGIS.

Итак, детали моего проекта следующие,

  1. Используйте интерфейс карты для получения информации о функции
  2. Создайте настраиваемый инструмент, который получает широту / долготу от пользователя, где он / она нажимает на карту, а затем извлекает климатические данные из растра (который обрабатывается сценарием py на сервере).
  3. Позволяет пользователю загружать Excel, который отправляется в скрипт Py, который возвращает GeoJSON, который создает векторные объекты на карте
  4. Разрешить пользователю создавать векторные многоугольники, которые будут выбирать объекты, которые он пересекает со слоя WFS.
  5. Выбирает слой из хранилища данных PostGIS на GeoServer и отображает слои на карте.

Так что теперь я запутался в том, что лучше и почему использование OpenLayers поверх Leaflet имеет больше смысла или нет?

Sam007
источник
1
Зависит от проекта.
CaptDragon
1
а. Усовершенствуйте свой вопрос, предоставив более подробную информацию о проекте. б. Вы говорите о прямом подключении к базе данных (postgis) для пользователей, вы уверены?
Пабло
извините за это, обновил детали моего проекта
Sam007
Смотрите это: ivansanchez.github.io/leaflet-vs-openlayers-slides
Mahmoodvcs
В целом я предпочитаю Leaflet, потому что он имеет тенденцию приводить к более коротким и более читаемым файлам .js. Но OL может делать то, что Leaflet не может, потому что вам разрешен более глубокий и подробный доступ - так что я согласен. Это зависит от проекта, но 1 голос за листочек от меня.
Мартин,

Ответы:

87

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

Я обнаружил, что Leaflet очень прост в использовании, маленький размер 64K, по сравнению с более чем 700K Openlayers, и за несколько шагов вы можете создавать приложения, которые обладают свежестью и привлекательностью современных веб-приложений и мобильных ГИС-приложений. Ваш стек - GeoServer, PostGIS и т. Д., Является стандартным стеком, поэтому OpenLayers или Leaflet могут быть легко включены.

Сказав это, я все равно пойду с OpenLayers по следующим причинам

  1. Вокруг OpenLayers есть только тонна материала. Это намного более зрелый, чем Leaflet.
  2. Проверьте сравнение по коммитам и пользователям .
  3. Стек OpenLayers, GeoServer, PostGIS настолько хорошо зарекомендовал себя в мире FOSS, что вы идете твердым путем.
  4. OpenLayers имеет немного больше возможностей в элементах управления картой .
  5. Хотя создание переходов и визуальных эффектов немного больше, это можно сделать в OpenLayers.
Рамеш Элайявалли
источник
1
А как насчет мобильных устройств? Какой лучше подходит?
Sam007
1
Да. В настоящее время я создаю мобильные приложения, используя OpenLayers и SenchaTouch. На Openlayers работает множество мобильных картографических приложений. Вот несколько примеров openlayers.org/dev/examples/?q=mobile .
Рамеш Элайявалли
28

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

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

ChrisInCambo
источник
14
Так что это не просто «Leaflet полностью», это «Leaflet, если вам не нужны все эти функции, отсутствующие в нем». Я согласен, что Leaflet гораздо проще в использовании, но если вам нужно сделать что-то не столь распространенное, вы должны использовать OL.
Хуан
1
Листовке не хватает многих функций. Листовка хороша только для самых простых карт, но, как уже объяснил Рамеш Элайявалли, Ol-3 лучше, а также вы можете уменьшить размер, выбрав функции с помощью пользовательских сборок.
Абхиджит Гуджар
18

Хотя я использовал Leaflet в своем приложении webGIS, OpenLayers имеет гораздо больше преимуществ по сравнению с Leaflet. Например, если вы хотите использовать свое приложение на мобильных устройствах, OpenLayers на данный момент является обязательным условием.

Есть много ресурсов, связанных с OpenLayers, однако я думаю, что разработка приложений с помощью Leaflet проще, чем OpenLayers (легче читать код и понимать структуру). Если у вас есть ограничение по времени и небольшой опыт работы с Javascript, использование Leaflet может быть лучшим решением, чтобы сделать это быстрее. Или, если вы хотите разработать очень простое приложение, Leaflet может быть намного легче адаптировать вначале.

Но после того, как я разработал приложение с помощью Leaflet, теперь я говорю, что хотел бы использовать OpenLayers в начале. Потому что, когда ваше приложение становится сложным (например, вызывает сложные слои из базы данных, разрабатывает надежное мобильное приложение и т. Д.), Leaflet начинает ограничивать ваши возможности. Таким образом, я думаю, что потратить немного больше времени, чтобы понять и изучить структуру OpenLayers на этапе обучения, в конечном итоге это того стоит.

Как подробно рассмотрены детали проекта;

Используйте интерфейс карты для получения информации о функции:

И Leaflet, и OpenLayers могут отлично это сделать. Суть в том, чтобы получить координаты события клика и отправить запрос на сервер. Ссылка на запрос будет одинаковой для обоих приложений.

Создайте настраиваемый инструмент, который получает данные от пользователя о том, где он / она нажимает на карту, а затем получает климатические данные из растра (который обрабатывается сценарием 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; которая решит все проблемы веб-разработчика ГИС-приложений.

mkturkeri
источник
Хороший подробный ответ!
Девдатта Тенгше
1
Три года спустя, как вы относитесь к Leaflet и мобильным устройствам? Есть ли улучшения?
Мауг
10

В этой презентации есть отличное сравнение двух структур :

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

И другая статья также имеет большое резюме:

Клиенты часто спрашивают нас: «Какая библиотека сопоставления JavaScript на стороне клиента может использоваться при создании современного веб-приложения с помощью Map Suite WebAPI Edition?» Как и многие другие вещи в разработке программного обеспечения, ответ не всегда ясен. Ответ зависит от ваших требований и предпочтений развития. Поскольку обе платформы хорошо документированы и надежно работают на мобильных устройствах, мы обычно задаем следующие вопросы, чтобы помочь нашим клиентам принять правильное решение.

Насколько простая картографическая часть приложения, которое вы создаете?

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

Если у вас есть многофункциональное приложение с большим количеством функций, мы стремимся к использованию 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, которые можно загрузить через Центр продуктов или просмотреть на 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
@ Кристиан Фриц - был ли у вас опыт работы с OL3 или OL2?
sfletche
2
@sfletche сравнение было между OL3 и листовкой 0.7.3
Кристиан Фриц,
Три года спустя, как вы относитесь к Leaflet и мобильным устройствам? Есть ли улучшения?
Мауг
Да, безусловно. Мы используем листовки в производстве и не видим никаких проблем на мобильном телефоне.
Кристиан Фриц
3

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

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

Я действительно рекомендую взглянуть на API! OpenLayers & Leaflet

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

PS Если я хочу разработать мобильное приложение, я думаю, что я мог бы пойти на Leaflet.

мессия
источник
3

Существует базовое руководство, в котором сравниваются API-интерфейсы OpenLayers 3 и Leaflet, в которых вы встраиваете в них одно и то же. Он написан Astun Technology, и следующие учебные задачи:

  • Основная карта с плитками OSM
  • Карта OS-GB с тайлами Обзора артиллерии
  • Слой GeoJSON с маркерами
    • Информация для слоя GeoJSON
  • Слой WMS
    • Информация для слоя WMS

Вот ссылка: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html

crantok
источник
прокрутка
пробелом
3

Это зависит от того, что вы пытаетесь сделать. Листовка проще и быстрее для 80% проектов веб-карт.

Точно так же, как вам не нужен космический корабль для обхода вашего района, большую часть времени я находил OpenLayers слишком сложным, чтобы делать действительно простые вещи, особенно из Версии 3.

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

Еще одна важная вещь, которую следует учитывать, - это то, что большая часть информации, учебных пособий и дискуссий в Интернете касаются OpenLayers 2. Они устарели, так как Версия 3 не совместима с Версией 2. И мы сейчас на Версии 4. Версия 2 было много простых вещей, таких как селектор слоев, всплывающие окна и т. д. наряду с более сложными функциями; но по какой-то причине они просто удалили такие вещи, чтобы развиться в сложную и очень мощную систему. Более того, сейчас о Leaflet гораздо больше информации, чем в 2012 году, и это более зрелая технология.

В заключение спросите себя, нужен ли вам автомобиль или космический корабль. Вы не будете летать на машине, но управлять космическим кораблем по магазинам может быть очень сложно.

Карлос Сарилле
источник