<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>leaflet &#8211; danisanchez.net</title>
	<atom:link href="https://danisanchez.net/tag/leaflet/feed/" rel="self" type="application/rss+xml" />
	<link>https://danisanchez.net</link>
	<description></description>
	<lastBuildDate>Fri, 10 Jan 2020 17:47:06 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://danisanchez.net/wp-content/uploads/2026/07/cropped-favicon-32x32.png</url>
	<title>leaflet &#8211; danisanchez.net</title>
	<link>https://danisanchez.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Integra OpenStreetMap en tus aplicaciones web con LeafLet y MapBox</title>
		<link>https://danisanchez.net/integra-openstreetmap-en-tus-aplicaciones-web-con-leaflet-y-mapbox/</link>
					<comments>https://danisanchez.net/integra-openstreetmap-en-tus-aplicaciones-web-con-leaflet-y-mapbox/#comments</comments>
		
		<dc:creator><![CDATA[dani.sanchez]]></dc:creator>
		<pubDate>Fri, 10 Jan 2020 17:47:06 +0000</pubDate>
				<category><![CDATA[Publicaciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[leaflet]]></category>
		<category><![CDATA[openstreetmap]]></category>
		<category><![CDATA[tutoriales]]></category>
		<guid isPermaLink="false">https://www.gestionatuweb.net/?p=6418</guid>

					<description><![CDATA[Para compartir una ubicación rápida con OpenStreetMap puedes ir directamente a OpenStreetMap.org y localizar el lugar que deseas compartir, ya sea indicando una dirección exacta o unas coordenadas: En el menú derecho utiliza la opción «Compartir», selecciona HTML y copia el código HTML que tendrás que incrustar en tu página. Ejemplo de mapa incrustado: Ver [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Para compartir una ubicación rápida con OpenStreetMap puedes ir directamente a <a rel="noreferrer noopener" aria-label="OpenStreetMap.org (opens in a new tab)" href="https://www.openstreetmap.org" target="_blank">OpenStreetMap.org</a> y localizar el lugar que deseas compartir, ya sea indicando una dirección exacta o unas coordenadas:</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="635" src="https://danisanchez.net/wp-content/uploads/2020/01/001.buscar-en-open-street-map-1024x635.jpg" alt="" class="wp-image-6423" srcset="https://danisanchez.net/wp-content/uploads/2020/01/001.buscar-en-open-street-map-1024x635.jpg 1024w, https://danisanchez.net/wp-content/uploads/2020/01/001.buscar-en-open-street-map-300x186.jpg 300w, https://danisanchez.net/wp-content/uploads/2020/01/001.buscar-en-open-street-map-768x476.jpg 768w, https://danisanchez.net/wp-content/uploads/2020/01/001.buscar-en-open-street-map.jpg 1230w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">En el menú derecho utiliza la opción «Compartir», selecciona HTML y copia el código HTML que tendrás que incrustar en tu página.</p>



<p class="wp-block-paragraph">Ejemplo de mapa incrustado:</p>



<iframe scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=-3.8318252563476567%2C37.05736900011469%2C-3.392715454101563%2C37.292081740702365&amp;layer=mapnik&amp;marker=37.17481651466045%2C-3.6122703552246094" style="border: 1px solid black" width="100%" height="350" frameborder="0"></iframe><br><small><a href="https://www.openstreetmap.org/?mlat=37.1748&amp;mlon=-3.6123#map=12/37.1748/-3.6123">Ver mapa más grande</a></small>



<p class="wp-block-paragraph">Pero si necesitas crear un mapa personalizado, con varios marcadores, con la posibilidad de insertar áreas, personalizar la imagen del marcador, podemos integrar OpenStreetMap en nuestro proyecto web gracias a las librerías de <a rel="noreferrer noopener" aria-label="Leaflet (opens in a new tab)" href="https://leafletjs.com/" target="_blank">Leaflet</a> y a los fondos de <a rel="noreferrer noopener" aria-label="MapBox (opens in a new tab)" href="https://www.mapbox.com/" target="_blank">MapBox</a>.</p>



<p class="wp-block-paragraph">Para dar nuestros primeros pasos vamos a ejecutar un ejercicio sencillo. Crea un nuevo directorio con los siguientes archivos:</p>



<ul class="wp-block-list"><li>index.html</li><li>estilos.css</li></ul>



<p class="wp-block-paragraph">En el archivo index.html añade las librerías de LeafLet:</p>



<p class="wp-block-paragraph">Archivo CSS:</p>



<pre class="wp-block-code"><code>&lt;link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"
   integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
   crossorigin=""/></code></pre>



<p class="wp-block-paragraph">Enlaza también tu archivo de estilos.css:</p>



<pre class="wp-block-code"><code>&lt;link rel="stylesheet" href="estilos.css"/></code></pre>



<p class="wp-block-paragraph">Archivo JS:</p>



<pre class="wp-block-code"><code>&lt;script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"
    integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew=="
    crossorigin="">
&lt;/script></code></pre>



<p class="wp-block-paragraph">Y crea un DIV con un identificador, por ejemplo:</p>



<pre class="wp-block-code"><code>&lt;div id="mimapa">&lt;/div></code></pre>



<p class="wp-block-paragraph">Ajusta con CSS el alto que desees para el mapa:</p>



<pre class="wp-block-code"><code>#mimapa {height: 600px;}</code></pre>



<p class="wp-block-paragraph">De forma que tu index.html quede más o menos así:</p>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html>
&lt;html lang="es">
&lt;head>
    &lt;meta charset="UTF-8">
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0">
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge">
    &lt;link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"
   integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
   crossorigin=""/>
    &lt;link rel="stylesheet" href="estilos.css"/>
    &lt;script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"
    integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew=="
    crossorigin="">&lt;/script>
    &lt;title>Mapa con Open Street Map&lt;/title>
&lt;/head>

&lt;body>
    &lt;div id="mimapa">&lt;/div>
&lt;/body>

&lt;/html></code></pre>



<p class="wp-block-paragraph">A continuación vamos a añadir un poco de JavaScript para inicializar el mapa en una ubicación predefinida. Este código podemos insertarlo en el archivo index.html a continuación del DIV o en un archivo de funciones JavaScript externo.</p>



<pre class="wp-block-code"><code>&lt;script>
    var mymap = L.map('mimapa').setView([37.1698, -3.965], 18);
&lt;/script></code></pre>



<p class="wp-block-paragraph">Utiliza las coordenadas con las que quieras inicializar el mapa, el segundo parámetro «18» corresponde al ZOOM inicial.</p>



<p class="wp-block-paragraph">Ahora tenemos que llamar a las librerías de MapBox para dibujar el mapa:</p>



<pre class="wp-block-code"><code>L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
    maxZoom: 25,
    attribution: 'Datos del mapa de &amp;copy; &lt;a href="https://www.openstreetmap.org/">OpenStreetMap&lt;/a>, ' + '&lt;a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA&lt;/a>, ' + 'Imágenes © &lt;a href="https://www.mapbox.com/">Mapbox&lt;/a>', 
    id: 'mapbox/streets-v11'
}).addTo(mymap);</code></pre>



<p class="wp-block-paragraph">No olvides especificar las atribuciones tal y como se exige en las condiciones y términos de uso.</p>



<pre class="wp-block-code"><code>attribution: 'Datos del mapa de &amp;copy; &lt;a href="https://www.openstreetmap.org/">OpenStreetMap&lt;/a>, ' + '&lt;a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA&lt;/a>, ' + 'Imágenes © &lt;a href="https://www.mapbox.com/">Mapbox&lt;/a></code></pre>



<p class="wp-block-paragraph">Existen varios tipos de mapa en MapBox, puedes consultar en su documentación y utilizar el que prefieras, para el ejemplo hemos utilizado «streets-v11».</p>



<p class="wp-block-paragraph">Con este código ya tenemos inicializado un mapa con una ubicación y zoom predefinidos.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="635" src="https://danisanchez.net/wp-content/uploads/2020/01/002-mapa-predefinido-1024x635.jpg" alt="" class="wp-image-6424" srcset="https://danisanchez.net/wp-content/uploads/2020/01/002-mapa-predefinido-1024x635.jpg 1024w, https://danisanchez.net/wp-content/uploads/2020/01/002-mapa-predefinido-300x186.jpg 300w, https://danisanchez.net/wp-content/uploads/2020/01/002-mapa-predefinido-768x476.jpg 768w, https://danisanchez.net/wp-content/uploads/2020/01/002-mapa-predefinido.jpg 1230w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Añadir un marcador</h2>



<p class="wp-block-paragraph">Vamos a añadir nuestro primer marcador:</p>



<pre class="wp-block-code"><code>var marker = L.marker([37.1698, -3.965]).addTo(mymap);</code></pre>



<p class="wp-block-paragraph">Especifica las coordenadas del marcador.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="635" src="https://danisanchez.net/wp-content/uploads/2020/01/003-nuevo-marcador-1024x635.jpg" alt="" class="wp-image-6425" srcset="https://danisanchez.net/wp-content/uploads/2020/01/003-nuevo-marcador-1024x635.jpg 1024w, https://danisanchez.net/wp-content/uploads/2020/01/003-nuevo-marcador-300x186.jpg 300w, https://danisanchez.net/wp-content/uploads/2020/01/003-nuevo-marcador-768x476.jpg 768w, https://danisanchez.net/wp-content/uploads/2020/01/003-nuevo-marcador.jpg 1230w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Popups en marcadores</h3>



<p class="wp-block-paragraph">Podemos activar un popup utilizando el método bindPopup, con información al hacer clic en el marcador. La información podemos generarla en HTML con todas las ventajas que conlleva (insertar links, imágenes&#8230;):</p>



<pre class="wp-block-code"><code>marker.bindPopup("&lt;b>Mi ubicación&lt;/b>&lt;br>&lt;a href='#'>Solicita más información&lt;/a>");</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="635" src="https://danisanchez.net/wp-content/uploads/2020/01/004-popup-marcador-1024x635.jpg" alt="" class="wp-image-6426" srcset="https://danisanchez.net/wp-content/uploads/2020/01/004-popup-marcador-1024x635.jpg 1024w, https://danisanchez.net/wp-content/uploads/2020/01/004-popup-marcador-300x186.jpg 300w, https://danisanchez.net/wp-content/uploads/2020/01/004-popup-marcador-768x476.jpg 768w, https://danisanchez.net/wp-content/uploads/2020/01/004-popup-marcador.jpg 1230w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Personalizar el marcador</h3>



<p class="wp-block-paragraph">Incluso podemos personalizar el tipo de marcador por defecto agregando una imagen.</p>



<pre class="wp-block-code"><code>var marcador = L.icon({
        iconUrl:'images/marcador.png',
        iconSize: [60, 85]
});</code></pre>



<p class="wp-block-paragraph">Y asignarlo a un marcador:</p>



<pre class="wp-block-code"><code>var marker = L.marker([37.1698, -3.965], {icon: marcador}).addTo(mymap);</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="635" src="https://danisanchez.net/wp-content/uploads/2020/01/005-marcador-personalizado-1024x635.jpg" alt="" class="wp-image-6428" srcset="https://danisanchez.net/wp-content/uploads/2020/01/005-marcador-personalizado-1024x635.jpg 1024w, https://danisanchez.net/wp-content/uploads/2020/01/005-marcador-personalizado-300x186.jpg 300w, https://danisanchez.net/wp-content/uploads/2020/01/005-marcador-personalizado-768x476.jpg 768w, https://danisanchez.net/wp-content/uploads/2020/01/005-marcador-personalizado.jpg 1230w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Y recuerda que puedes agregar todos los marcadores que necesites (por ejemplo, extraídos de una base de datos):</p>



<pre class="wp-block-code"><code>var marker2 = L.marker([37.1699, -3.968], {icon: marcador}).addTo(mymap);
var marker3 = L.marker([37.1697, -3.966], {icon: marcador}).addTo(mymap);</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="635" src="https://danisanchez.net/wp-content/uploads/2020/01/006-varios-marcadores-1024x635.jpg" alt="" class="wp-image-6429" srcset="https://danisanchez.net/wp-content/uploads/2020/01/006-varios-marcadores-1024x635.jpg 1024w, https://danisanchez.net/wp-content/uploads/2020/01/006-varios-marcadores-300x186.jpg 300w, https://danisanchez.net/wp-content/uploads/2020/01/006-varios-marcadores-768x476.jpg 768w, https://danisanchez.net/wp-content/uploads/2020/01/006-varios-marcadores.jpg 1230w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Añadir un área (círculo)</h2>



<p class="wp-block-paragraph">Hay casos en los que no nos interesa especificar la ubicación exacta del marcador, si no una zona aproximada (muy habitual por ejemplo en webs inmobiliarias, donde no queremos indicar dónde hay inmuebles vacíos&#8230;).</p>



<pre class="wp-block-code"><code>var circle = L.circle([37.1697, -3.964], {
        color: 'red',
        fillColor: '#f03',
        fillOpacity: 0.5,
        radius: 40
}).addTo(mymap);</code></pre>



<p class="wp-block-paragraph">Entre los parámetros que podemos ajustar al area tenemos: las coordenadas, el color principal, el color del borde, la opacidad y el radio del area establecido en metros.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="948" height="603" src="https://danisanchez.net/wp-content/uploads/2020/01/007-circulo.jpg" alt="" class="wp-image-6432" srcset="https://danisanchez.net/wp-content/uploads/2020/01/007-circulo.jpg 948w, https://danisanchez.net/wp-content/uploads/2020/01/007-circulo-300x191.jpg 300w, https://danisanchez.net/wp-content/uploads/2020/01/007-circulo-768x489.jpg 768w" sizes="auto, (max-width: 948px) 100vw, 948px" /></figure>



<h2 class="wp-block-heading">Añadir polígonos</h2>



<p class="wp-block-paragraph">Asímismo tenemos la posibilidad de crear polígonos para deliminar zonas específicas en el mapa, también muy útil para webs inmobiliarias donde podemos delimitar fincas y parcelas.</p>



<pre class="wp-block-code"><code>var polygon = L.polygon([
        [37.168474, -3.966202],
        [37.167482, -3.966827],
        [37.167602, -3.964477]
]).addTo(mymap);</code></pre>



<p class="wp-block-paragraph">Solo tenemos que especificar las coordenadas de cada punto del polígono.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="951" height="600" src="https://danisanchez.net/wp-content/uploads/2020/01/008-poligono.jpg" alt="" class="wp-image-6434" srcset="https://danisanchez.net/wp-content/uploads/2020/01/008-poligono.jpg 951w, https://danisanchez.net/wp-content/uploads/2020/01/008-poligono-300x189.jpg 300w, https://danisanchez.net/wp-content/uploads/2020/01/008-poligono-768x485.jpg 768w" sizes="auto, (max-width: 951px) 100vw, 951px" /></figure>



<p class="wp-block-paragraph">Con esto ya tenemos para empezar a jugar con los mapas de OpenStreetMap.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Todos estos códigos y más los puedes consultar en la documentación de LeafLet y sacarle todo el partido a la API.</p><cite><a href="https://leafletjs.com/examples.html">https://leafletjs.com/examples.html</a></cite></blockquote>



<p class="wp-block-paragraph">Si te ha gustado, por favor, compártelo en tus redes. Nos vemos en el siguiente post <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://danisanchez.net/integra-openstreetmap-en-tus-aplicaciones-web-con-leaflet-y-mapbox/feed/</wfw:commentRss>
			<slash:comments>25</slash:comments>
		
		
			</item>
	</channel>
</rss>
