Using Offline Maps

Collect's Location widgets can be configured to display different maps. To use online maps, set the mapping engine and basemap in User Interface Settings. Users will need to be online to load questions with maps.

Offline maps are useful for low-connectivity environments or to present custom geospatial data. Use them to display high-resolution imagery, annotated maps, heatmaps, and more. ODK Collect can display any map layer saved as a set of tiles in the MBTiles format. Tiles are images that represent a subset of a map. The only limitation is that tile data in Mapbox's pbf format are not supported.

Offline maps quick start

  1. From Collect's settings, change the Mapping SDK to Google Maps SDK
  2. Get or create your MBTiles file with TileMill or other software.
  3. Transfer tiles to devices. The MBTiles file must be placed in a sub-folder on your device in the /sdcard/odk/layers folder.
  4. Open a question that displays a map.
  5. Tap the layers icon and select your map

Getting map tiles

Open Map Tiles hosts many free map tile files that can be used in ODK Collect.

To create MBTiles files, use one of the compatible applications that can write tiles. Commonly used free software packages are TileMill and QGIS with the QTiles plugin.

Transferring offline tiles to devices

To make MBTiles files available for use in ODK Collect they must be manually transferred to Android devices. The tile files need to be inside a folder in the /sdcard/odk/layers folder. The folder name will be used to identify your offline map in the user interface so choose a user-friendly name for it. For example, if your MBTiles file is my_tiles.mbtiles and it includes information about settlements in the mapped area, you may want to call your folder /sdcard/odk/layers/All settlements/.


MBTiles files placed directly in the /sdcard/odk/layers folder will not be detected! Placing it in a subdirectory with a friendly name is required.

To transfer files, you can upload them to an online service such as Google Drive, connect your device to a computer and transfer them via USB or use adb.