Utilizar mapa base de IGN en Leaflet
Utilizar mapa base de IGN en Leaflet
Cómo incoporar el mapa base de IGN en una página web utilizando Leaflet
Leaflet es una biblioteca de JavaScript de código abierto que se utiliza para crear aplicaciones de mapas web. Permite a desarrolladores sin experiencia en SIG visualizar fácilmente mapas web.
1. Incluir la hoja de estilos y la biblioteca JS de Leaflet en la cabecera de una página web
Incorpar el archivo CSS y script JS de Leaflet en la sección head
de la página web.
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin=""/> <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script>
2. Crear un contenedor (div) en la página web en donde se desee incluir el mapa
Colocar un elemento div
en el lugar de la página web donde se desea mostrar el mapa. Es importante completar el atributo id
del contenedor.
Leaflet necesita que se establezca un alto específico para el div
. Esto es posible realizarlo con CSS
o bien definiendo el estilo con el atributo style
en el elemento que se utilice.
<div id="mapa" style="height:500px;"></div>
En el código de ejemplo, se indica el valor mapa
para el atributo id
y un alto de 500px
para el contenedor.
3. Convertir el contenedor (div) en un mapa
Es necesario que el div
haya sido creado antes de convertirlo en un mapa. A partir del código que se observa a continuación, se puede convirtir el div
con id="mapa"
en un mapa de Leaflet.
<script type="text/javascript" > var mimapa = L.map('mapa').setView([-40, -59], 4); </script>
En el código de ejemplo, se está indicando que el mapa esté centrado en la latitud -49
, longitud -59
y nivel de zoom 4
. Para cambiar el centro del mapa, modificar el nivel del zoom, agregar un marcador, o realizar otras operaciones, por favor, consultar el manual de Leaflet.
4. Agregar el mapa base de IGN
Para agregar un mapa base a Leaflet se debe contar con una instancia de un mapa, en nuestro ejemplo, está en la variable mimapa
y también se debe conocer la URL del servicio OGC que brinda un mapa base.
<script type="text/javascript" > L.tileLayer('https://wms.ign.gob.ar/geoserver/gwc/service/tms/1.0.0/capabaseargenmap@EPSG%3A3857@png/{z}/{x}/{-y}.png', { attribution: '<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a> | <a href="http://www.ign.gob.ar/AreaServicios/Argenmap/IntroduccionV2" target="_blank">Instituto Geográfico Nacional</a> + <a href="http://www.osm.org/copyright" target="_blank">OpenStreetMap</a>', minZoom: 3, maxZoom: 18 }).addTo(mimapa); </script>
En el código de ejemplo, se está utilizando la URL https://wms.ign.gob.ar/geoserver/gwc/service/tms/1.0.0/capabaseargenmap@EPSG%3A3857@png/{z}/{x}/{-y}.png
como servicio de mapa base, se indica la atribución del mapa y se permite un zoom con profundidad desde 3
hasta 18
.
En caso de querer utilizar el mapa base gris del IGN, reemplazar la URL anterior por https://wms.ign.gob.ar/geoserver/gwc/service/tms/1.0.0/mapabase_gris@EPSG%3A3857@png/{z}/{x}/{-y}.png
5. El código, hasta el momento, debiera verse de la siguiente forma
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin=""/> <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script> </head> <body> <div id="mapa" style="height:500px;"></div> <script type="text/javascript" > //Inicializar el mapa var mimapa = L.map('mapa').setView([-40, -59], 4); //Agregar mapa base de IGN L.tileLayer('https://wms.ign.gob.ar/geoserver/gwc/service/tms/1.0.0/capabaseargenmap@EPSG%3A3857@png/{z}/{x}/{-y}.png', { attribution: '<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a> | <a href="http://www.ign.gob.ar/AreaServicios/Argenmap/IntroduccionV2" target="_blank">Instituto Geográfico Nacional</a> + <a href="http://www.osm.org/copyright" target="_blank">OpenStreetMap</a>', minZoom: 3, maxZoom: 18 }).addTo(mimapa); </script> </body> </html>
Ver el código en funcionamiento
Ver el código en funcionamiento con el mapa gris
6. Agregar marcadores sobre el mapa
Además del mapa base, se pueden agregar otros objetos al mapa, como ser, marcadores, lineas, polígonos y mucho más. A continuación veremos como agregar un marcador.
<script type="text/javascript" > var marcador = L.marker([-37, -65]).addTo(mimapa); </script>
En el ejemplo anterior se agregó un marcador al mapa mimapa
indicando que se muestre en la latitud -37
y en la longitiud -65
.
7. Utilizar ventanas emergentes
Las ventanas emergentes (o popups) se utilizan generalmente cuando desea mostrar información sobre un objeto en particular.
<script type="text/javascript" > marcador.bindPopup("¡Hola mundo!").openPopup(); </script>
En el ejemplo anterior, se vincula información con un marcador específico. Llamando al método openPopup()
la ventana emergente aparecerá abierta por defecto.
8. El código final debiera verse de la siguiente forma
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin=""/> <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script> </head> <body> <div id="mapa" style="height:500px;"></div> <script type="text/javascript" > //Inicializar el mapa var mimapa = L.map('mapa').setView([-40, -59], 4); //Agregar mapa base de IGN L.tileLayer('https://wms.ign.gob.ar/geoserver/gwc/service/tms/1.0.0/capabaseargenmap@EPSG%3A3857@png/{z}/{x}/{-y}.png', { attribution: '<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a> | <a href="http://www.ign.gob.ar/AreaServicios/Argenmap/IntroduccionV2" target="_blank">Instituto Geográfico Nacional</a> + <a href="http://www.osm.org/copyright" target="_blank">OpenStreetMap</a>', minZoom: 3, maxZoom: 18 }).addTo(mimapa); //Agregar un marcador var marcador = L.marker([-37, -65]).addTo(mimapa); //Agregar popup al marcador marcador.bindPopup("¡Hola mundo!").openPopup(); </script> </body> </html>