ezOS includes an offline map viewer for navigation without cellular or internet connectivity.
Maps are stored as .tdmap files on the SD card.
1. Download source data: Get a PMTiles file from Protomaps
2. Convert to TDMAP format:
cd tools/maps
pip install -r requirements.txt
python pmtiles_to_tdmap.py input.pmtiles -o map.tdmap
3. Copy to SD card: Place map.tdmap in the root of your SD card
4. Open in ezOS: Navigate to Menu → Map Viewer
python pmtiles_to_tdmap.py input.pmtiles -o output.tdmap
python pmtiles_to_tdmap.py input.pmtiles \
--bounds 4.0,52.0,5.5,52.5 \
--zoom 10,14 \
-o netherlands.tdmap
Options:
--bounds WEST,SOUTH,EAST,NORTH: Limit to bounding box (decimal degrees)--zoom MIN,MAX: Zoom levels to include (default: all available)--resume: Resume interrupted conversionFor large areas, the conversion saves checkpoints every 500 tiles. If interrupted,
simply run the same command again to resume.
The TDMAP format is optimized for the ESP32's limited memory:
| Region | Zoom Levels | Approximate Size |
|---|---|---|
| City | 10-16 | 5-20 MB |
| Country | 8-14 | 50-200 MB |
| Continent | 6-12 | 200-500 MB |
Configure the map viewer in Settings → Map:
Ensure map.tdmap is in the root of the SD card and the card is properly inserted.
Large map files may take a few seconds to index on first load. The index is cached
for subsequent accesses.
Check your --bounds parameters. The conversion only includes tiles that intersect
the bounding box.