FOSS4G'deki bir konuşmada sunulduğu gibi Mapbox Studio, Mapbox vektör karoları oluşturmaya ve bunları bir .mbtiles
dosya olarak dışa aktarmaya izin verir .
Mapbox-gl.js kütüphane dinamik stil kullanılır ve (tarayıcı) yan istemci üzerinde Mapbox vektör fayans hale edilebilir.
Kayıp kısım: Mapbox vector tiles ( .mbtiles
) 'ı nasıl eşleştirebilirim ki onları mapbox-gl.js ile tüketebilirim?
Mapbox Studio'nun vektör döşemelerini Mapbox sunucusuna yükleyebileceğini ve döşemeleri barındırmasına izin verebileceğini biliyorum. Ama bu benim için bir seçenek değil, vektör döşemelerini kendi sunucumda barındırmak istiyorum.
Aşağıdaki TileStream yaklaşımı çıkmaz olarak ortaya çıktı. Tilelive ile çalışan bir çözüm için cevabımı görün.
Görüntü döşemelerini dosyalardan çıkarabilecek TileStream'i denedim .mbtiles
:
Web sayfam mapbox-gl v0.4.0 kullanıyor:
<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>
ve bir JavaScript betiğinde bir mapboxgl.Map oluşturur:
var map = new mapboxgl.Map({
container: 'map',
center: [46.8104, 8.2452],
zoom: 9,
style: 'c.json'
});
c.json
Stil dosyası vektör karo kaynağını yapılandırır:
{
"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"
}
}]
}
... aşağıdaki TileJSON teknik özelliklerinde tile.json
:
{
"tilejson": "2.1.0",
"tiles": [
"http://localhost:8888/v2/osm_roads/{z}/{x}/{y}.png"
],
"minzoom": 0,
"maxzoom": 12
}
... çalışan TileStream sunucuma işaret ediyor localhost:8888
. TileStream ile başladı:
node index.js start --tiles="..\tiles"
... ..\tiles
klasör benim dosyamı içeriyor osm_roads.mbtiles
.
Bu kurulumla web sayfamı açabiliyorum ancak sadece arka plan katmanını görebiliyorum. Tarayıcı ağ izlemesinde, yakınlaştırdığımda döşemelerin gerçekten yüklendiğini görebiliyorum, ancak tarayıcı JavaScript hata konsolu formda birkaç hata içeriyor
Error: Invalid UTF-8 codepoint: 160 in mapbox-gl.js:7
Vektör döşemeleri .png
görüntü değil, ProtoBuf dosyaları olduğundan, döşemeler URL'si http://localhost:8888/v2/osm_roads/{z}/{x}/{y}.pbf
aslında daha anlamlı olur, ancak bu işe yaramaz.
Herhangi bir fikir?
///
mbtiles dosyasını tanımlamak için üçe ihtiyacınız olduğunu unutmayın :tilelive.load('mbtiles://path/to/osm_roads.mbtiles', function(err, source) {