Escolhendo OpenLayers ou Leaflet? [fechadas]

93

Eu estava debatendo com um dos meus colegas no OpenLayers v / s Leaflet. Afirmei que o OpenLayers é uma API muito melhor se queremos construir um projeto, no qual você precisa de conectividade direta com o Geoserver e o PostGIS.

Então eu encontrei o Open Data Kit , que parece bem novo, mas possui os recursos de conectividade com o Geoserver e o PostGIS.

Então, os detalhes do meu projeto são os seguintes,

  1. Use a interface do mapa para buscar informações sobre os recursos
  2. Crie uma ferramenta personalizada que leve o usuário para onde ele clica no mapa e, em seguida, busca os dados climáticos da varredura (que é tratada por um script py no servidor)
  3. Permite que o usuário faça o upload do excel, que é enviado para o script py, que retorna um GeoJSON, que cria recursos vetoriais no mapa
  4. Permitir que o usuário crie polígonos vetoriais, que buscarão os Recursos que ele cruza na Camada WFS.
  5. Busca a camada do armazenamento de dados PostGIS no GeoServer e exibe as camadas no mapa.

Então agora estou confuso sobre o que é melhor e por que usar o OpenLayers sobre o Leaflet faz mais sentido ou não?

Sam007
fonte
1
Depende do projeto.
precisa saber é o seguinte
1
uma. Melhore sua pergunta, fornecendo mais detalhes sobre o projeto. b. Você está falando sobre conexão direta com o banco de dados (postgis) para os usuários, tem certeza?
Pablo Pablo
desculpe por isso, atualizei os detalhes do meu projeto
Sam007 20/09/2012
Em geral, prefiro o Leaflet, porque ele tende a levar a arquivos .js mais curtos e mais legíveis. Mas o OL pode fazer coisas que o Leaflet não pode, porque você tem acesso mais profundo e detalhado - Então, eu concordo. Depende do projeto, mas tenho 1 voto para o Leaflet.
MartinHvidberg

Respostas:

87

Eu usei o OpenLayers e o Leaflet nos meus aplicativos. Tem havido muita discussão sobre este tópico neste fórum e outros no planeta-internet. Eles geralmente se enquadram em dois campos - recursos e flexibilidade do OpenLayers versus simplicidade do Leaflet. Eu não ficaria surpreso se alguém criar uma iniciativa "OpenLeaf" logo se casando com o melhor dos dois mundos!

Achei o Leaflet muito simples de usar, um tamanho pequeno de 64K, em comparação com mais de 700K Openlayers, e em muito poucas etapas você pode criar aplicativos com o frescor e o charme dos aplicativos de GIS na Web e móveis de hoje. Sua pilha - GeoServer, PostGIS etc., é uma pilha padrão; portanto, OpenLayers ou Leaflet podem ser facilmente incorporados.

Dito isto, eu continuaria com o OpenLayers pelos seguintes motivos

  1. Há apenas uma tonelada de material em torno do OpenLayers. É muito mais maduro que o Leaflet.
  2. Confira a comparação de confirmações e usuários .
  3. A pilha OpenLayers, GeoServer, PostGIS é tão comprovada no mundo FOSS que você está seguindo um caminho sólido.
  4. O OpenLayers possui um pouco mais de recursos nos Controles de Mapa .
  5. Embora seja um pouco mais trabalhoso criar transições e efeitos visuais, isso pode ser feito em OpenLayers.
Ramesh Elaiyavalli
fonte
1
E quanto aos dispositivos móveis? Qual é o mais adequado?
#
1
Sim. Atualmente, estou criando aplicativos móveis usando o OpenLayers e o SenchaTouch. Existem muitos aplicativos de mapas para dispositivos móveis em execução no Openlayers. Aqui estão alguns exemplos openlayers.org/dev/examples/?q=mobile .
Ramesh Elaiyavalli 2/10/12
28

Folheto até o fim. Sinto que o Leaflet é o próximo passo na evolução dos clientes de navegador baseados em blocos de código aberto. Ka-Map -> OpenLayers -> Folheto.

O folheto é simples de usar e faz exatamente o que diz na lata. O OpenLayers ficou inchado ao tentar ser tudo para todas as pessoas, o Leaflet faz 20% das coisas necessárias 80% do tempo.

ChrisInCambo
fonte
14
Portanto, não é apenas "Folheto até o fim", é "Folheto se você não precisar de nenhum desses recursos ausentes". Concordo que o Leaflet é muito mais simples de usar, mas se você precisar fazer algo não tão comum, precisará seguir o OL.
Juan Juan
1
O folheto não possui muitas funções. O folheto é bom apenas para mapas muito básicos, mas como já explicado por Ramesh Elaiyavalli Ol-3, é melhor e você também pode reduzir o tamanho selecionando os recursos usando recursos personalizados.
Abhijit Gujar
18

Embora eu tenha usado o Leaflet no meu aplicativo webGIS, o OpenLayers tem muito mais vantagens sobre o Leaflet. Por exemplo, se você deseja usar seu aplicativo em dispositivos móveis, o OpenLayers é obrigatório no momento.

Existem muitos recursos relacionados ao OpenLayers, no entanto, acho que o desenvolvimento de aplicativos com o Leaflet é mais fácil que o OpenLayers (é mais fácil ler um código e entender a estrutura). Se você tem um limite de tempo e tem pouca experiência com Javascript, usar o Leaflet pode ser uma solução melhor para fazê-lo mais rapidamente. Ou se você deseja desenvolver um aplicativo muito simples, o Leaflet pode ser muito mais fácil de se adaptar a princípio.

Mas depois que desenvolvi um aplicativo com o Leaflet, agora digo que gostaria de ter usado o OpenLayers no início. Como quando seu aplicativo se torna complexo (como chamar camadas complexas de um banco de dados, desenvolver um aplicativo móvel robusto etc.), o Leaflet começa a limitar suas habilidades. Então, acho que gastar um pouco mais de tempo para entender e aprender a estrutura do OpenLayers no estágio de aprendizado acabará valendo a pena.

Conforme os detalhes do projeto considerados;

Use a interface do mapa para buscar informações sobre os recursos:

O Leaflet e o OpenLayers podem fazer isso perfeitamente. O objetivo aqui é obter as coordenadas do evento click e enviar a solicitação ao servidor. O link de solicitação será o mesmo para os dois aplicativos.

Crie uma ferramenta personalizada que leva o usuário lat / lon até onde ele clica no mapa e, em seguida, busca os Dados Climáticos da varredura (que é tratada por um script py no servidor):

Consegui isso no Leaflet (a propósito, eu também estava chamando os dados climáticos). Eu não estava buscando os dados rasterizados de um servidor, mas o objetivo aqui é criar um link de solicitação, o que é fácil para os dois aplicativos. No entanto, se você deseja selecionar um polígono nesta fase, é um pouco difícil de obter no Leaflet.

Permite que o usuário faça upload do excel, que é enviado para o script py, que retorna um GeoJSON, que cria recursos vetoriais no mapa:

Aproximadamente a mesma linha de trabalho para o Leaflet e o OpenLayers. Não sei dizer qual é o melhor.

Permita que o usuário crie polígonos vetoriais, que buscarão os Recursos que ele cruza na Camada WFS:

Não tenho idéia das habilidades de edição do OpenLayers, mas o Leaflet possui um plugin chamado Leaflet Draw, que é fácil de usar e manipular os desenhos (no lado do javascript) após a conclusão do desenho. O Leaflet também oferece suporte ao WFS-T se você deseja manipular os dados espaciais no servidor WFS. OpenLayers pode ser melhor que isso, eu não sei.

Busca a camada do armazenamento de dados PostGIS no GeoServer e exibe as camadas no mapa:

Definitivamente o OpenLayers é melhor para este trabalho, pois é mais fácil conectar o servidor PostGIS.

A propósito, existe um conjunto de aplicativos chamado OpenGeo Suite que inclui OpenLayers, GeoServer e PostGIS; que resolverá todos os problemas que um desenvolvedor de aplicativos GIS baseado na web tem.

mkturkeri
fonte
Boa resposta detalhada!
Devdatta Tengshe
Três anos depois, como você se sente sobre o Leaflet e os dispositivos móveis? Alguma melhoria?
Mawg 7/08
10

Há uma ótima comparação nas duas estruturas nesta apresentação :

Leaflet vs OpenLayers

E outro artigo também tem um ótimo resumo:

Os clientes costumam nos perguntar: “Qual é a melhor biblioteca de mapeamento JavaScript do lado do cliente para criar um aplicativo Web moderno com o Map Suite WebAPI Edition?” Como muitas coisas em Desenvolvimento de Software, a resposta nem sempre é clara. A resposta depende dos seus requisitos e preferências de desenvolvimento. Como as duas estruturas estão bem documentadas e funcionam solidamente em dispositivos móveis, geralmente fazemos as seguintes perguntas para ajudar nossos clientes a tomar a decisão certa.

Quão simples é a parte de mapeamento do aplicativo que você está criando?

Quanto mais simples os requisitos de mapeamento, mais inclinamos a usar o Leaflet. O Leaflet faz um trabalho fantástico ao lidar com as tarefas de mapeamento mais comuns, como consumir blocos de mapa base, pan e zoom, e sua API é fácil de entender e simples de usar. Depois de ir além das tarefas comuns, no entanto, você precisa usar os Leaflet Plugins e isso torna as coisas mais complicadas. Pode haver uma funcionalidade que você está procurando que infelizmente não existe.

Se você possui um aplicativo rico em recursos e com muitas funcionalidades, nós começamos a usar o OpenLayers 3. O OpenLayers 3 possui uma API maior e mais complexa que permitirá executar todas as funções de mapeamento comuns que o Leaflet faz e muito mais. Por exemplo, se seu aplicativo tiver requisitos que envolvem projeção de mapas, o OpenLayers 3 permitirá que você atenda a esses requisitos mais facilmente do que se estivesse usando o Leaflet. Obviamente, com uma API mais robusta, há uma curva de aprendizado mais acentuada; lembre-se disso ao fornecer estimativas para as partes interessadas do projeto.

Quanto código JavaScript você deseja escrever?

Como o Leaflet é uma API de nível superior ao OpenLayers 3, geralmente é necessário menos código JavaScript para colocá-lo em funcionamento. Porém, se você quiser desviar-se da funcionalidade padrão fornecida pelo Leaflet, é provável que você acabe escrevendo muito código, a menos que exista um plug-in que atenda às suas necessidades exatas. Por outro lado, o OpenLayers 3 é uma API de nível inferior que requer mais codificação JavaScript para inicializar e configurar o mapa. Isso pode ser conveniente quando você tiver requisitos personalizados e complexos, pois a API permite mais controle sobre o mapa e seus dados.

Sumário

Para finalizar, há momentos em que é melhor usar o Leaflet e momentos em que o OpenLayers 3 vence. Se seus requisitos de mapeamento são simples, é de seu interesse verificar primeiro o Leaflet. Mas se você está procurando uma biblioteca de mapeamento mais personalizável e que não se importe com o desenvolvimento do JavaScript, procure o OpenLayers 3.

Como as duas bibliotecas têm seus pontos fortes, incluímos exemplos de código para o Leaflet e o OpenLayers 3 com o Map Suite WebAPI Edition, que podem ser baixados no Product Center ou visualizados no ThinkGeo Wiki. Essas amostras são recursos úteis ao decidir qual biblioteca de mapeamento Javascript do lado do cliente usar para seu aplicativo, pois você pode ver em primeira mão as diferentes experiências do usuário e os requisitos de codificação entre as duas bibliotecas.

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

Simon East
fonte
5

Acabei de passar por essa decisão para o meu novo projeto móvel e o vencedor é o OpenLayers. O folheto, no momento em que este artigo foi escrito, era bastante lento no celular. As transições para panorâmica / zoom não pareceram suaves e às vezes eram desorientadoras. Antes de ser nativo, tentei o OpenLayers e a experiência é muito melhor. Ainda não é tão bom quanto o nativo, mas definitivamente utilizável e uma opção real.

Christian Fritz
fonte
1
Interessante. Eu esperava que o Leaflet fosse mais leve e suave em um dispositivo móvel. Obrigado por compartilhar esta experiência.
LarsH
@ Christian Fritz - foi sua experiência com OL3 ou OL2?
sfletche
2
@sfletche a comparação foi entre OL3 e folheto 0.7.3
Christian Fritz
Três anos depois, como você se sente sobre o Leaflet e os dispositivos móveis? Alguma melhoria?
Mawg 7/08
sim definitivamente. Usamos o folheto na produção e não vemos problemas no celular.
Christian Fritz
3

Eu diria que verifique a documentação da API para ambos. Para mim, parece que OpenLayersoferece um amplo conjunto de recursos, porém o tempo de desenvolvimento / depuração é mais longo.

Leafleté mais sexy e muito mais fácil do que o OL, no entanto, se você quiser fazer muito com seu mapa, acho que um dia você poderá precisar de um recurso que ainda não foi implementado Leaflet!

Eu realmente recomendo dar uma olhada nas APIs! OpenLayers & Leaflet

Além disso, você pode precisar de considerar que a versão estável atual para Folheto é 0.5.1, mas é 2.12para OpenLayers.

PS: Se eu quiser desenvolver um aplicativo móvel, acho que posso ir Leaflet.

Mahdi
fonte
3

Há um tutorial básico que compara as APIs do OpenLayers 3 e do Leaflet, permitindo que você construa a mesma coisa nos dois. Foi escrito pela Astun Technology e as tarefas do tutorial são:

  • Mapa básico com blocos OSM
  • Mapa OS-GB com blocos de Levantamento de Ordnance
  • Camada GeoJSON com marcadores
    • Informações para a camada GeoJSON
  • Camada WMS
    • Informações para a camada WMS

Aqui está o link: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html

Crantok
fonte
rolagem barra de espaço é quebrado btw
bugmenot123
3

Depende do que você está tentando fazer. O folheto é mais simples e rápido para 80% dos projetos de mapas da web.

Da mesma forma que você não precisa de uma espaçonave para percorrer seu bairro, na maioria das vezes eu achei o OpenLayers muito complexo para fazer coisas realmente simples, especialmente da Versão 3.

Por exemplo, a criação de um seletor de camada leva talvez de 5 a 6 linhas de código no Leaflet, enquanto no OpenLayers 4 você precisa construí-lo do zero. Você tem ferramentas incríveis para fazer isso, mas na maioria das vezes não deseja um seletor de camada personalizado, apenas um que funcione bem.

Outra coisa importante a considerar é que a maioria das informações, tutoriais e debates na Internet são sobre o OpenLayers 2. Eles estão desatualizados, pois a Versão 3 não é compatível com a Versão 2. E agora estamos na Versão 4. Versão 2 tinha muitas coisas simples, como seletor de camadas, pop-ups, etc., além de funções mais complexas; mas, por qualquer motivo, eles apenas deletaram esses tipos de coisas para evoluir para um sistema complexo e muito poderoso. Além disso, agora há muito mais informações sobre o Leaflet do que em 2012, e é uma tecnologia mais madura.

Como conclusão, pergunte-se se você precisa de um carro ou de uma nave espacial. Você não voa de carro, mas dirigir uma nave espacial para fazer compras pode ser realmente complicado.

Carlos Sarille
fonte