Hola querido desarrollador,
¿Te has dado cuenta de que el mapa no tiene los nuevos edificios, caminos, etc.? ¡No te preocupes! La comunidad de OpenStreetMap ya los actualizó. Pero nosotros también tenemos que actualizar nuestro mapa de producción 😰 (¡se viene una pequeña tortura!). Por suerte, yo ya pasé por ella y te dejo los pasos para que no sufras tanto.
Ve a la siguiente página y descarga el archivo más reciente: 👉 https://download.geofabrik.de/south-america/chile.html
Solo obtener santiago y vallarica osmium extract --config osmium-config.json -o output-directory/chile-extract.osm.pbf chile-latest.osm.pbf
Usaremos Tilemaker para convertir el archivo OSM en un MBTiles listo para servir.
💡 Recomendación: Lee la documentación oficial para entender cómo funciona.
Esto generará un archivo .mbtiles
desde el .osm.pbf
:
Ahora entra a la carpeta de "extracs" y ejecuta
docker run -it --rm -v $(pwd):/data ghcr.io/systemed/tilemaker:master /data/santiago.osm.pbf --output /data/chile-merged.mbtiles --bbox -70.85,-33.70,-70.45,-33.30
docker run -it --rm \
-v $(pwd):/data \
ghcr.io/systemed/tilemaker:master \
/data/villarrica.osm.pbf \
--output /data/chile-merged.mbtiles \
--bbox -72.29,-39.35,-72.14,-39.24 \
--merge
Se generara un "chile-merged.mbtiles"
Sí, esto fue la parte más dolorosa, pero ya está resuelta 😎. (Tarda su timepo 1h en mi caso, es todo Chile)
bash mbtile2zyx.bash
Esto generará los tiles en formato .pbf
, comprimidos con gzip.
⚠️ ¡IMPORTANTE! Los archivos están en gzip. Si no configuras bien los headers al servirlos, el mapa NO funcionará.
Ver si es gzip: file .pbf Ver si esta corrupto: gzip -t .pbf && echo "gzip OK" || echo "gzip corrupto"
📌 La forma de subir cambia seguido, revisa la documentación o CLI de Cloudflare para subir carpetas estáticas.
Cree pero R2 y S3 no manda el header de gzip, asi que hay que agregar una regla en el dominio para que agrege ese header, en el manejador del DDNS (me costo 3h)
Una vez subidos los tiles, modifica la URL en tu estilo:
"sources": {
"localtiles": {
"type": "vector",
"tiles": [
"<URL_DE_TUS_TILES>/{z}/{x}/{y}.pbf"
],
"minzoom": 0,
"maxzoom": 14
}
}