¿Elegir OpenLayers o Leaflet? [cerrado]

93

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

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

Entonces los detalles de mi proyecto son los siguientes,

  1. Use la interfaz del mapa para obtener información de la característica
  2. Cree una herramienta personalizada que tome el lat / lon del usuario en cuanto a dónde hace clic en el mapa y luego recupera los datos climáticos del ráster (que es manejado por un script py en el servidor)
  3. Permite al usuario cargar Excel, que se envía al script py, que devuelve un GeoJSON, que crea funciones vectoriales en el mapa
  4. Permitir al usuario crear polígonos vectoriales, que buscarán las características que intersecta desde la capa WFS.
  5. Obtiene la capa del almacén de datos de PostGIS en GeoServer y muestra las capas en el mapa.

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

Sam007
fuente
1
Depende del proyecto.
CaptDragon
1
a. Mejore su pregunta dando más detalles sobre el proyecto. si. Estás hablando de una conexión directa a la base de datos (postgis) para los usuarios, ¿estás seguro?
Pablo
lo siento, actualicé los detalles de mi proyecto
Sam007
En general, prefiero Leaflet, porque tiende a conducir a archivos .js más cortos y más legibles. Pero OL puede hacer cosas que Leaflet no puede, porque se le permite un acceso más profundo y más detallado. Entonces, estoy de acuerdo. Depende del proyecto, pero yo voto por Leaflet.
Martin

Respuestas:

87

He usado OpenLayers y Leaflet en mis aplicaciones. Ha habido mucha discusión sobre este tema en este foro y otros en el planeta-internet. Por lo general, se dividen en 2 campos: características y flexibilidad de OpenLayers frente a la simplicidad de Leaflet. ¡No me sorprendería si alguien genera una iniciativa "OpenLeaf" que pronto se casa con lo mejor de ambos mundos!

Encontré que Leaflet es 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 la belleza de las aplicaciones GIS móviles y web actuales. Su pila: GeoServer, PostGIS, etc., es una pila estándar, por lo que OpenLayers o Leaflet podrían incorporarse fácilmente.

Dicho esto, todavía iría con OpenLayers por las siguientes razones

  1. Solo hay una TONELADA de material alrededor de OpenLayers. Es mucho más maduro que el folleto.
  2. Echa un vistazo a la comparación de confirmaciones y usuarios .
  3. OpenLayers, GeoServer, PostGIS stack está tan probado en el mundo de FOSS que vas por un camino sólido.
  4. OpenLayers tiene un poco más de funciones en los controles de mapa .
  5. Si bien es un poco más trabajo crear transiciones y efectos visuales, se puede hacer en OpenLayers.
Ramesh Elaiyavalli
fuente
1
¿Y qué hay de los dispositivos móviles? ¿Cuál se adapta mejor?
Sam007
1
Si. Actualmente estoy creando aplicaciones móviles con OpenLayers y SenchaTouch. Hay muchas aplicaciones de mapas móviles que se ejecutan en Openlayers. Estos son algunos ejemplos de openlayers.org/dev/examples/?q=mobile .
Ramesh Elaiyavalli
28

Folleto hasta el final. Siento que Leaflet es el siguiente paso en la evolución de los clientes de navegador basados ​​en mosaicos de código abierto. Ka-Map -> 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 todas las personas, Leaflet hace el 20% de las cosas que se requieren el 80% del tiempo.

ChrisInCambo
fuente
14
Por lo tanto, no es solo "Folleto hasta el final", es "Folleto si no necesita ninguna de las características que faltan". Estoy de acuerdo en que Leaflet es mucho más simple de usar, pero si necesita hacer algo no tan común, debe ir con OL.
Juan
1
El folleto carece de muchas funciones. El folleto es bueno solo para mapas muy básicos, pero según lo explicado por Ramesh Elaiyavalli Ol-3 es el mejor y también puede reducir el tamaño seleccionando características mediante el uso personalizado.
Abhijit Gujar
18

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 imprescindible 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 un límite de tiempo y tiene un poco de experiencia con Javascript, usar Leaflet podría ser una mejor solución para hacerlo más rápido. O si desea desarrollar una aplicación muy simple, Leaflet puede ser mucho más fácil de adaptar al principio.

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

Como se consideraron los detalles del proyecto;

Use la interfaz del mapa para obtener información de la característica:

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

Cree una herramienta personalizada que tome el lat / lon del usuario en cuanto a dónde él / ella hace clic en el mapa y luego recupera los datos climáticos del ráster (que es manejado por un script py en el servidor):

Lo logré yo mismo en Leaflet (por cierto, también estaba llamando a los datos climáticos). No estaba obteniendo 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 para Leaflet lograrlo.

Permite al usuario cargar Excel, que se envía al script 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 desde la capa WFS:

No tengo idea de las capacidades 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) después de que se complete el dibujo. También Leaflet tiene soporte WFS-T si desea manipular los datos espaciales en el servidor WFS. OpenLayers podría ser mejor que eso, no lo sé.

Obtiene la capa del almacén de datos 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 PostGIS.

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

mkturkeri
fuente
Buena respuesta detallada!
Devdatta Tengshe
Tres años después, ¿cómo te sientes acerca de Leaflet y dispositivos móviles? ¿Cualquier mejora?
Mawg
10

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

Folleto vs OpenLayers

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

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

¿Qué tan simple es la parte de mapeo de la aplicación que está 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 al manejar 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 vaya más allá de las tareas comunes, debe usar los complementos de folleto y esto es donde las cosas se vuelven más complicadas. Es posible que haya una funcionalidad que está buscando que, lamentablemente, no existe.

Si tiene una aplicación rica en funciones con mucha funcionalidad, nos inclinamos por usar OpenLayers 3. OpenLayers 3 tiene una API más grande y compleja que le permitirá realizar todas las funciones de mapeo comunes que hace Leaflet y muchas más. Por ejemplo, si su aplicación tiene requisitos relacionados con la proyección de mapas, OpenLayers 3 le permitirá cumplir estos requisitos más fácilmente que si está utilizando Leaflet. Por supuesto, con una API más robusta viene una curva de aprendizaje más pronunciada, así que tenga esto en cuenta al proporcionar estimaciones a las partes interesadas de su proyecto.

¿Cuánto código de JavaScript quieres escribir?

Dado que Leaflet es una API de nivel más alto que OpenLayers 3, por lo general, se necesita menos código de JavaScript para que funcione. Sin embargo, una vez que desee desviarse de la funcionalidad estándar que proporciona Leaflet, es probable que termine escribiendo mucho código 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 los 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 mapeo que sea más personalizable y no le importe ensuciarse con el desarrollo de JavaScript, busque OpenLayers 3.

Dado que ambas bibliotecas tienen sus puntos fuertes, hemos incluido ejemplos de código para Leaflet y OpenLayers 3 con Map Suite WebAPI Edition que se puede descargar a través del Centro de productos o ver en ThinkGeo Wiki. Estos ejemplos son recursos útiles para decidir qué biblioteca de mapeo 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 http://blog.thinkgeo.com/2015/09/08/leaflet-vs-openlayers-3-which-is-the-better-client-side-javascript-mapping-library/

Simon East
fuente
5

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

Christian Fritz
fuente
1
Interesante. Hubiera esperado que Leaflet fuera más liviano y suave en un dispositivo móvil. Gracias por compartir esta experiencia.
LarsH
@Christian Fritz: ¿fue tu experiencia con OL3 u OL2?
sfletche
2
@sfletche la comparación fue entre OL3 y el folleto 0.7.3
Christian Fritz
Tres años después, ¿cómo te sientes acerca de Leaflet y dispositivos móviles? ¿Cualquier mejora?
Mawg
sí definitivamente. Usamos el folleto en producción y no vemos ningún problema en dispositivos móviles.
Christian Fritz
3

Yo diría que consulte la documentación de la API para ambos. Para mí, parece que OpenLayersofrece una gran cantidad de características, sin embargo, el tiempo de desarrollo / depuración es más largo.

Leafletes más sexy y mucho más fácil que el OL, sin embargo, si desea hacer mucho con su mapa, creo que algún día podría necesitar una función que Leafletaún no está implementada .

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

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

PD: si quiero desarrollar una aplicación móvil, creo que podría hacerlo Leaflet.

Mahdi
fuente
3

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 del tutorial son:

  • Mapa básico con mosaicos OSM
  • Mapa OS-GB con mosaicos de Ordnance Survey
  • Capa GeoJSON con marcadores
    • Información para la capa GeoJSON
  • Capa WMS
    • Información para la capa WMS

Aquí está el enlace: https://astuntechnology.github.io/osgis-ol3-leaflet/index.html

Crantok
fuente
el desplazamiento por la barra espaciadora está roto por cierto
bugmenot123
3

Depende de lo que estés tratando de hacer. El folleto es más simple y 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 me pareció que OpenLayers era demasiado complejo para hacer cosas realmente simples, especialmente de la Versión 3.

Por ejemplo, la creación de un selector de capas requiere entre 5 y 6 líneas de código en Leaflet, 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 funcione bien.

Otra cosa importante a tener en cuenta es que la mayoría de la información, tutoriales y 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. 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ás con un automóvil, pero conducir una nave espacial para ir de compras puede ser realmente complicado.

Carlos Sarille
fuente