Leaflet es una librería JavaScript opensource para crear mapas interactivos en un entorno móvil.
Cómo veíamos en el artículo ¿OpenLayers o Leaflet?, Leaflet es la elección utilizada por Flickr, Wikimedia, foursquare, OSM, CARTO, GIS Cloud, Washington Post, Wall Street Journal, Geocaching.com, etc.
Algunas de las ventajas de la API de Leaflet son:
- Sencillo y rápido de aprender
- Facilidad de uso
- Características básicas pero que funcionan a la perfección
- Soporte móvil
- HTML 5 y CSS3
- Funciona tanto en los modernos como en los viejos navegadores web
- Ampliable con plugins
- API bien documentada
En este tutorial vamos a enseñarte a crear un mapa web de Leaflet utilizando los principales lenguajes de programación:
- HTML es el lenguaje de marcado de páginas Web y define la estructura del contenido de una página Web.
- ¿Qué es lo que hace bonita a una página web? Eso es CSS (Cascading Style Sheets u hojas de estilo en cascada).
- JavaScript es el lenguaje de programación Web para crear aplicaciones que se ejecutan en el navegador y le da funcionalidad a las aplicaciones.
Índice
Primeros pasos con Leaflet
El primer paso para la creación de cualquier mapa web JavaScript es elaborar el marco HTML básico. Esta es la estructura que tendrá nuestro HTML:
<!DOCTYPE html> <html> <head> <style> </style> </head> <body> <div id = 'map'> </div> </body> </html>
Utiliza un editor de texto básico y copia el texto anterior en un archivo nuevo. Guárdalo con el nombre leaflet.html.
La cabecera
Vamos a crear un mapa con Leaflet, para ello incluiremos en la cabecera <head> de nuestra página web la librería JavaScript leaflet.js (que contiene el código de la libería) y la hoja de estilo leaflet.css (con la hoja de estilos de la librería):
<!DOCTYPE html> <html> <head> <script src="https://unpkg.com/leaflet@1.0.2/dist/leaflet.js"></script> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.2/dist/leaflet.css" />
Estilo del mapa (CSS)
Nos aseguramos que el contenedor de mapa tenga un tamaño definido, dentro de la etiqueta <style> lo fijamos en CSS:
<style> #map { width: 100%; height: 580px; box-shadow: 5px 5px 5px #888; } </style>
El cuerpo
Dentro de la etiqueta <body> encontramos el marcado para el mapa, que genera un único elemento de documento. También damos al contenedor un atributo id para que podamos hacer referencia a él en nuestro código:
<body> <div id="map"></div>
El script con el código JavaScript
Ahora añadimos el siguiente código dentro del <script>:
<script> var map = L.map('map'). setView([41.66, -4.72], 15); </script>
L.map es la clase central de la API. Se usa para crear y manipular el mapa. En el mapa establecemos unas coordeanas de la vista y un nivel de zoom.
Añadiendo las capas de OpenStreetMap
A continuación añadimos un mapa base como tile layer, en este caso las imágenes de OSM. Crear un tile layer lleva implícito establecer la URL, el texto con la atribución y el máximo nivel de zoom de la capa:
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>', maxZoom: 18 }).addTo(map);
Añadiendo un control de escala
Por último añadiremos un control de escala:
L.control.scale().addTo(map);
Añadiendo un marcador
Y después un icono ¡que también se puede mover!
L.marker([41.66, -4.71],{draggable: true}).addTo(map);
Solo falta cerrar el script, el cuerpo y el html:
</script> </body> </html>
Este es el resultado:
Para obtener el html y el código haz botón derecho > Guardar enlace como… en el siguiente enlace: https://mappinggisformacion.com/visores_webmapping/leaflet.html
También puedes examinar los tutoriales y explorar la documentación de la API.
Continua aprendiendo a trabajar con Leaflet, en la segunda parte de este tutorial vemos cómo agregar nuestros propios datos GIS al mapa.
Si quieres aprender a crear completas aplicaciones y visores webmapping con Leaflet apúntate ya a nuestro curso online de visores webmapping con Leaflet.
Licenciado en Geografía. Máster en Sistemas de Información Geográfica. Consultor GIS desde el año 2004. En MappingGIS desde el año 2012 para ayudarte a impulsar tu perfil GIS y diferenciarte de la competencia. Echa un vistazo a todos nuestros cursos de SIG online.
buenas… como puedo colocar el mapa de una pronvincia con sus respectivas ciudades de un determinado pais pero solo esa pronvincia
Hola Facundo,
Puedes procesar la información con un SIG de escritorio y posteriormente subir las capas que necesites mediante geoJSON. Aqui tienes un tutorial: http://mappinggis.com/2013/08/como-crear-un-mapa-web-a-partir-de-un-shapefile/ Saludos!
Alguien sabe cómo puedo tener un mapa con puntos de interés, donde pueda dibujar un polígono y que se seleccionen los puntos dentro de ese polígono para filtrarlos en alguna tabla?.
Muchas gracias.
Hola, donde puedo conseguir tiles (minimalistas al estilo mapbox) para montar mi propio servidor de mapas o utilizar de alguna manera sin limitaciones mapas con el estilo de mapbox street?
Muchas gracias
Hola Leo,
En la web del proyecto tienes la información de licencias: http://www.mapbox.com/about/maps/
Hola.
Después de tanto buscar y probar al fin he encontrado un ejemplo que me funciona.
Gracias