From 43cfb22c49b190ccd1a59c66c86e04df55a1c64f Mon Sep 17 00:00:00 2001 From: Molly Lloyd Date: Wed, 7 Jun 2017 15:26:57 -0700 Subject: [PATCH 1/2] prevent thrown error when a geojson tile doesn't have any features in it --- src/source/tile.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/source/tile.js b/src/source/tile.js index be9110a14ee..a0c5bff3b64 100644 --- a/src/source/tile.js +++ b/src/source/tile.js @@ -212,7 +212,8 @@ class Tile { this.vtLayers = new vt.VectorTile(new Protobuf(this.rawTileData)).layers; } - const layer = this.vtLayers._geojsonTileLayer || this.vtLayers[params.sourceLayer]; + const sourceLayer = params ? params.sourceLayer : undefined; + const layer = this.vtLayers._geojsonTileLayer || this.vtLayers[sourceLayer]; if (!layer) return; From 2a2d2ab1288968b56b66caf21234cd09cc7a099c Mon Sep 17 00:00:00 2001 From: Molly Lloyd Date: Wed, 7 Jun 2017 15:32:43 -0700 Subject: [PATCH 2/2] test empty geojson tile --- test/unit/source/tile.test.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/unit/source/tile.test.js b/test/unit/source/tile.test.js index 8c94e539b86..a30dc6ba049 100644 --- a/test/unit/source/tile.test.js +++ b/test/unit/source/tile.test.js @@ -48,6 +48,23 @@ test('querySourceFeatures', (t) => { t.end(); }); + t.test('empty geojson tile', (t) => { + const tile = new Tile(new TileCoord(1, 1, 1)); + let result; + + result = []; + tile.querySourceFeatures(result, {}); + t.equal(result.length, 0); + + const geojsonWrapper = new GeoJSONWrapper([]); + geojsonWrapper.name = '_geojsonTileLayer'; + tile.rawTileData = vtpbf({ layers: { '_geojsonTileLayer': geojsonWrapper }}); + result = []; + t.doesNotThrow(tile.querySourceFeatures(result)); + t.equal(result.length, 0); + t.end(); + }); + t.test('vector tile', (t) => { const tile = new Tile(new TileCoord(1, 1, 1)); let result;