Skip to content

Commit 39722fd

Browse files
authored
add support for MapLibre Vector Tile (.mlt) (#271)
1 parent 4d1c99f commit 39722fd

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

pmtiles/directory.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const (
3838
Jpeg = 3
3939
Webp = 4
4040
Avif = 5
41+
Mlt = 6
4142
)
4243

4344
// HeaderV3LenBytes is the fixed-size binary header size.
@@ -97,6 +98,8 @@ func headerContentType(header HeaderV3) (string, bool) {
9798
return "image/webp", true
9899
case Avif:
99100
return "image/avif", true
101+
case Mlt:
102+
return "application/vnd.maplibre-vector-tile", true
100103
default:
101104
return "", false
102105
}
@@ -114,6 +117,8 @@ func tileTypeToString(t TileType) string {
114117
return "webp"
115118
case Avif:
116119
return "avif"
120+
case Mlt:
121+
return "mlt"
117122
default:
118123
return ""
119124
}
@@ -131,6 +136,8 @@ func stringToTileType(t string) TileType {
131136
return Webp
132137
case "avif":
133138
return Avif
139+
case "mlt":
140+
return Mlt
134141
default:
135142
return UnknownTileType
136143
}

pmtiles/directory_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ func TestStringifiedExtension(t *testing.T) {
275275
assert.Equal(t, ".jpg", headerExt(HeaderV3{TileType: Jpeg}))
276276
assert.Equal(t, ".webp", headerExt(HeaderV3{TileType: Webp}))
277277
assert.Equal(t, ".avif", headerExt(HeaderV3{TileType: Avif}))
278+
assert.Equal(t, ".mlt", headerExt(HeaderV3{TileType: Mlt}))
278279
}
279280

280281
func TestStringToTileType(t *testing.T) {
@@ -283,6 +284,7 @@ func TestStringToTileType(t *testing.T) {
283284
assert.Equal(t, "jpg", tileTypeToString(stringToTileType("jpg")))
284285
assert.Equal(t, "webp", tileTypeToString(stringToTileType("webp")))
285286
assert.Equal(t, "avif", tileTypeToString(stringToTileType("avif")))
287+
assert.Equal(t, "mlt", tileTypeToString(stringToTileType("mlt")))
286288
assert.Equal(t, "", tileTypeToString(stringToTileType("")))
287289
}
288290

pmtiles/server.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,10 @@ func (server *Server) getTileAttempt(ctx context.Context, httpHeaders map[string
364364
if ext != "avif" {
365365
return 400, httpHeaders, []byte("path mismatch: archive is type AVIF (.avif)"), ""
366366
}
367+
case Mlt:
368+
if ext != "mlt" {
369+
return 400, httpHeaders, []byte("path mismatch: archive is type MLT (.mlt)"), ""
370+
}
367371
}
368372

369373
tileID := ZxyToID(z, x, y)

0 commit comments

Comments
 (0)