https://github.com/mapbox/vector-tile-js
Parses vector tiles with JavaScript
https://github.com/mapbox/vector-tile-js
Last synced: 5 months ago
JSON representation
Parses vector tiles with JavaScript
- Host: GitHub
- URL: https://github.com/mapbox/vector-tile-js
- Owner: mapbox
- License: bsd-3-clause
- Created: 2014-04-12T21:38:34.000Z (about 11 years ago)
- Default Branch: main
- Last Pushed: 2024-07-16T09:41:00.000Z (9 months ago)
- Last Synced: 2024-11-08T00:04:50.556Z (5 months ago)
- Language: JavaScript
- Size: 252 KB
- Stars: 348
- Watchers: 128
- Forks: 87
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-vector-tiles - vector-tile-js - Parses vector tiles with JavaScript. (Parsers & Generators)
README
# 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 `{: , ...}`,
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.)