UrlTemplateMvtTileSource

class UrlTemplateMvtTileSource(val urlTemplate: String, headers: Map<String, String> = emptyMap(), connectTimeoutMs: Long = 5.seconds.inWholeMilliseconds, requestTimeoutMs: Long = 30.seconds.inWholeMilliseconds, clientConfig: HttpClientConfig<*>.() -> Unit = {}) : HttpTileSource

URL-template-based HttpTileSource for Mapbox Vector Tile servers. The template uses {z}, {x}, {y} placeholders, matching the slippy-map convention used by every major vector-tile provider:

UrlTemplateMvtTileSource("https://tiles.example.com/data/v3/{z}/{x}/{y}.pbf")
UrlTemplateMvtTileSource("https://api.maptiler.com/tiles/v3/{z}/{x}/{y}.pbf?key=YOUR_KEY")

gzip transparency: every engine we ship (OkHttp on JVM/Android, Darwin URLSession on iOS, the browser fetch API on JS) auto-decodes Content-Encoding: gzip, and vector tiles are almost always gzipped at rest. No Ktor ContentEncoding plugin is installed.

Constructors

Link copied to clipboard
constructor(urlTemplate: String, headers: Map<String, String> = emptyMap(), connectTimeoutMs: Long = 5.seconds.inWholeMilliseconds, requestTimeoutMs: Long = 30.seconds.inWholeMilliseconds, clientConfig: HttpClientConfig<*>.() -> Unit = {})

Properties

Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open override fun close()

Release any resources held by the source (HTTP client, etc.). Idempotent default no-op.

Link copied to clipboard
open suspend override fun fetchTile(z: Int, x: Int, y: Int, previousEtag: String? = null, previousLastModified: String? = null): TileBlob?
Link copied to clipboard
fun TileSource.launchBulkRetrieval(levelSet: LevelSet, sector: Sector, resolution: ClosedRange<Angle>, scope: CoroutineScope = GlobalScope, maxRetries: Int = 3, retryTimeoutShort: Duration = 5.seconds, retryTimeoutLong: Duration = 15.seconds, onProgress: (downloaded: Long, skipped: Long, total: Long) -> Unit? = null): Job

Download every tile that intersects sector across every level whose resolution falls in resolution — typically used by "save a region for offline use" flows. Returns the launched Job so the caller can cancel mid-download.

Link copied to clipboard
open suspend fun tryReadCachedTile(z: Int, x: Int, y: Int): TileBlob?

Cache-only fast-path read for (z, x, y). Default returns null — a plain network source has no cache to consult. Cache-backed sources override to read their store without going through the network-fetch concurrency budget.