Como se presenta en una charla en FOSS4G Mapbox Studio permite crear Mapbox vector de azulejos y exportarlos como un .mbtiles
archivo.
El mapbox-gl.js la biblioteca puede ser utilizada de forma dinámica y estilo de procesamiento Mapbox vector de azulejos en el cliente (navegador).
La parte que falta: ¿Cómo puedo auto-host Mapbox vector de iconos (.mbtiles
) por lo que puedo consumirlas con mapbox-gl.js?
Nota: sé que Mapbox Studio puede cargar el vector de azulejos para el Mapbox servidor y dejar de acogida de los azulejos. Pero eso no es opción para mí, quiero alojar el vector de azulejos en mi propio servidor.
Edit3: El TileStream aproximación por debajo de la que resultó ser un callejón sin salida. Ver mi respuesta para una solución de trabajo con Tilelive.
Editar:
Traté de TileStream que puede servir de imagen de baldosas de .mbtiles
ficheros:
Mi página web utiliza 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>
y se crea un mapboxgl.Mapa en una secuencia de comandos de JavaScript:
var map = new mapboxgl.Map({
container: 'map',
center: [46.8104, 8.2452],
zoom: 9,
style: 'c.json'
});
El c.json
archivo de estilo configura el vector de baldosa fuente:
{
"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"
}
}]
}
... con las siguientes TileJSON especificación en tile.json
:
{
"tilejson": "2.1.0",
"tiles": [
"http://localhost:8888/v2/osm_roads/{z}/{x}/{y}.png"
],
"minzoom": 0,
"maxzoom": 12
}
... que mis puntos a TileStream server que se ejecuta en localhost:8888
.
TileStream se ha iniciado con:
node index.js start --tiles="..\tiles"
... donde el ..\tiles
carpeta contiene mi osm_roads.mbtiles
archivo.
Con esta configuración, puedo abrir mi página web, pero sólo ver la capa de fondo. En el navegador de la red de seguimiento, puedo ver que las baldosas son de hecho cargado cuando acercar, pero el navegador con JavaScript error de la consola contiene varios errores de forma
Error: Invalid UTF-8 codepoint: 160 in mapbox-gl.js:7
Desde el vector de las baldosas no son .png
imágenes sino ProtoBuf archivos, los iconos URL http://localhost:8888/v2/osm_roads/{z}/{x}/{y}.pbf
realmente haría más sentido, pero que no funciona.
Alguna idea?
Edit 2: Añadido enlace a TileStream