96 lines
2.7 KiB
Markdown
96 lines
2.7 KiB
Markdown
# vector-tile
|
|
|
|
This library reads [Mapbox Vector Tiles](https://github.com/mapbox/vector-tile-spec) and allows access to the layers and features.
|
|
|
|
## Example
|
|
|
|
```js
|
|
import {VectorTile} from '@mapbox/vector-tile';
|
|
import Protobuf from 'pbf';
|
|
|
|
const tile = new VectorTile(new Protobuf(data));
|
|
|
|
// Contains a map of all layers
|
|
tile.layers;
|
|
|
|
const 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
|
|
import {VectorTile} from '@mapbox/vector-tile';
|
|
import Protobuf from 'pbf';
|
|
import {gunzipSync} from 'zlib';
|
|
|
|
const buffer = gunzipSync(data);
|
|
const tile = new VectorTile(new Protobuf(buffer));
|
|
```
|
|
|
|
## 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 `{<name>: <layer>, ...}`,
|
|
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.)
|