Vector and raster maps with GL styles. Server side rendering by MapLibre GL Native. Map tile server for MapLibre GL JS, Android, iOS, Leaflet, OpenLayers, GIS via WMTS, etc.
Find a file
2016-04-05 13:02:33 +02:00
public Add xray viewer for vector data 2016-03-17 11:31:33 +01:00
src Use CORS 2016-04-05 13:02:33 +02:00
test Support optional bearing and pitch in center-based static requests 2016-03-11 12:10:22 +01:00
.dockerignore Add tests to .dockerignore 2016-03-11 11:58:36 +01:00
.gitignore Initial commit 2016-03-02 10:52:02 +01:00
.travis.yml Version v0.0.2 2016-03-11 11:44:38 +01:00
Dockerfile Base the docker image on debian stretch to get more recent mesa3d 2016-03-09 08:41:18 +01:00
package.json New index and viewer (+ templating system) 2016-03-16 20:47:11 +01:00
README.md Make compressionLevel/quality configurable + change defaults 2016-03-11 16:40:05 +01:00
run.sh Add Dockerfile, proper scripts and update README (issue #1) 2016-03-03 15:53:24 +01:00

tileserver-gl

Build Status

Installation

Docker

  • docker run -it -v $(pwd):/data -p 8080:80 klokantech/tileserver-gl

Without docker

  • Make sure you have Node v4 or higher (nvm install 4)
  • npm install
  • node src/main.js

Sample data

Sample data can be downloaded at https://github.com/klokantech/tileserver-gl/releases/download/v0.0.2/test_data.zip

Usage

  • unpack somewhere and cd to the directory
  • docker run -it -v $(pwd):/data -p 8080:80 klokantech/tileserver-gl
    • (or node path/to/repo/src/main.js)

Data

Configuration

Create config.json file in the root directory. The config file can contain definition of several paths where the tiles will be served.

Example configuration file

{
  "options": {
    "paths": {
      "root": "",
      "fonts": "glyphs",
      "sprites": "sprites",
      "styles": "styles",
      "mbtiles": ""
    },
    "domains": [
      "localhost:8080",
      "127.0.0.1:8080"
    ],
    "formatEncoding": {
      "png": 6,
      "jpeg": 80,
      "webp": 90
    }
  },
  "styles": {
    "test": {
      "style": "basic-v8.json",
      "tilejson": {
        "type": "overlay",
        "bounds": [8.44806, 47.32023, 8.62537, 47.43468]
      }
    },
    "hybrid": {
      "style": "satellite-hybrid-v8.json",
      "raster": false,
      "tilejson": {
        "format": "webp",
        "center": [8.536715, 47.377455, 6]
      }
    },
    "streets": {
      "style": "streets-v8.json",
      "vector": false,
      "tilejson": {
        "center": [8.536715, 47.377455, 6]
      }
    }
  },
  "vector": {
    "zurich-vector": {
      "mbtiles": "zurich.mbtiles"
    }
  }
}

Note: To specify local mbtiles as source of the vector tiles inside the style, use urls with mbtiles protocol with path relative to the cwd + options.paths.root + options.paths.mbtiles. (For example mbtiles://switzerland.mbtiles)

Available URLs

  • If you visit the server on the configured port (default 8080) you should see your maps appearing in the browser.
  • Style is served at /styles/{id}.json (+ array at /styles.json)
    • Sprites at /styles/{id}/sprite[@2x].{format}
    • Fonts at /fonts/{fontstack}/{start}-{end}.pbf
  • Rasterized tiles are at /raster/{id}/{z}/{x}/{y}[@2x].{format}
    • The optional @2x (or @3x) part can be used to render HiDPI (retina) tiles
    • Available formats: png, jpg (jpeg), webp
    • TileJSON at /raster/{id}.json
  • Static images are rendered at:
    • /static/{id}/{lon},{lat},{zoom}/{width}x{height}[@2x].{format} (center-based)
    • /static/{id}/{minx},{miny},{maxx},{maxy}/{zoom}[@2x].{format} (area-based)
  • Vector tiles at /vector/{mbtiles}/{z}/{x}/{y}.pbf
    • TileJSON at /vector/{mbtiles}.json
  • Array of all TileJSONs at /index.json (/raster.json; /vector.json)