@galihrivanto/google-vector-tiles
Version:
A vector map tiler for google map
47 lines (40 loc) • 1.24 kB
JavaScript
import { VectorTileLayer } from './VectorTileLayer'
function VectorTile (buffer, end) {
this.layers = {};
this._buffer = buffer;
end = end || buffer.length;
while (buffer.pos < end) {
var val = buffer.readVarint(),
tag = val >> 3;
if (tag == 3) {
var layer = this._readLayer();
if (layer.length) {
this.layers[layer.name] = layer;
}
} else {
buffer.skip(val);
}
}
this.parseGeometries();
}
VectorTile.prototype._readLayer = function () {
var buffer = this._buffer,
bytes = buffer.readVarint(),
end = buffer.pos + bytes,
layer = new VectorTileLayer(buffer, end);
buffer.pos = end;
return layer;
};
VectorTile.prototype.parseGeometries = function () {
for (var key in this.layers) {
var layer = this.layers[key];
layer.parsedFeatures = [];
var featuresLength = layer._features.length;
for (var i = 0, len = featuresLength; i < len; i++) {
var feature = layer.feature(i);
feature.coordinates = feature.loadGeometry();
layer.parsedFeatures.push(feature);
}
}
}
export { VectorTile }