open-vector-tile
Version:
This library reads/writes Open Vector Tiles
45 lines • 1.66 kB
JavaScript
import { BaseVectorLayer } from './vectorLayer.js';
import MapboxVectorLayer from '../mapbox/vectorLayer.js';
/**
* Base Vector Tile
* This is an intermediary for storing feature data in the Open Vector Tile format.
* Convert from either a Mapbox vector tile or GeoJSON data.
*/
export class BaseVectorTile {
layers;
/**
* @param layers - the layers in the tile
*/
constructor(layers = {}) {
this.layers = layers;
}
/**
* @param tile - the tile data to convert. Only Mapobx vector tiles are supported
* @returns - The converted Base Vector Tile
*/
static fromVectorTile(tile) {
const vectorTile = new BaseVectorTile();
for (const layerName in tile.layers) {
const layer = tile.layers[layerName];
if (!(layer instanceof MapboxVectorLayer))
throw Error('Unsupported vector tile type');
vectorTile.layers[layerName] = BaseVectorLayer.fromMapboxVectorLayer(layer);
}
return vectorTile;
}
/**
* @param tile - tile S2JSON data to convert
* @param layerMap - guide on how to convert the layers
* @returns - The converted Base Vector Tile
*/
static fromS2JSONTile(tile, layerMap) {
const vectorTile = new BaseVectorTile();
if (!tile.transformed)
throw Error('The vector tile must be transformed first');
for (const [layerName, layer] of Object.entries(tile.layers)) {
vectorTile.layers[layerName] = BaseVectorLayer.fromS2JSONLayer(layer, layerMap[layerName]);
}
return vectorTile;
}
}
//# sourceMappingURL=vectorTile.js.map