OpenLayers vs Leaflet ¿cuál es mejor?

Leaflet es una librería para crear mapas interactivos con un entorno amigable en dispositivos móviles. Como podemos ver en su página web, es la elección de GitHub, Foursquare, Facebook, Pinterest, Flickr, The Washington Post o USAToday.

openlayers o leaflet

Según la web de OpenLayers, esta es una librería de alto rendimiento, repleta de funcionalidades para crear mapas interactivos en la web. Puede mostrar mapas teselados, datos vectoriales y marcadores cargados desde cualquier fuente

 en cualquier página web. OpenLayers ha sido desarrollado para fomentar el uso de información geográfica de todo tipo. En la web no podemos saber quién utiliza esta librería, nos consta que es la librería utilizada en GeoShape, Cartaro o GeoMoose (todos ellos paquetes de software para crear soluciones GIS WEB completas).

Ventajas de Leaflet sobre OpenLayers

leafletjs

  • Más sencillo y rápido de aprender (con un estilo de código moderno).

A modo de detalle para crear un mapa con Leaflet se utiliza la clase L.map en el que se incluyen unas coordenadas de centro par el mapa, un zoom, unas capas, etc. En el caso de OpenLayers, es necesario también utilizar una clase ol.Map pero acompañada de la clase ol.View. No es complicado pero es más código, veamos un ejemplo:

var map = L.map('map', { 
   center: [41.66, -4.72], 
   zoom: 4, 
   layers: osm 
});

Para realizar lo mismo con OpenLayers necesitamos mucho más código:

var map = new ol.Map({ 
   layers: [osm], 
   target: 'map', 
   view: new ol.View({ 
      center: ol.proj.transform([-4.72, 41.66], 
      'EPSG:4326', 'EPSG:3857'), 
      zoom: 4 
   }) 
});
  • Mejor arquitectura y diseño interno que OpenLayers, por haber aparecido después, en el año 2011.
  • Su look and feel (botones y layer swicther, por ejemplo), aunque en este apartado están muy parecidos porque OpenLayers tiene un aspecto moderno, Leaflet quizá lo es un poco más. Esto es muy subjetivo.
control-de-capas
El mapa de la izquierda, creado con OpenLayers muestra los botones de zoom y un control de capas (layerswitcher). El mapa de la derecha, construido con Leaflet, muestra el control de capas que nos proporciona esta libería de forma nativa.
  • Soporte móvil.
  • Ecosistema de plugins para extender la funcionalidad de la la librería. Aunque OpenLayers también tiene librerías de terceros, apenas llega a la docena de plugins, mientras que para Leaflet hay unos 200 plugins.
  • La documentación de la API de Leaflet es más sencilla de entender para usuarios nóveles, la documentación de la API de OpenLayers se hace más complicada de comprender.

Ventajas de OpenLayers sobre Leaflet

OpenLayers

  • OpenLayers soporta todos los protocolos WebGIS de forma nativa sin plugins, como WMTS, WFS o GML. Incluso el nuevo formato de teselas vectoriales de Mapbox MVT.
  • Decenas de ejemplos para aprender a partir del código, con workshop incluido. Leaflet cuenta en cambio con una docena de tutoriales, aunque han prometido ir ampliando dichos tutoriales en los próximos meses.
  • Mejor integración de proyecciones con Proj4js.
  • Visualización de mapas 3D y uso de WebGL para mostrar rápidamente grandes conjuntos de datos vectoriales.
  • Desde que OpenLayers de desarrolla en módulos, lo que hace que sea más eficiente porque no empleamos toda la librería, solo las partes que necesitamos en cada proyecto.

Conclusión

Entre que es más sencillo aprender, la documentación es más clara y a través de los plugins es posible añadir prácticamente cualquier funcionalidad (calcular rutas óptimas, incluir una mapa de localización, añadir capas base de cualquier proveedor o incluir buscadores) el ganador es Leaflet. Ojo, siempre y cuando el propósito del proyecto que queramos desarrollar sea general, puesto que para cosas concretas hay que analizar bien las funcionalidades de cada librería.

Como norma: Leaflet es recomendado para aplicaciones móviles por su ligereza y OpenLayers en aplicaciones Web.

En la práctica: En la mayoría de los proyectos con Leaflet es suficiente. Cuando la aplicación requiere de operaciones más completas entonces OpenLayers.

Si dudas qué librería utilizar anímate a realizar nuestro curso online desarrollo de aplicaciones webmapping en el que practicarás con ambas para crear mapas web profesionales.

3 comentarios en «OpenLayers vs Leaflet ¿cuál es mejor?»

  1. Hola,
    ante todo felicitarte por este blog de gran utilidad.

    Por lo que he visto opengeo suite ofrece la posibilidad de crear visores y apps, me da la impresión que resulta bastante mas complejo que con leaflet. He intentado encontrar controles de búsqueda para añadir a un visor de opengeo pero no los encuentro. Veo que para leaflet existen.
    Existe algún repositorio de visores i apps de ejemplo ?
    He visto algunos visores confeccionados con opengeo suite que son muy completos, pero me da la impresión que están programados por expertos que han elaborado sus propios controles.

    un saludo

    Responder
    • Hola Jose,
      Gracias a ti por seguirnos!

      Con OpenGeo Suite (o Boundless Suite que es la denominación reciente) podemos crear arquitecturas GIS WEB completas, desde la base de datos (con PostGIS), el servidor espacial (GeoServer) y el cliente de mapas web (OpenLayers). Esta arquitectura es flexible y los componentes se pueden reemplazar por otros, es decir, en lugar de utilizar OpenLayers puedes utilizar Leaflet. En nuestro curso desarrollo de aplicaciones webmapping utilizamos ambos clientes. Imagino que los visores que has visto utilizan OpenLayers + GeoExt, que es una buena combinación para hacer visores más ricos en apariencia. Boundless proporciona un SDK para personalizar esta aplicación, pero es necesario tener conocimientos avanzados de JavaScript.

      Como comento en el post las posibilidades de enriquecer un visor de OpenLayers 3 son más limitadas, aquí tienes algunos plugins: http://openlayers.org/3rd-party/ y los ejemplos aquí: http://openlayers.org/en/latest/examples/ . En la web de Boundless también puedes ver algunos casos de éxito y aplicaciones: https://boundlessgeo.com/boundless-suite/

      Saludos!

      Responder
  2. Buenas, no tiene que ver mucho con esto. Pero tengo una duda sobre Openlayers, tengo quiero hacer un mapa por plantas, donde a su vez se ve la cartografía base (donde elijo entre en mapa BIng y Satelite). Tengo la cartografia base como «type: base» (para tener siempre una y no poder marcar dos a la vez)… podría realizar lo mismo con las plantas de mi edificio pero de otra forma…para que no entre en discordia con los mapas base selccionados…

    Un saludo y gracias de antemano

    Responder

Deja un comentario