¿Eligiendo OpenLayers o Leaflet? [cerrado]

85

Estaba debatiendo con uno de mis colegas en OpenLayers v / s Leaflet. Señalé que OpenLayers es una API mucho mejor si deseamos construir un proyecto, donde necesita conectividad directa con Geoserver y PostGIS.

Luego encontré Open Data Kit , que se ve bastante Nuevo, pero tiene las características de conectividad con Geoserver y PostGIS.

Los detalles de mi proyecto son los siguientes,

  1. Usa la interfaz del mapa para obtener información de la función
  2. Cree una herramienta personalizada que lleve el lat / lon del usuario a donde hace clic en el mapa y luego recupera los datos del clima del ráster (que se maneja mediante una secuencia de comandos py en el servidor)
  3. Permite al usuario cargar excel, que se envía a la secuencia de comandos py, que devuelve un GeoJSON, que crea funciones vectoriales en el mapa
  4. Permitir al usuario crear polígonos vectoriales, que recogerán las características que intersecta de la capa WFS.
  5. Obtiene Capa del Almacén de Datos PostGIS en GeoServer y muestra las capas en el mapa.

Así que ahora estoy confundido sobre qué es mejor y por qué usar OpenLayers sobre Leaflet tiene más sentido o no.

    
pregunta Sam007 20.09.2012 - 18:40

8 respuestas

82

He utilizado tanto OpenLayers como Leaflet en mis aplicaciones. Ha habido mucha discusión sobre este tema en este foro y en otros en el planeta Internet. Por lo general, se dividen en 2 campos: características y flexibilidad de OpenLayers en comparación con la simplicidad de Leaflet. ¡No me sorprendería si alguien engendra una iniciativa "OpenLeaf" pronto casándose con lo mejor de ambos mundos!

Encontré Leaflet muy simple de usar, un tamaño pequeño de 64K, en comparación con más de 700K Openlayers, y en muy pocos pasos puede crear aplicaciones que tengan la frescura y el atractivo de las aplicaciones web y de SIG de hoy en día. Su pila: GeoServer, PostGIS, etc., es una pila estándar, por lo que OpenLayers o Leaflet podrían incorporarse fácilmente.

Habiendo dicho eso, seguiría con OpenLayers por los siguientes motivos

  1. Hay solo una TONELADA de material alrededor de OpenLayers. Es mucho más maduro que el Folleto.
  2. Consulte la comparación de confirmaciones y usuarios .
  3. La pila de OpenLayers, GeoServer, PostGIS está tan probada en el mundo de FOSS que se encuentra en una ruta sólida.
  4. OpenLayers tiene un poco más de funciones en Controles de mapa .
  5. Si bien es un poco más de trabajo crear transiciones y efectos visuales, se puede hacer en OpenLayers.
respondido por el Ramesh Elaiyavalli 02.10.2012 - 07:12
24

Folleto hasta el final. Siento que Leaflet es el siguiente paso en la evolución de los clientes de navegador basados en mosaico de código abierto. Mapa de Ka - > OpenLayers - > Folleto.

El folleto es fácil de usar y hace exactamente lo que dice en la lata. OpenLayers se ha hinchado al tratar de ser todo para todos, Leaflet hace el 20% de las cosas que se requieren el 80% del tiempo.

    
respondido por el ChrisInCambo 02.10.2012 - 11:17
16

Aunque utilicé Leaflet en mi aplicación webGIS, OpenLayers tiene muchas más ventajas sobre Leaflet. Por ejemplo, si desea utilizar su aplicación en dispositivos móviles, OpenLayers es una necesidad por el momento.

Hay muchos recursos relacionados con OpenLayers, sin embargo, creo que desarrollar aplicaciones con Leaflet es más fácil que OpenLayers (es más fácil leer un código y comprender la estructura). Si tiene una limitación de tiempo y tiene poca experiencia con Javascript, utilizar Leaflet podría ser una mejor solución para hacerlo más rápido. O si desea desarrollar una aplicación muy sencilla, al principio, Leaflet puede ser mucho más fácil de adaptar.

Pero después de desarrollar una aplicación con Leaflet, ahora digo que me gustaría haber usado OpenLayers al principio. Porque cuando su aplicación se vuelve compleja (como llamar capas complejas desde una base de datos, desarrollar una aplicación móvil robusta, etc.), Leaflet comienza a limitar sus capacidades. Por lo tanto, creo que vale la pena dedicar un poco más de tiempo a comprender y aprender la estructura de OpenLayers en la etapa de aprendizaje.

Como los detalles del proyecto considerados;

Use la interfaz del mapa para obtener información de la función:

Tanto Leaflet como OpenLayers pueden hacer eso perfectamente. El punto aquí es obtener las coordenadas del evento de clic y enviar una solicitud al servidor. El enlace de solicitud será el mismo para ambas aplicaciones.

Cree una herramienta personalizada que lleve la lat / lon del usuario a donde hace clic en el mapa y luego recupera los datos climáticos del ráster (que se maneja mediante una secuencia de comandos py en el servidor):

Lo logré yo mismo en el Folleto (por cierto, también estaba llamando a los datos del clima). No estaba recuperando los datos ráster de un servidor, pero el punto aquí es crear un enlace de solicitud, que es fácil para ambas aplicaciones. Sin embargo, si desea seleccionar un polígono en esta etapa, es un poco difícil conseguirlo.

Permite al usuario cargar excel, que se envía a la secuencia de comandos py, que devuelve un GeoJSON, que crea funciones vectoriales en el mapa:

Aproximadamente la misma línea de trabajo para Leaflet y OpenLayers. No puedo decir cuál es mejor.

Permitir al usuario crear polígonos vectoriales, que buscarán las características que intersecta de la capa WFS:

No tengo idea acerca de las habilidades de edición de OpenLayers pero Leaflet tiene un complemento llamado Leaflet Draw, que es fácil de usar y manipular los dibujos (en el lado de javascript) una vez que se completa el dibujo. Además, Leaflet es compatible con WFS-T si desea manipular los datos espaciales en el servidor WFS. OpenLayers podría ser mejor que eso, no lo sé.

Obtiene Capa del almacén de datos de PostGIS en GeoServer y muestra las capas en el mapa:

Definitivamente, OpenLayers es mejor para este trabajo, ya que es más fácil conectar el servidor de PostGIS.

Por cierto, hay un paquete de aplicaciones llamado OpenGeo Suite que incluye OpenLayers, GeoServer y PostGIS; que resolverá todos los problemas que tiene un desarrollador de aplicaciones SIG basado en web.

    
respondido por el mkturkeri 20.04.2016 - 13:16
7

Hay una gran comparación en los dos marcos en esta presentación :

Y otro artículo también tiene un gran resumen:

  

Los clientes a menudo nos preguntan: "¿Cuál es la mejor biblioteca de mapas de JavaScript del lado del cliente que se debe utilizar al crear una aplicación web moderna con Map Suite WebAPI Edition?" Como muchas cosas en el desarrollo de software, la respuesta no siempre es claro. La respuesta depende de sus requerimientos y preferencias de desarrollo. Dado que ambos marcos están bien documentados y funcionan bien en dispositivos móviles, generalmente hacemos las siguientes preguntas para ayudar a nuestros clientes a tomar la decisión correcta.

     

¿Qué tan simple es mapear parte de la aplicación que estás creando?

     

Cuanto más simples son los requisitos de mapeo, más nos inclinamos hacia el uso de Leaflet. Leaflet hace un trabajo fantástico en el manejo de las tareas de mapeo más comunes, como consumir mosaicos de mapas base, paneo y zoom, y su API Es fácil de entender y simple de usar. Sin embargo, una vez que va más allá de las tareas comunes, necesita usar los complementos de folletos y esto donde las cosas se vuelven más complicadas. Puede haber una funcionalidad que está buscando que, lamentablemente, no existe.

     

Si tiene una aplicación rica en funciones con mucha funcionalidad, nos inclinamos hacia el uso de OpenLayers 3. OpenLayers 3 tiene una API más grande y compleja que le permitirá realizar todas las funciones de mapeo comunes Ese folleto hace más muchos más. Por ejemplo, si su aplicación tiene requisitos relacionados con la proyección de mapas, OpenLayers 3 le permitirá cumplir estos requisitos con mayor facilidad que si utiliza Leaflet. Por supuesto, con una API más robusta viene una curva de aprendizaje más pronunciada, así que tenlo en cuenta al proporcionar estimaciones a los interesados de tu proyecto.

     

¿Cuánto código JavaScript quieres escribir?

     

Dado que Leaflet es una API de nivel más alto que OpenLayers 3, generalmente se necesita menos código JavaScript para ponerlo en funcionamiento. Sin embargo, una vez que quiera desviarse de la funcionalidad estándar que proporciona el Folleto, es probable que termine de escribir muchos códigos a menos que haya un complemento que satisfaga sus necesidades exactas. Por otro lado, OpenLayers 3 es una API de nivel inferior que requiere más codificación de JavaScript para inicializar y configurar el mapa. Esto puede ser conveniente cuando tiene requisitos personalizados y complejos, ya que la API permite un mayor control sobre el mapa y sus datos.

     

Resumen

     

Para terminar, hay momentos en que es mejor usar Leaflet y momentos en que OpenLayers 3 gana. Si sus requisitos de mapeo son simples, le conviene consultar primero el Folleto. Pero si está buscando una biblioteca de mapas que sea más personalizable y que no le importe ensuciarse con el desarrollo de JavaScript, busque OpenLayers 3.

     

Dado que ambas bibliotecas tienen sus fortalezas, hemos incluido ejemplos de código para Leaflet y OpenLayers 3 con Map Suite WebAPI Edition que se pueden descargar a través del Centro de productos o ver en el Wiki de ThinkGeo. Estas muestras son recursos útiles para decidir qué biblioteca de mapas de Javascript del lado del cliente usar para su aplicación porque puede ver de primera mano las diferentes experiencias de usuario y los requisitos de codificación entre las dos bibliotecas.

De enlace

    
respondido por el Simon East 12.10.2017 - 05:55
4

Acabo de tomar esta decisión para mi nuevo proyecto móvil y el ganador claro es OpenLayers. Folleto, a partir de este escrito, era bastante lento en el móvil. Las transiciones para pan / zoom no se sentían suaves y desorientaban a veces. A falta de ser nativo, probé OpenLayers y la experiencia es mucho mejor. Todavía no es tan bueno como el nativo, pero es definitivamente utilizable y una opción real.

    
respondido por el Christian Fritz 09.09.2014 - 18:27
3

Yo diría que compruebe la documentación de la API para ambos. Para mí, parece que OpenLayers ofrece un extenso conjunto de características, sin embargo, el tiempo de desarrollo / depuración es más largo.

Leaflet es más atractivo y mucho más fácil que el OL, sin embargo, si quieres hacer mucho con tu mapa, creo que algún día es posible que necesites una función que no esté implementada en Leaflet todavía.

¡Realmente recomiendo echar un vistazo a las API! OpenLayers & Leaflet

También es posible que deba considerar que la versión estable actual de Leaflet es 0.5.1 pero es 2.12 para OpenLayers.

P.S. Si quiero desarrollar una aplicación móvil, creo que podría ir por Leaflet .

    
respondido por el Mahdi 24.04.2013 - 13:52
2

Hay un tutorial básico que compara las API de OpenLayers 3 y Leaflet al hacer que construyas lo mismo en ambos. Está escrito por Astun Technology y las tareas tutoriales son:

  • Mapa básico con mosaicos OSM
  • Mapa OS-GB con fichas de levantamiento de artillería
  • capa GeoJSON con marcadores
    • Información para la capa GeoJSON
  • capa WMS
    • Información para la capa WMS

Aquí está el enlace: enlace

    
respondido por el crantok 20.07.2015 - 13:06
2

Depende de lo que estés tratando de hacer. El folleto es más simple y más rápido para el 80% de los proyectos de mapas web.

De la misma manera que no necesita una nave espacial para recorrer su vecindario, la mayoría de las veces, los OpenLayers son demasiado complejos para hacer cosas realmente simples, especialmente desde la versión 3.

Por ejemplo, la creación de un selector de capa requiere de 5 a 6 líneas de código en el Folleto, mientras que en OpenLayers 4 debe crearlo desde cero. Tienes herramientas increíbles para hacerlo, pero la mayoría de las veces no quieres un selector de capas personalizado, solo uno que funciona bien.

Otra cosa importante a considerar es que la mayoría de la información, los tutoriales y los debates en Internet son sobre OpenLayers 2. Están desactualizados, ya que la Versión 3 no es compatible con la Versión 2. Y ahora estamos en la Versión 4. La versión 2 tenía muchas cosas simples como selector de capas, ventanas emergentes, etc. junto con funciones más complejas; pero por alguna razón, simplemente eliminaron ese tipo de cosas para evolucionar hacia un sistema complejo y muy poderoso. Además, ahora hay mucha más información sobre Leaflet que en 2012, y es una tecnología más madura.

Como conclusión, pregúntese si necesita un automóvil o una nave espacial. No volará con un automóvil, pero manejar una nave espacial para ir de compras puede ser realmente complicado.

    
respondido por el Carlos Sarille 09.06.2017 - 01:19

Lea otras preguntas en las etiquetas