Я спорил с одним из моих коллег по OpenLayers v / s Leaflet. Я отметил, что OpenLayers - намного лучший API, если мы хотим построить проект, в котором вам нужно прямое подключение к Geoserver и PostGIS.
Затем я нашел Open Data Kit , который выглядит довольно новым, но имеет функции подключения к Geoserver и PostGIS.
Итак, детали моего проекта следующие,
- Используйте интерфейс карты для получения информации о функции
- Создайте настраиваемый инструмент, который получает широту / долготу от пользователя, где он / она нажимает на карту, а затем извлекает климатические данные из растра (который обрабатывается сценарием py на сервере).
- Позволяет пользователю загружать Excel, который отправляется в скрипт Py, который возвращает GeoJSON, который создает векторные объекты на карте
- Разрешить пользователю создавать векторные многоугольники, которые будут выбирать объекты, которые он пересекает со слоя WFS.
- Выбирает слой из хранилища данных PostGIS на GeoServer и отображает слои на карте.
Так что теперь я запутался в том, что лучше и почему использование OpenLayers поверх Leaflet имеет больше смысла или нет?
Ответы:
Я использовал OpenLayers и Leaflet в своих приложениях. На этом форуме и других форумах было так много дискуссий на эту тему и в Интернете. Они обычно делятся на 2 лагеря - особенности и гибкость OpenLayers против простоты Leaflet. Я не был бы удивлен, если бы кто-то порождает инициативу "OpenLeaf", скоро выходящую замуж за лучшее из обоих миров!
Я обнаружил, что Leaflet очень прост в использовании, маленький размер 64K, по сравнению с более чем 700K Openlayers, и за несколько шагов вы можете создавать приложения, которые обладают свежестью и привлекательностью современных веб-приложений и мобильных ГИС-приложений. Ваш стек - GeoServer, PostGIS и т. Д., Является стандартным стеком, поэтому OpenLayers или Leaflet могут быть легко включены.
Сказав это, я все равно пойду с OpenLayers по следующим причинам
источник
Листовка до конца. Я чувствую, что Leaflet - это следующий шаг в эволюции клиентов браузера с открытым исходным кодом. Ka-Map -> OpenLayers -> Leaflet.
Листовка проста в использовании и делает именно то, что написано на банке. OpenLayers стал раздутым, пытаясь быть всем для всех, Leaflet делает 20% вещей, которые требуются 80% времени.
источник
Хотя я использовал 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; которая решит все проблемы веб-разработчика ГИС-приложений.
источник
В этой презентации есть отличное сравнение двух структур :
И другая статья также имеет большое резюме:
От http://blog.thinkgeo.com/2015/09/08/leaflet-vs-openlayers-3-which-is-the-better-client-side-javascript-mapping-library/
источник
Я только что принял это решение для моего нового мобильного проекта, и явный победитель - OpenLayers. Листовка, на момент написания статьи, была довольно вялой на мобильном телефоне. Переходы для панорамирования / масштабирования не были гладкими, и это иногда дезориентировало. Если не считать родной, я пробовал OpenLayers, и опыт намного лучше. Все еще не так хорошо, как родной, но определенно пригодный для использования и реальный вариант.
источник
Я бы сказал, проверьте документацию API для обоих. Мне кажется, что это
OpenLayers
предлагает обширный набор функций, однако время разработки / отладки больше.Leaflet
он сексуальнее и намного проще, чем OL, однако, если вы хотите много делать со своей картой, я думаю, что когда-нибудь вам может понадобиться функция, которая еще не реализованаLeaflet
!Я действительно рекомендую взглянуть на API! OpenLayers & Leaflet
Также вам может потребоваться учесть, что текущая стабильная версия для Leaflet предназначена
0.5.1
только2.12
для OpenLayers.PS Если я хочу разработать мобильное приложение, я думаю, что я мог бы пойти на
Leaflet
.источник
Существует базовое руководство, в котором сравниваются API-интерфейсы OpenLayers 3 и Leaflet, в которых вы встраиваете в них одно и то же. Он написан Astun Technology, и следующие учебные задачи:
Вот ссылка: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html
источник
Это зависит от того, что вы пытаетесь сделать. Листовка проще и быстрее для 80% проектов веб-карт.
Точно так же, как вам не нужен космический корабль для обхода вашего района, большую часть времени я находил OpenLayers слишком сложным, чтобы делать действительно простые вещи, особенно из Версии 3.
Например, создание селектора слоя занимает, возможно, 5-6 строк кода в Leaflet, в то время как в OpenLayers 4 вы должны создать его с нуля. У вас есть замечательные инструменты для этого, но в большинстве случаев вам не нужен настраиваемый селектор слоев, а только тот, который работает нормально.
Еще одна важная вещь, которую следует учитывать, - это то, что большая часть информации, учебных пособий и дискуссий в Интернете касаются OpenLayers 2. Они устарели, так как Версия 3 не совместима с Версией 2. И мы сейчас на Версии 4. Версия 2 было много простых вещей, таких как селектор слоев, всплывающие окна и т. д. наряду с более сложными функциями; но по какой-то причине они просто удалили такие вещи, чтобы развиться в сложную и очень мощную систему. Более того, сейчас о Leaflet гораздо больше информации, чем в 2012 году, и это более зрелая технология.
В заключение спросите себя, нужен ли вам автомобиль или космический корабль. Вы не будете летать на машине, но управлять космическим кораблем по магазинам может быть очень сложно.
источник