# vector-tile [![build status](https://secure.travis-ci.org/mapbox/vector-tile-js.svg)](http://travis-ci.org/mapbox/vector-tile-js) [![Coverage Status](https://coveralls.io/repos/mapbox/vector-tile-js/badge.svg)](https://coveralls.io/r/mapbox/vector-tile-js) This library reads [Mapbox Vector Tiles](https://github.com/mapbox/vector-tile-spec) and allows access to the layers and features. ## Example ```js var VectorTile = require('@mapbox/vector-tile').VectorTile; var Protobuf = require('pbf'); var tile = new VectorTile(new Protobuf(data)); // Contains a map of all layers tile.layers; var landuse = tile.layers.landuse; // Amount of features in this layer landuse.length; // Returns the first feature landuse.feature(0); ``` Vector tiles contained in [serialtiles-spec](https://github.com/mapbox/serialtiles-spec) are gzip-encoded, so a complete example of parsing them with the native zlib module would be: ```js var VectorTile = require('vector-tile').VectorTile; var Protobuf = require('pbf'); var zlib = require('zlib'); zlib.gunzip(data, function(err, buffer) { var tile = new VectorTile(new Protobuf(buffer)); }); ``` ## Depends - Node.js v0.10.x or v0.8.x ## Install To install: npm install @mapbox/vector-tile ## API Reference ### VectorTile An object that parses vector tile data and makes it readable. #### Constructor - **new VectorTile(protobuf[, end])** — parses the vector tile data contained in the given [Protobuf](https://github.com/mapbox/pbf) object, saving resulting layers in the created object as a `layers` property. Optionally accepts end index. #### Properties - **layers** (Object) — an object containing parsed layers in the form of `{: , ...}`, where each layer is a `VectorTileLayer` object. ### VectorTileLayer An object that contains the data for a single vector tile layer. #### Properties - **version** (`Number`, default: `1`) - **name** (`String) `— layer name - **extent** (`Number`, default: `4096`) — tile extent size - **length** (`Number`) — number of features in the layer #### Methods - **feature(i)** — get a feature (`VectorTileFeature`) by the given index from the layer. ### VectorTileFeature An object that contains the data for a single feature. #### Properties - **type** (`Number`) — type of the feature (also see `VectorTileFeature.types`) - **extent** (`Number`) — feature extent size - **id** (`Number`) — feature identifier, if present - **properties** (`Object`) — object literal with feature properties #### Methods - **loadGeometry()** — parses feature geometry and returns an array of [Point](https://github.com/mapbox/point-geometry) arrays (with each point having `x` and `y` properties) - **bbox()** — calculates and returns the bounding box of the feature in the form `[x1, y1, x2, y2]` - **toGeoJSON(x, y, z)** — returns a GeoJSON representation of the feature. (`x`, `y`, and `z` refer to the containing tile's index.)