diff --git a/bench/benchmarks/buffer.js b/bench/benchmarks/buffer.js index e204c8c6415..7a62b38ac0a 100644 --- a/bench/benchmarks/buffer.js +++ b/bench/benchmarks/buffer.js @@ -157,7 +157,7 @@ function runSample(stylesheet, getGlyphs, getIcons, getTile, callback) { getTile(url, function(err, response) { if (err) throw err; - var data = new VT.VectorTile(new Protobuf(new Uint8Array(response))); + var data = new VT.VectorTile(new Protobuf(response)); workerTile.parse(data, layerFamilies, actor, function(err) { if (err) return callback(err); eachCallback(); diff --git a/bin/point-in-polygon.js b/bin/point-in-polygon.js index 4728e576eef..4995a340979 100755 --- a/bin/point-in-polygon.js +++ b/bin/point-in-polygon.js @@ -22,7 +22,7 @@ var data = fs.readFileSync(process.argv[2]); zlib.inflate(data, function(err, data) { if (err) throw err; -var tile = new VectorTile(new Protobuf(new Uint8Array(data))); +var tile = new VectorTile(new Protobuf(data)); var tree = rbush(9, ['.x1', '.y1', '.x2', '.y2']); diff --git a/bin/show.js b/bin/show.js index aff95b9cf79..120b516d693 100755 --- a/bin/show.js +++ b/bin/show.js @@ -29,7 +29,7 @@ var data = fs.readFileSync(process.argv[2]); zlib.inflate(data, function(err, data) { if (err) throw err; - var tile = new VectorTile(new Protobuf(new Uint8Array(data))); + var tile = new VectorTile(new Protobuf(data)); for (var layer_name in tile.layers) { var layer = tile.layers[layer_name]; diff --git a/bin/stats-type.js b/bin/stats-type.js index 4afb082d4a7..d02c539be0b 100755 --- a/bin/stats-type.js +++ b/bin/stats-type.js @@ -18,7 +18,7 @@ var data = fs.readFileSync(process.argv[2]); zlib.inflate(data, function(err, data) { if (err) throw err; - var tile = new VectorTile(new Protobuf(new Uint8Array(data))); + var tile = new VectorTile(new Protobuf(data)); var stats = {}; for (var layer_name in tile.layers) { diff --git a/bin/stats.js b/bin/stats.js index e84444c8bc2..8a18f31d554 100755 --- a/bin/stats.js +++ b/bin/stats.js @@ -19,7 +19,7 @@ var data = fs.readFileSync(process.argv[2]); zlib.inflate(data, function(err, data) { if (err) throw err; - var tile = new VectorTile(new Protobuf(new Uint8Array(data))); + var tile = new VectorTile(new Protobuf(data)); var omit = ['osm_id', 'name', 'name_en', 'name_de', 'name_es', 'name_fr', 'maki', 'website', 'address', 'reflen', 'len', 'area']; diff --git a/js/data/feature_index.js b/js/data/feature_index.js index 13ead2160fa..63d6c0a4d36 100644 --- a/js/data/feature_index.js +++ b/js/data/feature_index.js @@ -98,7 +98,7 @@ function translateDistance(translate) { // Finds features in this tile at a particular position. FeatureIndex.prototype.query = function(args, styleLayers) { if (!this.vtLayers) { - this.vtLayers = new vt.VectorTile(new Protobuf(new Uint8Array(this.rawTileData))).layers; + this.vtLayers = new vt.VectorTile(new Protobuf(this.rawTileData)).layers; this.sourceLayerCoder = new DictionaryCoder(this.vtLayers ? Object.keys(this.vtLayers).sort() : ['_geojsonTileLayer']); } diff --git a/js/source/tile.js b/js/source/tile.js index 67722d5be2c..66d32ea5927 100644 --- a/js/source/tile.js +++ b/js/source/tile.js @@ -156,7 +156,7 @@ Tile.prototype = { if (!this.rawTileData) return; if (!this.vtLayers) { - this.vtLayers = new vt.VectorTile(new Protobuf(new Uint8Array(this.rawTileData))).layers; + this.vtLayers = new vt.VectorTile(new Protobuf(this.rawTileData)).layers; } var layer = this.vtLayers._geojsonTileLayer || this.vtLayers[params.sourceLayer]; diff --git a/js/source/vector_tile_worker_source.js b/js/source/vector_tile_worker_source.js index 49e4424fb1c..9d735d9f859 100644 --- a/js/source/vector_tile_worker_source.js +++ b/js/source/vector_tile_worker_source.js @@ -61,9 +61,11 @@ VectorTileWorkerSource.prototype = { tile.data = data.tile; tile.parse(tile.data, this.styleLayers.getLayerFamilies(), this.actor, function (err, result, transferrables) { if (err) return callback(err); + + // Not transferring rawTileData because the worker needs to retain its copy. callback(null, util.extend({rawTileData: data.rawTileData}, result), - transferrables.concat(data.rawTileData)); + transferrables); }); this.loaded[source] = this.loaded[source] || {}; @@ -127,7 +129,7 @@ VectorTileWorkerSource.prototype = { return function abort () { xhr.abort(); }; function done(err, data) { if (err) { return callback(err); } - var tile = new vt.VectorTile(new Protobuf(new Uint8Array(data))); + var tile = new vt.VectorTile(new Protobuf(data)); callback(err, { tile: tile, rawTileData: data }); } }, diff --git a/js/symbol/glyph_source.js b/js/symbol/glyph_source.js index 1b3649d749e..15718091211 100644 --- a/js/symbol/glyph_source.js +++ b/js/symbol/glyph_source.js @@ -106,7 +106,7 @@ GlyphSource.prototype.loadRange = function(fontstack, range, callback) { var url = glyphUrl(fontstack, rangeName, this.url); getArrayBuffer(url, function(err, data) { - var glyphs = !err && new Glyphs(new Protobuf(new Uint8Array(data))); + var glyphs = !err && new Glyphs(new Protobuf(data)); for (var i = 0; i < loading[range].length; i++) { loading[range][i](err, range, glyphs); } diff --git a/test/js/data/fill_bucket.test.js b/test/js/data/fill_bucket.test.js index d0faf097302..a5f83aef7a0 100644 --- a/test/js/data/fill_bucket.test.js +++ b/test/js/data/fill_bucket.test.js @@ -11,7 +11,7 @@ var path = require('path'); var StyleLayer = require('../../../js/style/style_layer'); // Load a fill feature from fixture tile. -var vt = new VectorTile(new Protobuf(new Uint8Array(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf'))))); +var vt = new VectorTile(new Protobuf(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf')))); var feature = vt.layers.water.feature(0); function createFeature(points) { diff --git a/test/js/data/line_bucket.test.js b/test/js/data/line_bucket.test.js index 656496d5972..c407413ef2f 100644 --- a/test/js/data/line_bucket.test.js +++ b/test/js/data/line_bucket.test.js @@ -10,7 +10,7 @@ var LineBucket = require('../../../js/data/bucket/line_bucket'); var StyleLayer = require('../../../js/style/style_layer'); // Load a line feature from fixture tile. -var vt = new VectorTile(new Protobuf(new Uint8Array(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf'))))); +var vt = new VectorTile(new Protobuf(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf')))); var feature = vt.layers.road.feature(0); test('LineBucket', function(t) { diff --git a/test/js/data/load_geometry.test.js b/test/js/data/load_geometry.test.js index 71a467912ae..76a87bfe371 100644 --- a/test/js/data/load_geometry.test.js +++ b/test/js/data/load_geometry.test.js @@ -8,7 +8,7 @@ var VectorTile = require('vector-tile').VectorTile; var loadGeometry = require('../../../js/data/load_geometry.js'); // Load a line feature from fixture tile. -var vt = new VectorTile(new Protobuf(new Uint8Array(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf'))))); +var vt = new VectorTile(new Protobuf(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf')))); test('loadGeometry', function(t) { var feature = vt.layers.road.feature(0); diff --git a/test/js/data/symbol_bucket.test.js b/test/js/data/symbol_bucket.test.js index e3d04a9240d..e42fa9b0e61 100644 --- a/test/js/data/symbol_bucket.test.js +++ b/test/js/data/symbol_bucket.test.js @@ -16,7 +16,7 @@ var StyleLayer = require('../../../js/style/style_layer'); var util = require('../../../js/util/util'); // Load a point feature from fixture tile. -var vt = new VectorTile(new Protobuf(new Uint8Array(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf'))))); +var vt = new VectorTile(new Protobuf(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf')))); var feature = vt.layers.place_label.feature(10); var glyphs = JSON.parse(fs.readFileSync(path.join(__dirname, '/../../fixtures/fontstack-glyphs.json'))); diff --git a/test/js/util/classify_rings.test.js b/test/js/util/classify_rings.test.js index d8452ebfa95..d5db5e3e13f 100644 --- a/test/js/util/classify_rings.test.js +++ b/test/js/util/classify_rings.test.js @@ -8,7 +8,7 @@ var VectorTile = require('vector-tile').VectorTile; var classifyRings = require('../../../js/util/classify_rings'); // Load a fill feature from fixture tile. -var vt = new VectorTile(new Protobuf(new Uint8Array(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf'))))); +var vt = new VectorTile(new Protobuf(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf')))); var feature = vt.layers.water.feature(0); test('classifyRings', function(assert) {