Seperti yang disajikan dalam ceramah di FOSS4G Mapbox Studio memungkinkan untuk membuat petak vektor Mapbox dan mengekspornya sebagai .mbtilesfile.
The Mapbox-gl.js perpustakaan dapat digunakan untuk secara dinamis gaya dan membuat ubin vektor Mapbox pada klien (browser) sisi.
Bagian yang hilang: Bagaimana cara saya meng-host ubin vektor Mapbox ( .mbtiles) sehingga saya dapat mengkonsumsinya dengan mapbox-gl.js?
Saya tahu bahwa Mapbox Studio dapat mengunggah ubin vektor ke server Mapbox dan membiarkannya menjadi host ubin. Tapi itu bukan pilihan bagi saya, saya ingin meng-host ubin vektor di server saya sendiri.
Pendekatan TileStream di bawah ini ternyata jalan buntu. Lihat jawaban saya untuk solusi yang berfungsi dengan Tilelive.
Saya mencoba TileStream yang dapat menyajikan ubin gambar dari .mbtilesfile:
Halaman web saya menggunakan mapbox-gl v0.4.0:
<link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.4.0/mapbox-gl.css' rel='stylesheet' />
<script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.4.0/mapbox-gl.js'></script>
dan itu menciptakan mapboxgl.Map dalam skrip JavaScript:
var map = new mapboxgl.Map({
container: 'map',
center: [46.8104, 8.2452],
zoom: 9,
style: 'c.json'
});
File c.jsonstyle mengonfigurasi sumber ubin vektor:
{
"version": 6,
"sprite": "https://www.mapbox.com/mapbox-gl-styles/sprites/bright",
"glyphs": "mapbox://fontstack/{fontstack}/{range}.pbf",
"constants": {
"@land": "#808080",
"@earth": "#805040",
"@water": "#a0c8f0",
"@road": "#000000"
},
"sources": {
"osm_roads": {
"type": "vector",
"url": "tile.json"
}
},
"layers": [{
"id": "background",
"type": "background",
"paint": {
"background-color": "@land"
}
}, {
"id": "roads",
"type": "line",
"source": "osm_roads",
"source-layer": "roads",
"paint": {
"line-color": "@road"
}
}]
}
... dengan spesifikasi TileJSON berikut di tile.json:
{
"tilejson": "2.1.0",
"tiles": [
"http://localhost:8888/v2/osm_roads/{z}/{x}/{y}.png"
],
"minzoom": 0,
"maxzoom": 12
}
... yang menunjuk ke server TileStream saya berjalan di localhost:8888. TileStream telah dimulai dengan:
node index.js start --tiles="..\tiles"
... di mana ..\tilesfolder tersebut berisi osm_roads.mbtilesfile saya .
Dengan pengaturan ini, saya dapat membuka halaman web saya tetapi hanya melihat lapisan latar belakang. Di jejak jaringan browser saya dapat melihat bahwa ubin memang dimuat ketika saya memperbesar, tapi konsol kesalahan JavaScript browser berisi beberapa kesalahan formulir
Error: Invalid UTF-8 codepoint: 160 in mapbox-gl.js:7
Karena ubin vektor bukan .pnggambar melainkan file ProtoBuf, URL ubin http://localhost:8888/v2/osm_roads/{z}/{x}/{y}.pbfsebenarnya lebih masuk akal, tetapi itu tidak berhasil.
Ada ide?

///untuk mendefinisikan file mbtiles di:tilelive.load('mbtiles://path/to/osm_roads.mbtiles', function(err, source) {