Build your own map

If you have made changes to OSM and you woul like those changes to be uploaded to your Garmin GPS you will have to build your own map again.

The problem i discoveres is that the xapi and the api aren't the same. The xapi uses some pretty old data. I have made changes to OSM more than a month ago, which havens showed up yet.

An the other hand tha api uses the most current data. But you can unfortunately only get fairly small chunks of data from the api (50.000 nodes).

So I use two layers of maps to create then one I need the large (background) map from the xapi and then current changes from the api. an tehn I put the smaller, more detailed and correct maps on top.

This process is shown below covering Sjælland, Lolland & Falster of Denmark, and then adding recent changes I made on out local MTB track "Det Blå Spor" in the area around Allerød.

Fetching the lager map of Sjælland, Lolland & Falster  from the XAPI. The Sjaelland file alone runs for 2 hrs and creates a 1Gb file ( is redirecting to

wget,54.5,12.8,56.15 -O osm/sjaelland.osm
wget,54.5,10.4,56.15 -O osm/sydjylland.osm

wget,56.15,11.7,57.8 -O osm/nordjylland.osm

The next one is much smaller, it fetches the osm data using the api insted af xapi. I runs for 1 min 20 sec and fetches 23 Mb of data.

wget,55.83,12.42,55.94 -O local01.osm

I want to load the map onto my Garmin Edga 705 which is a cycle GPS, so I wan to make a Cyclemap.

First thing I need to do is to get the Cyclemap ressources from
svn co

This will create a folder called cyclemap in my current directory (which is mkgmap).

The next thing I do is to create a config file to use for compilation of the .osm files into garmin .img file using mkgmap. I named my file OSM.config, and it looks like this:

family-name="OSM by lakrus"

I compile my local .osm files (ln 1) using the default draw priority level which is 25. But when I compile the the 'background' map (ln 2) I use a lower priority which mean that the Garmin will draw this map first, and thus the more detailed maps will end on top.

Finally it's all linked together (ln 3) into a gmapsupp.img file. It all looks like this:

java -jar mkgmap.jar --draw-priority=25 --read-config=OSM.config --mapname=12340001 local01.osm
java -jar mkgmap.jar --draw-priority=24 --read-config=OSM.config --mapname=12340000 sjaelland.osm
java -jar mkgmap.jar --gmapsupp --read-config=OSM.config bin/*.img cyclemap/cyclemap.TYP