← Volver

Usando mapas de Mapbox en LeafletJS

26 junio 2020

En el post anterior Usando mapas de LeafletJS con react vimos cómo usar varios mapas de LeafletJS, hoy vamos a ver cómo usar mapas de Mapbox en LeafletJS, que hay que tener en cuenta un par de cosas.

Vamos a ver cómo usarlos con LeafletJS, porque en su momento al cambiar únicamente la URL al menos a mi no me funcionó 😛

Empecemos por crearnos una cuenta en la página de Mapbox y luego en la parte de nuestra cuenta podemos ver nuestro Access token (también conocida como API KEY 😋).

Veremos que para lograr usar los mapas de Mapbox no es necesario cambiar la estructura del código del anterior, solamente cambiar y agregar algunas props a nuestro componente Map:

<Map center={position} zoom={13} style={{height: '400px'}}> <TileLayer url='https://api.mapbox.com/styles/v1/mapbox/outdoors-v11/tiles/{z}/{x}/{y}?access_token=<API_KEY>' attribution='© <a href="https://www.mapbox.com/map-feedback/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' tileSize={512} zoomOffset={-1} /> <Marker position={position}> <Popup> Este es un popup. <br /> Y escribo lo que quiero. </Popup> </Marker> </Map>

En la url, donde dice <API_KEY> pongan su token de usuario, que les recomiendo que la guarden en una variable de entorno. Ven también que agregamos las atribuciones correspondientes y las props agregadas fueron tileSize y zoomOffset. tileSize es para indicar el tamaño de mosaicos de mapas que queremos cargar, en mi caso utilicé de 512x512 pero pueden ser de 256x256. En el caso del zoomOffset, encontré que si no indicaba -1 en el valor, no eran legibles los nombres de las cosas (calles, estaciones, etc.)

Otra cosa que se puede cambiar en estos mapas son los tipos de mosaicos. Si ven en la URL, luego de /v1/mapbox/ se indica tipo y versión de mosaicos a usar.

En la documentación de Mapbox se indican otros, al momento de escribir este post estos son los que hay disponibles:

  • /mapbox/streets-v11
  • /mapbox/outdoors-v11
  • /mapbox/light-v10
  • /mapbox/dark-v10
  • /mapbox/satellite-v9
  • /mapbox/satellite-streets-v11

Este post fue más cortito pero me pareció interesante mostrar que existen otras integraciones con LeafletJS, y encima los mapas de Mapbox están muy buenos.

En el próximo usamos Mapbox con un componente que aprovecha el GPU del dispositivo para renderizado, con WebGL. Stay tuned! 📺


Todas las opiniones expresadas en este post son únicamente personales y no reflejan de ninguna manera la forma de pensar o los valores del lugar donde trabajo.

Si encontrás un error en el post, querés contactarme o hacerme una sugerencia: