@deck.gl/geo-layers 8.10.0-alpha.4 → 8.10.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/dist.dev.js +23 -666
  2. package/dist/es5/geo-cell-layer/GeoCellLayer.js +66 -69
  3. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
  4. package/dist/es5/geohash-layer/geohash-layer.js +18 -22
  5. package/dist/es5/geohash-layer/geohash-layer.js.map +1 -1
  6. package/dist/es5/great-circle-layer/great-circle-layer.js +2 -4
  7. package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
  8. package/dist/es5/h3-layers/h3-cluster-layer.js +85 -91
  9. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  10. package/dist/es5/h3-layers/h3-hexagon-layer.js +222 -234
  11. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  12. package/dist/es5/index.js.map +1 -1
  13. package/dist/es5/mesh-layer/mesh-layer.js +126 -136
  14. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  15. package/dist/es5/mvt-layer/mvt-layer.js +338 -350
  16. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  17. package/dist/es5/quadkey-layer/quadkey-layer.js +23 -27
  18. package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
  19. package/dist/es5/s2-layer/s2-layer.js +18 -22
  20. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  21. package/dist/es5/terrain-layer/terrain-layer.js +225 -234
  22. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  23. package/dist/es5/tile-3d-layer/tile-3d-layer.js +338 -354
  24. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  25. package/dist/es5/tile-layer/tile-layer.js +219 -234
  26. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  27. package/dist/es5/tileset-2d/tile-2d-header.js +160 -164
  28. package/dist/es5/tileset-2d/tile-2d-header.js.map +1 -1
  29. package/dist/es5/tileset-2d/tile-2d-traversal.js +118 -122
  30. package/dist/es5/tileset-2d/tile-2d-traversal.js.map +1 -1
  31. package/dist/es5/tileset-2d/tileset-2d.js +397 -411
  32. package/dist/es5/tileset-2d/tileset-2d.js.map +1 -1
  33. package/dist/es5/trips-layer/trips-layer.js +48 -52
  34. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  35. package/dist/es5/wms-layer/wms-layer.js +263 -274
  36. package/dist/es5/wms-layer/wms-layer.js.map +1 -1
  37. package/dist/esm/geo-cell-layer/GeoCellLayer.js +2 -5
  38. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
  39. package/dist/esm/geohash-layer/geohash-layer.js +2 -5
  40. package/dist/esm/geohash-layer/geohash-layer.js.map +1 -1
  41. package/dist/esm/great-circle-layer/great-circle-layer.js +2 -5
  42. package/dist/esm/great-circle-layer/great-circle-layer.js.map +1 -1
  43. package/dist/esm/h3-layers/h3-cluster-layer.js +2 -5
  44. package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
  45. package/dist/esm/h3-layers/h3-hexagon-layer.js +4 -8
  46. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
  47. package/dist/esm/index.js.map +1 -1
  48. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js +55 -1
  49. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js.map +1 -1
  50. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +80 -1
  51. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -1
  52. package/dist/esm/mesh-layer/mesh-layer.js +2 -5
  53. package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
  54. package/dist/esm/mvt-layer/mvt-layer.js +2 -5
  55. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  56. package/dist/esm/quadkey-layer/quadkey-layer.js +2 -5
  57. package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
  58. package/dist/esm/s2-layer/s2-geometry.js +1 -1
  59. package/dist/esm/s2-layer/s2-geometry.js.map +1 -1
  60. package/dist/esm/s2-layer/s2-layer.js +2 -5
  61. package/dist/esm/s2-layer/s2-layer.js.map +1 -1
  62. package/dist/esm/terrain-layer/terrain-layer.js +3 -7
  63. package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
  64. package/dist/esm/tile-3d-layer/tile-3d-layer.js +7 -11
  65. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  66. package/dist/esm/tile-layer/tile-layer.js +2 -5
  67. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  68. package/dist/esm/tileset-2d/tile-2d-header.js +19 -39
  69. package/dist/esm/tileset-2d/tile-2d-header.js.map +1 -1
  70. package/dist/esm/tileset-2d/tile-2d-traversal.js +6 -13
  71. package/dist/esm/tileset-2d/tile-2d-traversal.js.map +1 -1
  72. package/dist/esm/tileset-2d/tileset-2d.js +17 -34
  73. package/dist/esm/tileset-2d/tileset-2d.js.map +1 -1
  74. package/dist/esm/tileset-2d/utils.js +1 -1
  75. package/dist/esm/tileset-2d/utils.js.map +1 -1
  76. package/dist/esm/trips-layer/trips-layer.js +27 -10
  77. package/dist/esm/trips-layer/trips-layer.js.map +1 -1
  78. package/dist/esm/wms-layer/wms-layer.js +3 -7
  79. package/dist/esm/wms-layer/wms-layer.js.map +1 -1
  80. package/dist.min.js +111 -56
  81. package/package.json +2 -2
  82. package/src/index.ts +1 -0
  83. package/typed/index.d.ts +1 -0
  84. package/typed/index.d.ts.map +1 -1
@@ -87,414 +87,402 @@ var MVTLayer = function (_TileLayer) {
87
87
  return _super.apply(this, arguments);
88
88
  }
89
89
 
90
- (0, _createClass2.default)(MVTLayer, [{
91
- key: "initializeState",
92
- value: function initializeState() {
93
- (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "initializeState", this).call(this);
94
- var binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;
95
- this.setState({
96
- binary: binary,
97
- data: null,
98
- tileJSON: null
99
- });
100
- }
101
- }, {
102
- key: "isLoaded",
103
- get: function get() {
104
- return this.state && this.state.data && this.state.tileset && (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "isLoaded", this);
90
+ var _proto = MVTLayer.prototype;
91
+
92
+ _proto.initializeState = function initializeState() {
93
+ (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "initializeState", this).call(this);
94
+ var binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;
95
+ this.setState({
96
+ binary: binary,
97
+ data: null,
98
+ tileJSON: null
99
+ });
100
+ };
101
+
102
+ _proto.updateState = function updateState(_ref) {
103
+ var _this$state;
104
+
105
+ var props = _ref.props,
106
+ oldProps = _ref.oldProps,
107
+ context = _ref.context,
108
+ changeFlags = _ref.changeFlags;
109
+
110
+ if (changeFlags.dataChanged) {
111
+ this._updateTileData();
105
112
  }
106
- }, {
107
- key: "updateState",
108
- value: function updateState(_ref) {
109
- var _this$state;
110
-
111
- var props = _ref.props,
112
- oldProps = _ref.oldProps,
113
- context = _ref.context,
114
- changeFlags = _ref.changeFlags;
115
-
116
- if (changeFlags.dataChanged) {
117
- this._updateTileData();
118
- }
119
113
 
120
- if ((_this$state = this.state) !== null && _this$state !== void 0 && _this$state.data) {
121
- (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "updateState", this).call(this, {
122
- props: props,
123
- oldProps: oldProps,
124
- context: context,
125
- changeFlags: changeFlags
126
- });
114
+ if ((_this$state = this.state) !== null && _this$state !== void 0 && _this$state.data) {
115
+ (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "updateState", this).call(this, {
116
+ props: props,
117
+ oldProps: oldProps,
118
+ context: context,
119
+ changeFlags: changeFlags
120
+ });
127
121
 
128
- this._setWGS84PropertyForTiles();
129
- }
122
+ this._setWGS84PropertyForTiles();
123
+ }
130
124
 
131
- var highlightColor = props.highlightColor;
125
+ var highlightColor = props.highlightColor;
132
126
 
133
- if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {
134
- this.setState({
135
- highlightColor: highlightColor
136
- });
137
- }
127
+ if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {
128
+ this.setState({
129
+ highlightColor: highlightColor
130
+ });
138
131
  }
139
- }, {
140
- key: "_updateTileData",
141
- value: function () {
142
- var _updateTileData2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
143
- var data, tileJSON, _this$props, onDataLoad, fetch;
144
-
145
- return _regenerator.default.wrap(function _callee$(_context) {
146
- while (1) {
147
- switch (_context.prev = _context.next) {
148
- case 0:
149
- data = this.props.data;
150
- tileJSON = null;
151
-
152
- if (!(typeof data === 'string' && !(0, _tileset2d.isURLTemplate)(data))) {
153
- _context.next = 18;
154
- break;
155
- }
156
-
157
- _this$props = this.props, onDataLoad = _this$props.onDataLoad, fetch = _this$props.fetch;
158
- this.setState({
159
- data: null,
160
- tileJSON: null
161
- });
162
- _context.prev = 5;
163
- _context.next = 8;
164
- return fetch(data, {
165
- propName: 'data',
166
- layer: this,
167
- loaders: []
168
- });
132
+ };
169
133
 
170
- case 8:
171
- tileJSON = _context.sent;
172
- _context.next = 15;
173
- break;
134
+ _proto._updateTileData = function () {
135
+ var _updateTileData2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
136
+ var data, tileJSON, _this$props, onDataLoad, fetch;
174
137
 
175
- case 11:
176
- _context.prev = 11;
177
- _context.t0 = _context["catch"](5);
178
- this.raiseError(_context.t0, 'loading TileJSON');
179
- data = null;
180
-
181
- case 15:
182
- if (onDataLoad) {
183
- onDataLoad(tileJSON, {
184
- propName: 'data',
185
- layer: this
186
- });
187
- }
188
-
189
- _context.next = 19;
190
- break;
138
+ return _regenerator.default.wrap(function _callee$(_context) {
139
+ while (1) {
140
+ switch (_context.prev = _context.next) {
141
+ case 0:
142
+ data = this.props.data;
143
+ tileJSON = null;
191
144
 
192
- case 18:
193
- if (data.tilejson) {
194
- tileJSON = data;
195
- }
196
-
197
- case 19:
198
- if (tileJSON) {
199
- data = tileJSON.tiles;
200
- }
145
+ if (!(typeof data === 'string' && !(0, _tileset2d.isURLTemplate)(data))) {
146
+ _context.next = 18;
147
+ break;
148
+ }
201
149
 
202
- this.setState({
203
- data: data,
204
- tileJSON: tileJSON
150
+ _this$props = this.props, onDataLoad = _this$props.onDataLoad, fetch = _this$props.fetch;
151
+ this.setState({
152
+ data: null,
153
+ tileJSON: null
154
+ });
155
+ _context.prev = 5;
156
+ _context.next = 8;
157
+ return fetch(data, {
158
+ propName: 'data',
159
+ layer: this,
160
+ loaders: []
161
+ });
162
+
163
+ case 8:
164
+ tileJSON = _context.sent;
165
+ _context.next = 15;
166
+ break;
167
+
168
+ case 11:
169
+ _context.prev = 11;
170
+ _context.t0 = _context["catch"](5);
171
+ this.raiseError(_context.t0, 'loading TileJSON');
172
+ data = null;
173
+
174
+ case 15:
175
+ if (onDataLoad) {
176
+ onDataLoad(tileJSON, {
177
+ propName: 'data',
178
+ layer: this
205
179
  });
180
+ }
206
181
 
207
- case 21:
208
- case "end":
209
- return _context.stop();
210
- }
211
- }
212
- }, _callee, this, [[5, 11]]);
213
- }));
182
+ _context.next = 19;
183
+ break;
214
184
 
215
- function _updateTileData() {
216
- return _updateTileData2.apply(this, arguments);
217
- }
185
+ case 18:
186
+ if (data.tilejson) {
187
+ tileJSON = data;
188
+ }
218
189
 
219
- return _updateTileData;
220
- }()
221
- }, {
222
- key: "_getTilesetOptions",
223
- value: function _getTilesetOptions() {
224
- var opts = (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "_getTilesetOptions", this).call(this);
225
- var tileJSON = this.state.tileJSON;
226
- var _this$props2 = this.props,
227
- minZoom = _this$props2.minZoom,
228
- maxZoom = _this$props2.maxZoom;
229
-
230
- if (tileJSON) {
231
- if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > minZoom) {
232
- opts.minZoom = tileJSON.minzoom;
233
- }
190
+ case 19:
191
+ if (tileJSON) {
192
+ data = tileJSON.tiles;
193
+ }
234
194
 
235
- if (Number.isFinite(tileJSON.maxzoom) && (!Number.isFinite(maxZoom) || tileJSON.maxzoom < maxZoom)) {
236
- opts.maxZoom = tileJSON.maxzoom;
195
+ this.setState({
196
+ data: data,
197
+ tileJSON: tileJSON
198
+ });
199
+
200
+ case 21:
201
+ case "end":
202
+ return _context.stop();
203
+ }
237
204
  }
238
- }
205
+ }, _callee, this, [[5, 11]]);
206
+ }));
239
207
 
240
- return opts;
208
+ function _updateTileData() {
209
+ return _updateTileData2.apply(this, arguments);
241
210
  }
242
- }, {
243
- key: "renderLayers",
244
- value: function renderLayers() {
245
- var _this$state2;
246
211
 
247
- if (!((_this$state2 = this.state) !== null && _this$state2 !== void 0 && _this$state2.data)) return null;
248
- return (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "renderLayers", this).call(this);
249
- }
250
- }, {
251
- key: "getTileData",
252
- value: function getTileData(loadProps) {
253
- var _loadOptions;
254
-
255
- var _this$state3 = this.state,
256
- data = _this$state3.data,
257
- binary = _this$state3.binary;
258
- var index = loadProps.index,
259
- signal = loadProps.signal;
260
- var url = (0, _tileset2d.getURLFromTemplate)(data, loadProps);
261
-
262
- if (!url) {
263
- return Promise.reject('Invalid URL');
212
+ return _updateTileData;
213
+ }();
214
+
215
+ _proto._getTilesetOptions = function _getTilesetOptions() {
216
+ var opts = (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "_getTilesetOptions", this).call(this);
217
+ var tileJSON = this.state.tileJSON;
218
+ var _this$props2 = this.props,
219
+ minZoom = _this$props2.minZoom,
220
+ maxZoom = _this$props2.maxZoom;
221
+
222
+ if (tileJSON) {
223
+ if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > minZoom) {
224
+ opts.minZoom = tileJSON.minzoom;
264
225
  }
265
226
 
266
- var loadOptions = this.getLoadOptions();
267
- var fetch = this.props.fetch;
268
- loadOptions = _objectSpread(_objectSpread({}, loadOptions), {}, {
269
- mimeType: 'application/x-protobuf',
270
- mvt: _objectSpread(_objectSpread({}, (_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.mvt), {}, {
271
- coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',
272
- tileIndex: index
273
- }),
274
- gis: binary ? {
275
- format: 'binary'
276
- } : {}
277
- });
278
- return fetch(url, {
279
- propName: 'data',
280
- layer: this,
281
- loadOptions: loadOptions,
282
- signal: signal
283
- });
284
- }
285
- }, {
286
- key: "renderSubLayers",
287
- value: function renderSubLayers(props) {
288
- var _props$tile$index = props.tile.index,
289
- x = _props$tile$index.x,
290
- y = _props$tile$index.y,
291
- z = _props$tile$index.z;
292
- var worldScale = Math.pow(2, z);
293
- var xScale = WORLD_SIZE / worldScale;
294
- var yScale = -xScale;
295
- var xOffset = WORLD_SIZE * x / worldScale;
296
- var yOffset = WORLD_SIZE * (1 - y / worldScale);
297
- var modelMatrix = new _core2.Matrix4().scale([xScale, yScale, 1]);
298
- props.autoHighlight = false;
299
-
300
- if (!this.context.viewport.resolution) {
301
- props.modelMatrix = modelMatrix;
302
- props.coordinateOrigin = [xOffset, yOffset, 0];
303
- props.coordinateSystem = _core.COORDINATE_SYSTEM.CARTESIAN;
304
- props.extensions = [].concat((0, _toConsumableArray2.default)(props.extensions || []), [new _extensions.ClipExtension()]);
227
+ if (Number.isFinite(tileJSON.maxzoom) && (!Number.isFinite(maxZoom) || tileJSON.maxzoom < maxZoom)) {
228
+ opts.maxZoom = tileJSON.maxzoom;
305
229
  }
230
+ }
306
231
 
307
- var subLayers = (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "renderSubLayers", this).call(this, props);
232
+ return opts;
233
+ };
308
234
 
309
- if (this.state.binary && !(subLayers instanceof _layers.GeoJsonLayer)) {
310
- _core.log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();
311
- }
235
+ _proto.renderLayers = function renderLayers() {
236
+ var _this$state2;
312
237
 
313
- return subLayers;
314
- }
315
- }, {
316
- key: "_updateAutoHighlight",
317
- value: function _updateAutoHighlight(info) {
318
- var uniqueIdProperty = this.props.uniqueIdProperty;
319
- var _this$state4 = this.state,
320
- hoveredFeatureId = _this$state4.hoveredFeatureId,
321
- hoveredFeatureLayerName = _this$state4.hoveredFeatureLayerName;
322
- var hoveredFeature = info.object;
323
- var newHoveredFeatureId;
324
- var newHoveredFeatureLayerName;
325
-
326
- if (hoveredFeature) {
327
- newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);
328
- newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);
329
- }
238
+ if (!((_this$state2 = this.state) !== null && _this$state2 !== void 0 && _this$state2.data)) return null;
239
+ return (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "renderLayers", this).call(this);
240
+ };
330
241
 
331
- var highlightColor = this.props.highlightColor;
242
+ _proto.getTileData = function getTileData(loadProps) {
243
+ var _loadOptions;
332
244
 
333
- if (typeof highlightColor === 'function') {
334
- highlightColor = highlightColor(info);
335
- }
245
+ var _this$state3 = this.state,
246
+ data = _this$state3.data,
247
+ binary = _this$state3.binary;
248
+ var index = loadProps.index,
249
+ signal = loadProps.signal;
250
+ var url = (0, _tileset2d.getURLFromTemplate)(data, loadProps);
336
251
 
337
- if (hoveredFeatureId !== newHoveredFeatureId || hoveredFeatureLayerName !== newHoveredFeatureLayerName) {
338
- this.setState({
339
- highlightColor: highlightColor,
340
- hoveredFeatureId: newHoveredFeatureId,
341
- hoveredFeatureLayerName: newHoveredFeatureLayerName
342
- });
343
- }
252
+ if (!url) {
253
+ return Promise.reject('Invalid URL');
344
254
  }
345
- }, {
346
- key: "getPickingInfo",
347
- value: function getPickingInfo(params) {
348
- var info = (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "getPickingInfo", this).call(this, params);
349
- var isWGS84 = Boolean(this.context.viewport.resolution);
350
-
351
- if (this.state.binary && info.index !== -1) {
352
- var data = params.sourceLayer.props.data;
353
- info.object = (0, _gis.binaryToGeojson)(data, {
354
- globalFeatureId: info.index
355
- });
356
- }
357
255
 
358
- if (info.object && !isWGS84) {
359
- info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);
360
- }
256
+ var loadOptions = this.getLoadOptions();
257
+ var fetch = this.props.fetch;
258
+ loadOptions = _objectSpread(_objectSpread({}, loadOptions), {}, {
259
+ mimeType: 'application/x-protobuf',
260
+ mvt: _objectSpread(_objectSpread({}, (_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.mvt), {}, {
261
+ coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',
262
+ tileIndex: index
263
+ }),
264
+ gis: binary ? {
265
+ format: 'binary'
266
+ } : {}
267
+ });
268
+ return fetch(url, {
269
+ propName: 'data',
270
+ layer: this,
271
+ loadOptions: loadOptions,
272
+ signal: signal
273
+ });
274
+ };
275
+
276
+ _proto.renderSubLayers = function renderSubLayers(props) {
277
+ var _props$tile$index = props.tile.index,
278
+ x = _props$tile$index.x,
279
+ y = _props$tile$index.y,
280
+ z = _props$tile$index.z;
281
+ var worldScale = Math.pow(2, z);
282
+ var xScale = WORLD_SIZE / worldScale;
283
+ var yScale = -xScale;
284
+ var xOffset = WORLD_SIZE * x / worldScale;
285
+ var yOffset = WORLD_SIZE * (1 - y / worldScale);
286
+ var modelMatrix = new _core2.Matrix4().scale([xScale, yScale, 1]);
287
+ props.autoHighlight = false;
288
+
289
+ if (!this.context.viewport.resolution) {
290
+ props.modelMatrix = modelMatrix;
291
+ props.coordinateOrigin = [xOffset, yOffset, 0];
292
+ props.coordinateSystem = _core.COORDINATE_SYSTEM.CARTESIAN;
293
+ props.extensions = [].concat((0, _toConsumableArray2.default)(props.extensions || []), [new _extensions.ClipExtension()]);
294
+ }
295
+
296
+ var subLayers = (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "renderSubLayers", this).call(this, props);
361
297
 
362
- return info;
298
+ if (this.state.binary && !(subLayers instanceof _layers.GeoJsonLayer)) {
299
+ _core.log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();
363
300
  }
364
- }, {
365
- key: "getSubLayerPropsByTile",
366
- value: function getSubLayerPropsByTile(tile) {
367
- return {
368
- highlightedObjectIndex: this.getHighlightedObjectIndex(tile),
369
- highlightColor: this.state.highlightColor
370
- };
301
+
302
+ return subLayers;
303
+ };
304
+
305
+ _proto._updateAutoHighlight = function _updateAutoHighlight(info) {
306
+ var uniqueIdProperty = this.props.uniqueIdProperty;
307
+ var _this$state4 = this.state,
308
+ hoveredFeatureId = _this$state4.hoveredFeatureId,
309
+ hoveredFeatureLayerName = _this$state4.hoveredFeatureLayerName;
310
+ var hoveredFeature = info.object;
311
+ var newHoveredFeatureId;
312
+ var newHoveredFeatureLayerName;
313
+
314
+ if (hoveredFeature) {
315
+ newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);
316
+ newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);
371
317
  }
372
- }, {
373
- key: "getHighlightedObjectIndex",
374
- value: function getHighlightedObjectIndex(tile) {
375
- var _this$state5 = this.state,
376
- hoveredFeatureId = _this$state5.hoveredFeatureId,
377
- hoveredFeatureLayerName = _this$state5.hoveredFeatureLayerName,
378
- binary = _this$state5.binary;
379
- var _this$props3 = this.props,
380
- uniqueIdProperty = _this$props3.uniqueIdProperty,
381
- highlightedFeatureId = _this$props3.highlightedFeatureId;
382
- var data = tile.content;
383
- var isHighlighted = isFeatureIdDefined(highlightedFeatureId);
384
- var isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;
385
-
386
- if (!isFeatureIdPresent) {
387
- return -1;
388
- }
389
318
 
390
- var featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;
319
+ var highlightColor = this.props.highlightColor;
391
320
 
392
- if (Array.isArray(data)) {
393
- return data.findIndex(function (feature) {
394
- var isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;
395
- var isMatchingLayer = isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;
396
- return isMatchingId && isMatchingLayer;
397
- });
398
- } else if (data && binary) {
399
- return (0, _findIndexBinary.default)(data, uniqueIdProperty, featureIdToHighlight, isHighlighted ? '' : hoveredFeatureLayerName);
400
- }
321
+ if (typeof highlightColor === 'function') {
322
+ highlightColor = highlightColor(info);
323
+ }
401
324
 
402
- return -1;
325
+ if (hoveredFeatureId !== newHoveredFeatureId || hoveredFeatureLayerName !== newHoveredFeatureLayerName) {
326
+ this.setState({
327
+ highlightColor: highlightColor,
328
+ hoveredFeatureId: newHoveredFeatureId,
329
+ hoveredFeatureLayerName: newHoveredFeatureLayerName
330
+ });
403
331
  }
404
- }, {
405
- key: "_pickObjects",
406
- value: function _pickObjects(maxObjects) {
407
- var _this$context = this.context,
408
- deck = _this$context.deck,
409
- viewport = _this$context.viewport;
410
- var width = viewport.width;
411
- var height = viewport.height;
412
- var x = viewport.x;
413
- var y = viewport.y;
414
- var layerIds = [this.id];
415
- return deck.pickObjects({
416
- x: x,
417
- y: y,
418
- width: width,
419
- height: height,
420
- layerIds: layerIds,
421
- maxObjects: maxObjects
332
+ };
333
+
334
+ _proto.getPickingInfo = function getPickingInfo(params) {
335
+ var info = (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "getPickingInfo", this).call(this, params);
336
+ var isWGS84 = Boolean(this.context.viewport.resolution);
337
+
338
+ if (this.state.binary && info.index !== -1) {
339
+ var data = params.sourceLayer.props.data;
340
+ info.object = (0, _gis.binaryToGeojson)(data, {
341
+ globalFeatureId: info.index
422
342
  });
423
343
  }
424
- }, {
425
- key: "getRenderedFeatures",
426
- value: function getRenderedFeatures() {
427
- var maxFeatures = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
428
344
 
429
- var features = this._pickObjects(maxFeatures);
345
+ if (info.object && !isWGS84) {
346
+ info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);
347
+ }
430
348
 
431
- var featureCache = new Set();
432
- var renderedFeatures = [];
349
+ return info;
350
+ };
351
+
352
+ _proto.getSubLayerPropsByTile = function getSubLayerPropsByTile(tile) {
353
+ return {
354
+ highlightedObjectIndex: this.getHighlightedObjectIndex(tile),
355
+ highlightColor: this.state.highlightColor
356
+ };
357
+ };
358
+
359
+ _proto.getHighlightedObjectIndex = function getHighlightedObjectIndex(tile) {
360
+ var _this$state5 = this.state,
361
+ hoveredFeatureId = _this$state5.hoveredFeatureId,
362
+ hoveredFeatureLayerName = _this$state5.hoveredFeatureLayerName,
363
+ binary = _this$state5.binary;
364
+ var _this$props3 = this.props,
365
+ uniqueIdProperty = _this$props3.uniqueIdProperty,
366
+ highlightedFeatureId = _this$props3.highlightedFeatureId;
367
+ var data = tile.content;
368
+ var isHighlighted = isFeatureIdDefined(highlightedFeatureId);
369
+ var isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;
370
+
371
+ if (!isFeatureIdPresent) {
372
+ return -1;
373
+ }
433
374
 
434
- var _iterator = _createForOfIteratorHelper(features),
435
- _step;
375
+ var featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;
436
376
 
437
- try {
438
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
439
- var f = _step.value;
440
- var featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);
377
+ if (Array.isArray(data)) {
378
+ return data.findIndex(function (feature) {
379
+ var isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;
380
+ var isMatchingLayer = isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;
381
+ return isMatchingId && isMatchingLayer;
382
+ });
383
+ } else if (data && binary) {
384
+ return (0, _findIndexBinary.default)(data, uniqueIdProperty, featureIdToHighlight, isHighlighted ? '' : hoveredFeatureLayerName);
385
+ }
441
386
 
442
- if (featureId === undefined) {
443
- renderedFeatures.push(f.object);
444
- } else if (!featureCache.has(featureId)) {
445
- featureCache.add(featureId);
446
- renderedFeatures.push(f.object);
447
- }
387
+ return -1;
388
+ };
389
+
390
+ _proto._pickObjects = function _pickObjects(maxObjects) {
391
+ var _this$context = this.context,
392
+ deck = _this$context.deck,
393
+ viewport = _this$context.viewport;
394
+ var width = viewport.width;
395
+ var height = viewport.height;
396
+ var x = viewport.x;
397
+ var y = viewport.y;
398
+ var layerIds = [this.id];
399
+ return deck.pickObjects({
400
+ x: x,
401
+ y: y,
402
+ width: width,
403
+ height: height,
404
+ layerIds: layerIds,
405
+ maxObjects: maxObjects
406
+ });
407
+ };
408
+
409
+ _proto.getRenderedFeatures = function getRenderedFeatures() {
410
+ var maxFeatures = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
411
+
412
+ var features = this._pickObjects(maxFeatures);
413
+
414
+ var featureCache = new Set();
415
+ var renderedFeatures = [];
416
+
417
+ var _iterator = _createForOfIteratorHelper(features),
418
+ _step;
419
+
420
+ try {
421
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
422
+ var f = _step.value;
423
+ var featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);
424
+
425
+ if (featureId === undefined) {
426
+ renderedFeatures.push(f.object);
427
+ } else if (!featureCache.has(featureId)) {
428
+ featureCache.add(featureId);
429
+ renderedFeatures.push(f.object);
448
430
  }
449
- } catch (err) {
450
- _iterator.e(err);
451
- } finally {
452
- _iterator.f();
453
431
  }
454
-
455
- return renderedFeatures;
432
+ } catch (err) {
433
+ _iterator.e(err);
434
+ } finally {
435
+ _iterator.f();
456
436
  }
457
- }, {
458
- key: "_setWGS84PropertyForTiles",
459
- value: function _setWGS84PropertyForTiles() {
460
- var _this = this;
461
-
462
- var propName = 'dataInWGS84';
463
- var tileset = this.state.tileset;
464
- tileset.selectedTiles.forEach(function (tile) {
465
- if (!tile.hasOwnProperty(propName)) {
466
- Object.defineProperty(tile, propName, {
467
- get: function get() {
468
- if (!tile.content) {
469
- return null;
470
- }
471
437
 
472
- if (_this.state.binary && Array.isArray(tile.content) && !tile.content.length) {
473
- return [];
474
- }
438
+ return renderedFeatures;
439
+ };
475
440
 
476
- var bbox = tile.bbox;
441
+ _proto._setWGS84PropertyForTiles = function _setWGS84PropertyForTiles() {
442
+ var _this = this;
477
443
 
478
- if (tile._contentWGS84 === undefined && (0, _tileset2d.isGeoBoundingBox)(bbox)) {
479
- var content = _this.state.binary ? (0, _gis.binaryToGeojson)(tile.content) : tile.content;
480
- tile._contentWGS84 = content.map(function (feature) {
481
- return transformTileCoordsToWGS84(feature, bbox, _this.context.viewport);
482
- });
483
- }
444
+ var propName = 'dataInWGS84';
445
+ var tileset = this.state.tileset;
446
+ tileset.selectedTiles.forEach(function (tile) {
447
+ if (!tile.hasOwnProperty(propName)) {
448
+ Object.defineProperty(tile, propName, {
449
+ get: function get() {
450
+ if (!tile.content) {
451
+ return null;
452
+ }
484
453
 
485
- return tile._contentWGS84;
454
+ if (_this.state.binary && Array.isArray(tile.content) && !tile.content.length) {
455
+ return [];
486
456
  }
487
- });
488
- }
489
- });
457
+
458
+ var bbox = tile.bbox;
459
+
460
+ if (tile._contentWGS84 === undefined && (0, _tileset2d.isGeoBoundingBox)(bbox)) {
461
+ var content = _this.state.binary ? (0, _gis.binaryToGeojson)(tile.content) : tile.content;
462
+ tile._contentWGS84 = content.map(function (feature) {
463
+ return transformTileCoordsToWGS84(feature, bbox, _this.context.viewport);
464
+ });
465
+ }
466
+
467
+ return tile._contentWGS84;
468
+ }
469
+ });
470
+ }
471
+ });
472
+ };
473
+
474
+ (0, _createClass2.default)(MVTLayer, [{
475
+ key: "isLoaded",
476
+ get: function get() {
477
+ return this.state && this.state.data && this.state.tileset && (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "isLoaded", this);
490
478
  }
491
479
  }]);
492
480
  return MVTLayer;
493
481
  }(_tileLayer.default);
494
482
 
495
483
  exports.default = MVTLayer;
496
- (0, _defineProperty2.default)(MVTLayer, "layerName", 'MVTLayer');
497
- (0, _defineProperty2.default)(MVTLayer, "defaultProps", defaultProps);
484
+ MVTLayer.layerName = 'MVTLayer';
485
+ MVTLayer.defaultProps = defaultProps;
498
486
 
499
487
  function getFeatureUniqueId(feature, uniqueIdProperty) {
500
488
  if (feature.properties && uniqueIdProperty) {