Basemaps & Offline Maps

Tavak draws your survey on top of a basemap. There are three kinds, and you control all of them:

Adding an online basemap

Tavak includes OpenStreetMap as its default basemap. You can add others: your own tile services, or any third-party basemap you are entitled to use. Check the provider’s terms first, supply your own API key where one is required, and show the attribution it asks for.

In the app:

  1. Open the Data tab and select Basemaps.
  2. Tap Add Basemap, then Online Basemap.
  3. Give it a Name — how it will appear in the basemap list.
  4. Paste the Tile URL template (see below).
  5. Optionally set subdomains, the zoom range, TMS, and an attribution line.
  6. Tap Test. Tavak fetches one tile at the service’s minimum zoom, near your position when it is known, and tells you what came back — so a typo or a blocked service shows up here instead of as an empty map. For a regional service, test from inside its coverage.
  7. Tap Add. The basemap now appears in Data › Basemaps and in the layers button on the map.

To use it, tap it in the Basemaps list, or open the layers button on the map and pick it under Online Basemaps. To change or remove it later, use the pencil icon on its card, or swipe the card from right to left.

The tile URL template

A tile service addresses each tile by zoom level and grid position. The template tells Tavak where to put those numbers:

https://example.com/tiles/{z}/{x}/{y}.png
PlaceholderMeaning
{z}Zoom level. Required.
{x}Tile column. Required.
{y}Tile row. Required.
{s}Optional. Rotates through the subdomains you list (for example a, b, c), spreading requests across several hostnames.

The three required placeholders may appear in any order, which is what lets ArcGIS-style services work unchanged — they order the path {z}/{y}/{x}:

https://<your-arcgis-host>/arcgis/rest/services/<ServiceName>/MapServer/tile/{z}/{y}/{x}

A WMTS endpoint works the same way once expressed in RESTful tile form. If a provider documents its tiles as {TileMatrix}/{TileRow}/{TileCol}, paste it as is — Tavak rewrites those to {z}, {y}, {x}, and a {-y} row turns the TMS scheme on. Any other placeholder (an {apikey}, say) is refused: put the key into the URL directly. Only https:// addresses are accepted.

If the service needs a key, put it in the template exactly as the provider documents it, for example as a query parameter:

https://example.com/tiles/{z}/{x}/{y}.png?key=YOUR_KEY

The key is stored on the device with the basemap. Treat a URL containing your key as a credential: it is not encrypted, and it travels to that provider with every tile request.

Worked example: Esri World Imagery

Esri publishes World Imagery as an ArcGIS REST tile service. Entered as an online basemap, the settings are:

FieldValue
NameEsri World Imagery
Tile URL templatehttps://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}
Subdomains(leave empty)
Min zoom0
Max zoom19 — raise to 20–23 if your area has deeper coverage, lower it if tiles stop appearing
TMS tile schemeOff
AttributionEsri, Maxar, Earthstar Geographics, and the GIS User Community

Note the {z}/{y}/{x} order — row before column — which is how ArcGIS REST addresses tiles. The same shape works for other services on that server (swap World_Imagery for the service name) and for an ArcGIS Server your own organisation runs.

Check your entitlement first. Esri’s services are governed by Esri’s terms of use, and some uses require an ArcGIS subscription or an API key. Make sure your licence covers what you intend to do, and keep the attribution line visible.

The other fields

FieldWhat it does
SubdomainsThe values substituted for {s}. Required if — and only if — your template contains {s}.
Min / Max zoomThe range the service actually serves. Max zoom matters most: past it the map keeps zooming and scales the last real tiles up, rather than showing blank tiles.
TMS tile schemeTMS numbers tile rows from the bottom, XYZ from the top. If your imagery appears vertically flipped or the map looks mirrored north–south, turn this on.
AttributionThe credit line the provider requires. Enter it so it travels with the basemap.

When it doesn’t work

Test says “Tile not found (HTTP 404)”
The path is wrong, or the axis order is. Try swapping {x} and {y} — ArcGIS services use {z}/{y}/{x} while most others use {z}/{x}/{y}.
Test says “Access denied” (HTTP 401 or 403)
The service needs a key you haven’t supplied, the key is wrong or expired, or the provider does not permit this kind of use. Check your subscription and the provider’s terms.
Test succeeds but the map is blank at your survey site
The service may not have coverage there, or not at that zoom. Zoom out and check; then set Max zoom to the deepest level with real tiles.
The imagery is upside down
Turn on TMS tile scheme.
Tiles load slowly
If the provider offers subdomains, use {s} with them. Otherwise, download an offline area before going to the field.
“Server replied with text/html, not an image tile”
The URL points at a web page or an error page rather than the tile endpoint — a sign-in page, for instance. Use the tile endpoint the provider documents.

Online basemaps in the field

Online basemaps need a connection. Tiles you have already viewed are cached automatically, so recently visited areas keep working when the signal drops, but the cache is not a substitute for planning. For a site with no coverage, either download an offline area in advance or import an MBTiles/GeoTIFF basemap.

Cloud Optimized GeoTIFF (COG) served over HTTP is not supported as a basemap yet. Today, use a GeoTIFF imported from the device, or publish the raster as an XYZ tile service and add it as an online basemap.

Offline basemaps

Two kinds, both imported from files on the device via Data › Basemaps › Add Basemap. Both are copied into the app’s storage, so the original can be deleted afterwards.

MBTiles maps

An MBTiles file with PNG/JPG/WebP tiles — from QGIS (Processing › Raster tools › Generate XYZ tiles (MBTiles)), MOBAC, TileMill, or any tile downloader. Pick MBTiles (Raster), choose the file, check the name and metadata, and import. There is no size limit beyond the phone’s storage. A vector (PBF) MBTiles is recognised and pointed to the Layers tab instead.

To use it, tap its card and Activate, or pick it in the map’s layers button under Offline Basemaps. The active offline map is remembered across restarts. Beyond the map’s deepest zoom the tiles are scaled up rather than going blank; outside its extent the map is empty.

Georeferenced images

Pick Georeferenced Image for:

At import the image is converted once into a tiled map (Web Mercator MBTiles), with progress and a cancel button. Afterwards it draws as tiles: no display-size cap, a bounded amount of memory however large the source, and smooth zooming. Each image has its own opacity and can be used as an overlay on top of the basemap or, with Use as basemap, instead of it.

If the world file holds projected coordinates and the projection is not stated, the Coordinate System screen asks for it — search an EPSG code or pick a UTM zone. Not supported: BigTIFF, planar-configuration TIFF, CCITT / JPEG 2000 / ZSTD compression; these are reported, not silently mis-drawn.

📷
Image placeholder: Importing a GeoTIFF Shot to capture: The Georeferenced Image import with a GeoTIFF selected, showing detected bounds and CRS, then the tiling progress.

Vector tiles

An MBTiles file with MVT/PBF vector tiles (tippecanoe, QGIS, Planetiler) is imported from Data › Layers › Add Layer › Vector Tiles (MBTiles). It is drawn from the tiles as you move — polygons with their holes, lines, points — styled with the colour, width and fill you set in the layer’s style. Past the tileset’s deepest zoom the last level is scaled up.

Managing basemaps

In Data › Basemaps, tap a card for its options (activate or show, zoom to, delete; for georeferenced images also opacity and use-as-basemap); swipe a card from right to left to delete it. Deleting removes the copied file. Choosing an online basemap while an offline map is active switches the map back to online.