diff --git a/package.json b/package.json index 4f0ce878e58..8930fac9b44 100644 --- a/package.json +++ b/package.json @@ -26,14 +26,14 @@ "csscolorparser": "~1.0.2", "earcut": "^2.1.3", "geojson-rewind": "^0.3.0", - "geojson-vt": "^3.1.4", + "geojson-vt": "^3.2.0", "gl-matrix": "^2.6.1", "grid-index": "^1.0.0", "minimist": "0.0.8", "pbf": "^3.0.5", "quickselect": "^1.0.0", "rw": "^1.3.3", - "supercluster": "^4.0.1", + "supercluster": "^4.1.1", "tinyqueue": "^1.1.0", "vt-pbf": "^3.0.1" }, diff --git a/src/source/geojson_source.js b/src/source/geojson_source.js index d71b5f2fe6f..fc2229b568d 100644 --- a/src/source/geojson_source.js +++ b/src/source/geojson_source.js @@ -128,7 +128,8 @@ class GeoJSONSource extends Evented implements Source { tolerance: (options.tolerance !== undefined ? options.tolerance : 0.375) * scale, extent: EXTENT, maxZoom: this.maxzoom, - lineMetrics: options.lineMetrics || false + lineMetrics: options.lineMetrics || false, + generateId: options.generateId || false }, superclusterOptions: { maxZoom: options.clusterMaxZoom !== undefined ? diff --git a/src/style-spec/reference/v8.json b/src/style-spec/reference/v8.json index fd4c24b768c..fda14b684b1 100644 --- a/src/style-spec/reference/v8.json +++ b/src/style-spec/reference/v8.json @@ -377,6 +377,11 @@ "type": "boolean", "default": false, "doc": "Whether to calculate line distance metrics. This is required for line layers that specify `line-gradient` values." + }, + "generateId": { + "type": "boolean", + "default": false, + "doc": "Whether to generate ids for the geojson features. When enabled, the `feature.id` property will be auto assigned, over-writing any previous values." } }, "source_video": { diff --git a/src/style-spec/types.js b/src/style-spec/types.js index 143288020a2..2aeed4803c8 100644 --- a/src/style-spec/types.js +++ b/src/style-spec/types.js @@ -119,7 +119,8 @@ export type GeoJSONSourceSpecification = {| "cluster"?: boolean, "clusterRadius"?: number, "clusterMaxZoom"?: number, - "lineMetrics"?: boolean + "lineMetrics"?: boolean, + "generateId"?: boolean |} export type VideoSourceSpecification = {| diff --git a/test/unit/source/geojson_source.test.js b/test/unit/source/geojson_source.test.js index dd596dd4db1..49018016a46 100644 --- a/test/unit/source/geojson_source.test.js +++ b/test/unit/source/geojson_source.test.js @@ -145,7 +145,8 @@ test('GeoJSONSource#update', (t) => { maxZoom: 10, tolerance: 4, buffer: 256, - lineMetrics: false + lineMetrics: false, + generateId: true }); t.end(); } @@ -155,7 +156,8 @@ test('GeoJSONSource#update', (t) => { data: {}, maxzoom: 10, tolerance: 0.25, - buffer: 16 + buffer: 16, + generateId: true }, mockDispatcher).load(); }); diff --git a/yarn.lock b/yarn.lock index 288f5937726..00b8915e91e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4355,9 +4355,9 @@ geojson-rewind@^0.3.0: concat-stream "~1.6.0" minimist "1.2.0" -geojson-vt@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.1.4.tgz#c8ffefbe3613d3ad2747e963b0b63b9e62ff11b8" +geojson-vt@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.0.tgz#039cea549df5f892c48cff8eb66c2e217d61c241" get-caller-file@^1.0.1: version "1.0.2" @@ -9613,9 +9613,9 @@ sugarss@^1.0.0: dependencies: postcss "^6.0.14" -supercluster@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-4.0.1.tgz#eead7ab49f50322b265e0087859ebcabdc5c2ed8" +supercluster@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-4.1.1.tgz#cf13c3b28a3fb3db5290bfad7f524e244bd4ce78" dependencies: kdbush "^2.0.1"