Providing MapLibre-compatible style JSON from openstreetmap-tile-server
December 14, 2021 [Matrix, Programming][Previous: Self-hosting maps on my laptop]
In the previous post I showed how to run OSM tile server stack locally.
Now I've managed to connect a MapLibre GL JS front end to my local tile server and it's showing maps!
Sharing a location in Element Web
(It's running inside Element Web, the awesome Matrix messenger I am working on. NOTE: this is a very, very early prototype!)
In the previous post I ran a docker run command to launch the tile server.
This time, I had to create a file style.json:
{ "version": 8, "sources": { "localsource": { "type": "raster", "tiles": [ "http://127.0.0.1:8080/tile/{z}/{x}/{y}.png" ], "tileSize": 256, "attribution": "Maps Copyright 2018 <a href=\"http://www.geofabrik.de/\">Geofabrik GmbH</a> and <a href=\"http://www.openstreetmap.org/\">OpenStreetMap Contributors</a>" } }, "layers": [ { "id": "locallayer", "source": "localsource", "type": "raster" } ] }
and then I launched the tile server with that file available in the document root:
docker run \ -p 8080:80 \ -v $PWD/style.json:/var/www/html/style.json \ -v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-rendered-tiles:/var/lib/mod_tile \ -e THREADS=24 \ -e ALLOW_CORS=enabled \ -d overv/openstreetmap-tile-server:1.3.10 \ run
Now I can point my MapLibre GL JS at that style file with code something like this:
this.map = new maplibregl.Map({ container: my_container, style: "http://127.0.0.1:8080/style.json", center: [0, 0], zoom: 13, });
Very excited to be drawing maps without any requests leaving my machine!