-
Notifications
You must be signed in to change notification settings - Fork 52
5. Offline Maps
Language: English. Chinese version: 5. Offline Maps (中文)
Offline maps are core to TAK and offline operation. They give position, teammates, tracks, markers, and assembly points a local shared reference when there is no Internet.
But the map model here is not the same as a phone app that fetches tiles online and changes style at will. The current implementation favors a controlled, predictable tile system that runs well on constrained hardware for long periods.
The device-side map renderer reads directory tiles, meaning a standard z/x/y folder structure. The current project behavior is explicit about the following:
- offline tiles are read from SD card
-
OSM,Terrain, andSatellitebase layers are supported - contour overlay is supported
- zoom levels
z=0..18are supported -
mbtilesis not supported as a device-side map database
That last point matters because many map problems start with users preparing mbtiles or another packaged format and assuming the device will adapt automatically.
Prepare at least one base source:
/
└── maps
└── base
├── osm
│ └── {z}/{x}/{y}.png
├── terrain
│ └── {z}/{x}/{y}.png
└── satellite
└── {z}/{x}/{y}.jpg
/
└── maps
└── contour
├── major-500
│ └── {z}/{x}/{y}.png
├── major-200
│ └── {z}/{x}/{y}.png
├── major-100
│ └── {z}/{x}/{y}.png
├── major-50
│ └── {z}/{x}/{y}.png
└── major-25
└── {z}/{x}/{y}.png
/
├── routes
│ └── *.kml
└── trackers
└── *.gpx / *.csv / *.bin
-
routesis used for route-mode KML loading -
trackersis used for track file reading and display
This is usually the best first layer to validate. The directory structure and suffixes are straightforward, so it is the easiest way to confirm the SD card, tile path, and map-page loading behavior.
Terrain is more useful when landform matters. In mountain and backcountry use, it is often a better fit for Trail Mate’s scenario than a road-focused layer, especially when used together with contours.
Satellite imagery is good for checking the actual surface appearance of the environment, but it typically costs more storage and is more sensitive to source and suffix mismatches. The device currently expects .jpg under the satellite path, not .png.
Contours are not a separate base map. They are an overlay layer. Their purpose is not to make the map look more advanced, but to provide direct terrain-shape information on a limited screen.
The current contour profile mapping by zoom level is:
-
z <= 7: no contour draw -
z = 8:major-500 -
z = 9:major-200 -
z = 10:major-500 -
z = 11:major-200 -
z = 12..14:major-100 -
z = 15..16:major-50 -
z >= 17:major-25
Trail Mate’s choice of directory tiles, north-up orientation, no rotation, and discrete zoom levels comes from three practical reasons.
First, the device map is not trying to replace a phone navigation app. It only needs to provide a stable, readable field reference on constrained hardware. More rotation, more animation, and more dynamic behavior increase both render cost and cognitive load.
Second, map resources in this project are real field input data, not decorative assets. They should be prepared, copied, checked, and debugged explicitly rather than hidden inside an opaque cache.
Third, offline maps and the companion desktop tool belong to one workflow. Trail Mate Center can handle caching, area selection, and export, while the device focuses on reading and rendering the agreed structure. That separation keeps the device runtime simpler and troubleshooting more predictable.
A stable workflow usually looks like this:
- define the real area of operation first
- prepare a minimal usable base map, usually OSM
- verify on the device that path and layer loading work
- expand with terrain, satellite, and contour layers only after the basics work
- if you already have a route, place the
KMLfile under/routes
This order makes it easier to tell whether a failure is caused by the device, the path layout, the suffixes, or the data itself.
Trail Mate Center is the companion desktop tool, not a separate unrelated project. Based on the current companion-repository README, it handles map-related tasks such as:
- viewing and selecting map regions on desktop
- caching
OSM,Terrain, andSatellitelayers - building and filling offline cache regions
- exporting to USB media or SD card
- importing
KMLtracks and preparing route-based caches
Operationally, Center is the map preparation and troubleshooting workbench, while the handheld is the field terminal that consumes the prepared resources.
The most effective first test is not filling the whole SD card. It is preparing a tiny tile block and checking it directly.
For example, a minimal OSM test block:
/
└── maps
└── base
└── osm
└── 12
└── 3340
├── 1788.png
├── 1789.png
└── 1790.png
Then on the device:
- open the map page
- select the
OSMlayer - move to the corresponding area
- confirm that the tiles really render instead of reporting a missing layer
That is a much cleaner validation method than loading tens of gigabytes before the first test.
Check the directory and suffix before suspecting GPS. The most common causes are:
- the folder hierarchy is not standard
z/x/y -
satellitetiles were stored as.png - the folders exist but contain no real tile files
- the chosen device layer does not match the prepared layer
That usually means the GPS path is fine and the map resource path is not. Positioning and tile rendering are separate chains.
Check the folder:
-
KMLfiles belong under/routes - track files belong under
/trackers
If the folders do not exist, the UI simply shows that no route or track input is available.
Because the device-side implementation is currently designed around directory tiles. This is a project boundary, not a hidden toggle that is merely off by default.
The current documentation confirms support for z=0..18, but it does not claim that one universal zoom strategy fits all use cases. That is reasonable because different activities trade coverage, detail, and storage very differently.
A better approach is:
- prepare the zoom levels you actually need for the real area
- validate loading speed and storage cost
- then decide whether higher resolution or more layers are worth adding
Detailed “best zoom level by activity type” guidance is still worth adding later, but should not be invented as a fixed rule yet.
Useful future expansions include:
- an illustrated
Trail Mate Centerexport-to-SD workflow - map-source and data-license boundaries
- tile-level recommendations for different activity types
- more detailed map-making toolchain examples
For now, this page focuses on the exact directory, format, and loading boundaries the device actually expects.
English
- Home
- 0. Why This Exists
- 1. Quick Start
- 2. Supported Hardware
- 3. Installation & Flashing
- 3.5 Configuration Guide
- 4. Protocols & Data
- 4.1 Reticulum, LXMF and RNode Bridge
- 5. Offline Maps
- 6. Trail Mate Center
- 7. Team Features
- 8. UI Overview
- 9. Build from Source
- 10. Codebase Overview
- 11. Architecture
- 12. Design Decisions
- 13. FAQ
- 14. Troubleshooting
- 15. Logging and Debugging
- 16. Roadmap
- 17. Contributing
- 18. License and Third-Party
- 19. GPS Setting Guide
中文
- Home (中文)
- 0. Why This Exists (中文)
- 1. Quick Start (中文)
- 2. Supported Hardware (中文)
- 3. Installation & Flashing (中文)
- 3.5 Configuration Guide (中文)
- 4. Protocols & Data (中文)
- 4.1 Reticulum, LXMF and RNode Bridge (中文)
- 5. Offline Maps (中文)
- 6. Trail Mate Center (中文)
- 7. Team Features (中文)
- 8. UI Overview (中文)
- 9. Build from Source (中文)
- 10. Codebase Overview (中文)
- 11. Architecture (中文)
- 12. Design Decisions (中文)
- 13. FAQ (中文)
- 14. Troubleshooting (中文)
- 15. Logging and Debugging (中文)
- 16. Roadmap (中文)
- 17. Contributing (中文)
- 18. License and Third-Party (中文)