@deck.gl/geo-layers 8.6.4 → 8.6.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 (53) hide show
  1. package/dist/dist.dev.js +35 -15
  2. package/dist/es5/great-circle-layer/great-circle-layer.js +26 -1
  3. package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
  4. package/dist/es5/h3-layers/h3-cluster-layer.js +149 -87
  5. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  6. package/dist/es5/h3-layers/h3-hexagon-layer.js +321 -226
  7. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  8. package/dist/es5/index.js +9 -9
  9. package/dist/es5/mesh-layer/mesh-layer.js +151 -125
  10. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  11. package/dist/es5/mvt-layer/coordinate-transform.js +45 -19
  12. package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
  13. package/dist/es5/mvt-layer/find-index-binary.js +45 -26
  14. package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
  15. package/dist/es5/mvt-layer/mvt-layer.js +394 -279
  16. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  17. package/dist/es5/s2-layer/s2-geometry.js +43 -32
  18. package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
  19. package/dist/es5/s2-layer/s2-layer.js +104 -69
  20. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  21. package/dist/es5/s2-layer/s2-utils.js +27 -28
  22. package/dist/es5/s2-layer/s2-utils.js.map +1 -1
  23. package/dist/es5/terrain-layer/terrain-layer.js +250 -208
  24. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  25. package/dist/es5/tile-3d-layer/tile-3d-layer.js +382 -329
  26. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  27. package/dist/es5/tile-layer/tile-2d-header.js +183 -119
  28. package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
  29. package/dist/es5/tile-layer/tile-2d-traversal.js +178 -115
  30. package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
  31. package/dist/es5/tile-layer/tile-layer.js +257 -214
  32. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  33. package/dist/es5/tile-layer/tileset-2d.js +435 -290
  34. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  35. package/dist/es5/tile-layer/utils.js +110 -61
  36. package/dist/es5/tile-layer/utils.js.map +1 -1
  37. package/dist/es5/trips-layer/trips-layer.js +81 -44
  38. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  39. package/dist/esm/mvt-layer/mvt-layer.js +26 -0
  40. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  41. package/dist/esm/terrain-layer/terrain-layer.js +8 -10
  42. package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
  43. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  44. package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
  45. package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
  46. package/dist/esm/tile-layer/tile-layer.js +6 -8
  47. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  48. package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
  49. package/dist.min.js +1 -1
  50. package/package.json +2 -2
  51. package/src/mvt-layer/mvt-layer.js +16 -0
  52. package/src/terrain-layer/terrain-layer.js +10 -9
  53. package/src/tile-layer/tile-layer.js +9 -6
@@ -7,6 +7,22 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
+
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
+
10
26
  var _core = require("@luma.gl/core");
11
27
 
12
28
  var _core2 = require("@deck.gl/core");
@@ -23,8 +39,16 @@ var _tiles = require("@loaders.gl/tiles");
23
39
 
24
40
  var _dTiles = require("@loaders.gl/3d-tiles");
25
41
 
26
- const SINGLE_DATA = [0];
27
- const defaultProps = {
42
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
43
+
44
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
45
+
46
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
47
+
48
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
49
+
50
+ var SINGLE_DATA = [0];
51
+ var defaultProps = {
28
52
  getPointColor: {
29
53
  type: 'accessor',
30
54
  value: [0, 0, 0, 255]
@@ -34,401 +58,430 @@ const defaultProps = {
34
58
  loader: _dTiles.Tiles3DLoader,
35
59
  onTilesetLoad: {
36
60
  type: 'function',
37
- value: tileset3d => {},
61
+ value: function value(tileset3d) {},
38
62
  compare: false
39
63
  },
40
64
  onTileLoad: {
41
65
  type: 'function',
42
- value: tileHeader => {},
66
+ value: function value(tileHeader) {},
43
67
  compare: false
44
68
  },
45
69
  onTileUnload: {
46
70
  type: 'function',
47
- value: tileHeader => {},
71
+ value: function value(tileHeader) {},
48
72
  compare: false
49
73
  },
50
74
  onTileError: {
51
75
  type: 'function',
52
- value: (tile, message, url) => {},
76
+ value: function value(tile, message, url) {},
53
77
  compare: false
54
78
  },
55
79
  _getMeshColor: {
56
80
  type: 'function',
57
- value: tileHeader => [255, 255, 255],
81
+ value: function value(tileHeader) {
82
+ return [255, 255, 255];
83
+ },
58
84
  compare: false
59
85
  }
60
86
  };
61
87
 
62
- class Tile3DLayer extends _core2.CompositeLayer {
63
- initializeState() {
64
- if ('onTileLoadFail' in this.props) {
65
- _core2.log.removed('onTileLoadFail', 'onTileError')();
66
- }
88
+ var Tile3DLayer = function (_CompositeLayer) {
89
+ (0, _inherits2.default)(Tile3DLayer, _CompositeLayer);
67
90
 
68
- this.state = {
69
- layerMap: {},
70
- tileset3d: null,
71
- activeViewports: {},
72
- lastUpdatedViewports: null
73
- };
74
- }
91
+ var _super = _createSuper(Tile3DLayer);
75
92
 
76
- get isLoaded() {
77
- const {
78
- tileset3d
79
- } = this.state;
80
- return tileset3d && tileset3d.isLoaded();
93
+ function Tile3DLayer() {
94
+ (0, _classCallCheck2.default)(this, Tile3DLayer);
95
+ return _super.apply(this, arguments);
81
96
  }
82
97
 
83
- shouldUpdateState({
84
- changeFlags
85
- }) {
86
- return changeFlags.somethingChanged;
87
- }
98
+ (0, _createClass2.default)(Tile3DLayer, [{
99
+ key: "initializeState",
100
+ value: function initializeState() {
101
+ if ('onTileLoadFail' in this.props) {
102
+ _core2.log.removed('onTileLoadFail', 'onTileError')();
103
+ }
88
104
 
89
- updateState({
90
- props,
91
- oldProps,
92
- changeFlags
93
- }) {
94
- if (props.data && props.data !== oldProps.data) {
95
- this._loadTileset(props.data);
105
+ this.state = {
106
+ layerMap: {},
107
+ tileset3d: null,
108
+ activeViewports: {},
109
+ lastUpdatedViewports: null
110
+ };
111
+ }
112
+ }, {
113
+ key: "shouldUpdateState",
114
+ value: function shouldUpdateState(_ref) {
115
+ var changeFlags = _ref.changeFlags;
116
+ return changeFlags.somethingChanged;
96
117
  }
118
+ }, {
119
+ key: "updateState",
120
+ value: function updateState(_ref2) {
121
+ var props = _ref2.props,
122
+ oldProps = _ref2.oldProps,
123
+ changeFlags = _ref2.changeFlags;
124
+
125
+ if (props.data && props.data !== oldProps.data) {
126
+ this._loadTileset(props.data);
127
+ }
97
128
 
98
- if (changeFlags.viewportChanged) {
99
- const {
100
- activeViewports
101
- } = this.state;
102
- const viewportsNumber = Object.keys(activeViewports).length;
129
+ if (changeFlags.viewportChanged) {
130
+ var activeViewports = this.state.activeViewports;
131
+ var viewportsNumber = Object.keys(activeViewports).length;
103
132
 
104
- if (viewportsNumber) {
105
- this._updateTileset(activeViewports);
133
+ if (viewportsNumber) {
134
+ this._updateTileset(activeViewports);
106
135
 
107
- this.state.lastUpdatedViewports = activeViewports;
108
- this.state.activeViewports = {};
136
+ this.state.lastUpdatedViewports = activeViewports;
137
+ this.state.activeViewports = {};
138
+ }
109
139
  }
110
- }
111
140
 
112
- if (changeFlags.propsChanged) {
113
- const {
114
- layerMap
115
- } = this.state;
141
+ if (changeFlags.propsChanged) {
142
+ var layerMap = this.state.layerMap;
116
143
 
117
- for (const key in layerMap) {
118
- layerMap[key].needsUpdate = true;
144
+ for (var key in layerMap) {
145
+ layerMap[key].needsUpdate = true;
146
+ }
119
147
  }
120
148
  }
121
- }
122
-
123
- activateViewport(viewport) {
124
- const {
125
- activeViewports,
126
- lastUpdatedViewports
127
- } = this.state;
128
- this.internalState.viewport = viewport;
129
- activeViewports[viewport.id] = viewport;
130
- const lastViewport = lastUpdatedViewports === null || lastUpdatedViewports === void 0 ? void 0 : lastUpdatedViewports[viewport.id];
131
-
132
- if (!lastViewport || !viewport.equals(lastViewport)) {
133
- this.setChangeFlags({
134
- viewportChanged: true
135
- });
136
- this.setNeedsUpdate();
149
+ }, {
150
+ key: "activateViewport",
151
+ value: function activateViewport(viewport) {
152
+ var _this$state = this.state,
153
+ activeViewports = _this$state.activeViewports,
154
+ lastUpdatedViewports = _this$state.lastUpdatedViewports;
155
+ this.internalState.viewport = viewport;
156
+ activeViewports[viewport.id] = viewport;
157
+ var lastViewport = lastUpdatedViewports === null || lastUpdatedViewports === void 0 ? void 0 : lastUpdatedViewports[viewport.id];
158
+
159
+ if (!lastViewport || !viewport.equals(lastViewport)) {
160
+ this.setChangeFlags({
161
+ viewportChanged: true
162
+ });
163
+ this.setNeedsUpdate();
164
+ }
137
165
  }
138
- }
166
+ }, {
167
+ key: "getPickingInfo",
168
+ value: function getPickingInfo(_ref3) {
169
+ var info = _ref3.info,
170
+ sourceLayer = _ref3.sourceLayer;
171
+ var layerMap = this.state.layerMap;
172
+ var layerId = sourceLayer && sourceLayer.id;
173
+
174
+ if (layerId) {
175
+ var substr = layerId.substring(this.id.length + 1);
176
+ var tileId = substr.substring(substr.indexOf('-') + 1);
177
+ info.object = layerMap[tileId] && layerMap[tileId].tile;
178
+ }
139
179
 
140
- getPickingInfo({
141
- info,
142
- sourceLayer
143
- }) {
144
- const {
145
- layerMap
146
- } = this.state;
147
- const layerId = sourceLayer && sourceLayer.id;
148
-
149
- if (layerId) {
150
- const substr = layerId.substring(this.id.length + 1);
151
- const tileId = substr.substring(substr.indexOf('-') + 1);
152
- info.object = layerMap[tileId] && layerMap[tileId].tile;
180
+ return info;
181
+ }
182
+ }, {
183
+ key: "filterSubLayer",
184
+ value: function filterSubLayer(_ref4) {
185
+ var layer = _ref4.layer,
186
+ viewport = _ref4.viewport;
187
+ var tile = layer.props.tile;
188
+ var viewportId = viewport.id;
189
+ return tile.selected && tile.viewportIds.includes(viewportId);
153
190
  }
191
+ }, {
192
+ key: "_updateAutoHighlight",
193
+ value: function _updateAutoHighlight(info) {
194
+ if (info.sourceLayer) {
195
+ info.sourceLayer.updateAutoHighlight(info);
196
+ }
197
+ }
198
+ }, {
199
+ key: "_loadTileset",
200
+ value: function () {
201
+ var _loadTileset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tilesetUrl) {
202
+ var _this$props$loadOptio, loadOptions, loader, options, preloadOptions, tilesetJson, tileset3d;
203
+
204
+ return _regenerator.default.wrap(function _callee$(_context) {
205
+ while (1) {
206
+ switch (_context.prev = _context.next) {
207
+ case 0:
208
+ _this$props$loadOptio = this.props.loadOptions, loadOptions = _this$props$loadOptio === void 0 ? {} : _this$props$loadOptio;
209
+ loader = this.props.loader || this.props.loaders;
210
+
211
+ if (Array.isArray(loader)) {
212
+ loader = loader[0];
213
+ }
214
+
215
+ options = {
216
+ loadOptions: _objectSpread({}, loadOptions)
217
+ };
218
+
219
+ if (!loader.preload) {
220
+ _context.next = 10;
221
+ break;
222
+ }
223
+
224
+ _context.next = 7;
225
+ return loader.preload(tilesetUrl, loadOptions);
226
+
227
+ case 7:
228
+ preloadOptions = _context.sent;
229
+
230
+ if (preloadOptions.headers) {
231
+ options.loadOptions.fetch = _objectSpread(_objectSpread({}, options.loadOptions.fetch), {}, {
232
+ headers: preloadOptions.headers
233
+ });
234
+ }
235
+
236
+ Object.assign(options, preloadOptions);
237
+
238
+ case 10:
239
+ _context.next = 12;
240
+ return (0, _core3.load)(tilesetUrl, loader, options.loadOptions);
241
+
242
+ case 12:
243
+ tilesetJson = _context.sent;
244
+ tileset3d = new _tiles.Tileset3D(tilesetJson, _objectSpread({
245
+ onTileLoad: this._onTileLoad.bind(this),
246
+ onTileUnload: this._onTileUnload.bind(this),
247
+ onTileLoadFail: this.props.onTileError
248
+ }, options));
249
+ this.setState({
250
+ tileset3d: tileset3d,
251
+ layerMap: {}
252
+ });
253
+
254
+ this._updateTileset(this.state.activeViewports);
255
+
256
+ this.props.onTilesetLoad(tileset3d);
257
+
258
+ case 17:
259
+ case "end":
260
+ return _context.stop();
261
+ }
262
+ }
263
+ }, _callee, this);
264
+ }));
265
+
266
+ function _loadTileset(_x) {
267
+ return _loadTileset2.apply(this, arguments);
268
+ }
154
269
 
155
- return info;
156
- }
270
+ return _loadTileset;
271
+ }()
272
+ }, {
273
+ key: "_onTileLoad",
274
+ value: function _onTileLoad(tileHeader) {
275
+ var lastUpdatedViewports = this.state.lastUpdatedViewports;
276
+ this.props.onTileLoad(tileHeader);
157
277
 
158
- filterSubLayer({
159
- layer,
160
- viewport
161
- }) {
162
- const {
163
- tile
164
- } = layer.props;
165
- const {
166
- id: viewportId
167
- } = viewport;
168
- return tile.selected && tile.viewportIds.includes(viewportId);
169
- }
278
+ this._updateTileset(lastUpdatedViewports);
170
279
 
171
- _updateAutoHighlight(info) {
172
- if (info.sourceLayer) {
173
- info.sourceLayer.updateAutoHighlight(info);
280
+ this.setNeedsUpdate();
174
281
  }
175
- }
176
-
177
- async _loadTileset(tilesetUrl) {
178
- const {
179
- loadOptions = {}
180
- } = this.props;
181
- let loader = this.props.loader || this.props.loaders;
182
-
183
- if (Array.isArray(loader)) {
184
- loader = loader[0];
282
+ }, {
283
+ key: "_onTileUnload",
284
+ value: function _onTileUnload(tileHeader) {
285
+ delete this.state.layerMap[tileHeader.id];
286
+ this.props.onTileUnload(tileHeader);
185
287
  }
186
-
187
- const options = {
188
- loadOptions: { ...loadOptions
288
+ }, {
289
+ key: "_updateTileset",
290
+ value: function _updateTileset(viewports) {
291
+ var tileset3d = this.state.tileset3d;
292
+ var timeline = this.context.timeline;
293
+ var viewportsNumber = Object.keys(viewports).length;
294
+
295
+ if (!timeline || !viewportsNumber || !tileset3d) {
296
+ return;
189
297
  }
190
- };
191
298
 
192
- if (loader.preload) {
193
- const preloadOptions = await loader.preload(tilesetUrl, loadOptions);
299
+ var frameNumber = tileset3d.update(Object.values(viewports));
300
+ var tilesetChanged = this.state.frameNumber !== frameNumber;
194
301
 
195
- if (preloadOptions.headers) {
196
- options.loadOptions.fetch = { ...options.loadOptions.fetch,
197
- headers: preloadOptions.headers
198
- };
302
+ if (tilesetChanged) {
303
+ this.setState({
304
+ frameNumber: frameNumber
305
+ });
199
306
  }
200
-
201
- Object.assign(options, preloadOptions);
202
307
  }
308
+ }, {
309
+ key: "_getSubLayer",
310
+ value: function _getSubLayer(tileHeader, oldLayer) {
311
+ if (!tileHeader.content) {
312
+ return null;
313
+ }
203
314
 
204
- const tilesetJson = await (0, _core3.load)(tilesetUrl, loader, options.loadOptions);
205
- const tileset3d = new _tiles.Tileset3D(tilesetJson, {
206
- onTileLoad: this._onTileLoad.bind(this),
207
- onTileUnload: this._onTileUnload.bind(this),
208
- onTileLoadFail: this.props.onTileError,
209
- ...options
210
- });
211
- this.setState({
212
- tileset3d,
213
- layerMap: {}
214
- });
215
-
216
- this._updateTileset(this.state.activeViewports);
217
-
218
- this.props.onTilesetLoad(tileset3d);
219
- }
220
-
221
- _onTileLoad(tileHeader) {
222
- const {
223
- lastUpdatedViewports
224
- } = this.state;
225
- this.props.onTileLoad(tileHeader);
226
-
227
- this._updateTileset(lastUpdatedViewports);
315
+ switch (tileHeader.type) {
316
+ case _tiles.TILE_TYPE.POINTCLOUD:
317
+ return this._makePointCloudLayer(tileHeader, oldLayer);
228
318
 
229
- this.setNeedsUpdate();
230
- }
319
+ case _tiles.TILE_TYPE.SCENEGRAPH:
320
+ return this._make3DModelLayer(tileHeader, oldLayer);
231
321
 
232
- _onTileUnload(tileHeader) {
233
- delete this.state.layerMap[tileHeader.id];
234
- this.props.onTileUnload(tileHeader);
235
- }
322
+ case _tiles.TILE_TYPE.MESH:
323
+ return this._makeSimpleMeshLayer(tileHeader, oldLayer);
236
324
 
237
- _updateTileset(viewports) {
238
- const {
239
- tileset3d
240
- } = this.state;
241
- const {
242
- timeline
243
- } = this.context;
244
- const viewportsNumber = Object.keys(viewports).length;
245
-
246
- if (!timeline || !viewportsNumber || !tileset3d) {
247
- return;
325
+ default:
326
+ throw new Error("Tile3DLayer: Failed to render layer of type ".concat(tileHeader.content.type));
327
+ }
248
328
  }
329
+ }, {
330
+ key: "_makePointCloudLayer",
331
+ value: function _makePointCloudLayer(tileHeader, oldLayer) {
332
+ var _tileHeader$content = tileHeader.content,
333
+ attributes = _tileHeader$content.attributes,
334
+ pointCount = _tileHeader$content.pointCount,
335
+ constantRGBA = _tileHeader$content.constantRGBA,
336
+ cartographicOrigin = _tileHeader$content.cartographicOrigin,
337
+ modelMatrix = _tileHeader$content.modelMatrix;
338
+ var positions = attributes.positions,
339
+ normals = attributes.normals,
340
+ colors = attributes.colors;
341
+
342
+ if (!positions) {
343
+ return null;
344
+ }
249
345
 
250
- const frameNumber = tileset3d.update(Object.values(viewports));
251
- const tilesetChanged = this.state.frameNumber !== frameNumber;
252
-
253
- if (tilesetChanged) {
254
- this.setState({
255
- frameNumber
346
+ var data = oldLayer && oldLayer.props.data || {
347
+ header: {
348
+ vertexCount: pointCount
349
+ },
350
+ attributes: {
351
+ POSITION: positions,
352
+ NORMAL: normals,
353
+ COLOR_0: colors
354
+ }
355
+ };
356
+ var _this$props = this.props,
357
+ pointSize = _this$props.pointSize,
358
+ getPointColor = _this$props.getPointColor;
359
+ var SubLayerClass = this.getSubLayerClass('pointcloud', _layers.PointCloudLayer);
360
+ return new SubLayerClass({
361
+ pointSize: pointSize
362
+ }, this.getSubLayerProps({
363
+ id: 'pointcloud'
364
+ }), {
365
+ id: "".concat(this.id, "-pointcloud-").concat(tileHeader.id),
366
+ tile: tileHeader,
367
+ data: data,
368
+ coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
369
+ coordinateOrigin: cartographicOrigin,
370
+ modelMatrix: modelMatrix,
371
+ getColor: constantRGBA || getPointColor,
372
+ _offset: 0
256
373
  });
257
374
  }
258
- }
259
-
260
- _getSubLayer(tileHeader, oldLayer) {
261
- if (!tileHeader.content) {
262
- return null;
375
+ }, {
376
+ key: "_make3DModelLayer",
377
+ value: function _make3DModelLayer(tileHeader) {
378
+ var _tileHeader$content2 = tileHeader.content,
379
+ gltf = _tileHeader$content2.gltf,
380
+ instances = _tileHeader$content2.instances,
381
+ cartographicOrigin = _tileHeader$content2.cartographicOrigin,
382
+ modelMatrix = _tileHeader$content2.modelMatrix;
383
+ var SubLayerClass = this.getSubLayerClass('scenegraph', _meshLayers.ScenegraphLayer);
384
+ return new SubLayerClass({
385
+ _lighting: 'pbr'
386
+ }, this.getSubLayerProps({
387
+ id: 'scenegraph'
388
+ }), {
389
+ id: "".concat(this.id, "-scenegraph-").concat(tileHeader.id),
390
+ tile: tileHeader,
391
+ data: instances || SINGLE_DATA,
392
+ scenegraph: gltf,
393
+ coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
394
+ coordinateOrigin: cartographicOrigin,
395
+ modelMatrix: modelMatrix,
396
+ getTransformMatrix: function getTransformMatrix(instance) {
397
+ return instance.modelMatrix;
398
+ },
399
+ getPosition: [0, 0, 0],
400
+ _offset: 0
401
+ });
263
402
  }
264
-
265
- switch (tileHeader.type) {
266
- case _tiles.TILE_TYPE.POINTCLOUD:
267
- return this._makePointCloudLayer(tileHeader, oldLayer);
268
-
269
- case _tiles.TILE_TYPE.SCENEGRAPH:
270
- return this._make3DModelLayer(tileHeader, oldLayer);
271
-
272
- case _tiles.TILE_TYPE.MESH:
273
- return this._makeSimpleMeshLayer(tileHeader, oldLayer);
274
-
275
- default:
276
- throw new Error("Tile3DLayer: Failed to render layer of type ".concat(tileHeader.content.type));
403
+ }, {
404
+ key: "_makeSimpleMeshLayer",
405
+ value: function _makeSimpleMeshLayer(tileHeader, oldLayer) {
406
+ var content = tileHeader.content;
407
+ var attributes = content.attributes,
408
+ indices = content.indices,
409
+ modelMatrix = content.modelMatrix,
410
+ cartographicOrigin = content.cartographicOrigin,
411
+ material = content.material,
412
+ featureIds = content.featureIds;
413
+ var _getMeshColor = this.props._getMeshColor;
414
+ var geometry = oldLayer && oldLayer.props.mesh || new _core.Geometry({
415
+ drawMode: 4,
416
+ attributes: getMeshGeometry(attributes),
417
+ indices: indices
418
+ });
419
+ var SubLayerClass = this.getSubLayerClass('mesh', _meshLayer.default);
420
+ return new SubLayerClass(this.getSubLayerProps({
421
+ id: 'mesh'
422
+ }), {
423
+ id: "".concat(this.id, "-mesh-").concat(tileHeader.id),
424
+ tile: tileHeader,
425
+ mesh: geometry,
426
+ data: SINGLE_DATA,
427
+ getColor: _getMeshColor(tileHeader),
428
+ pbrMaterial: material,
429
+ modelMatrix: modelMatrix,
430
+ coordinateOrigin: cartographicOrigin,
431
+ coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
432
+ featureIds: featureIds,
433
+ _offset: 0
434
+ });
277
435
  }
278
- }
436
+ }, {
437
+ key: "renderLayers",
438
+ value: function renderLayers() {
439
+ var _this = this;
279
440
 
280
- _makePointCloudLayer(tileHeader, oldLayer) {
281
- const {
282
- attributes,
283
- pointCount,
284
- constantRGBA,
285
- cartographicOrigin,
286
- modelMatrix
287
- } = tileHeader.content;
288
- const {
289
- positions,
290
- normals,
291
- colors
292
- } = attributes;
293
-
294
- if (!positions) {
295
- return null;
296
- }
441
+ var _this$state2 = this.state,
442
+ tileset3d = _this$state2.tileset3d,
443
+ layerMap = _this$state2.layerMap;
297
444
 
298
- const data = oldLayer && oldLayer.props.data || {
299
- header: {
300
- vertexCount: pointCount
301
- },
302
- attributes: {
303
- POSITION: positions,
304
- NORMAL: normals,
305
- COLOR_0: colors
445
+ if (!tileset3d) {
446
+ return null;
306
447
  }
307
- };
308
- const {
309
- pointSize,
310
- getPointColor
311
- } = this.props;
312
- const SubLayerClass = this.getSubLayerClass('pointcloud', _layers.PointCloudLayer);
313
- return new SubLayerClass({
314
- pointSize
315
- }, this.getSubLayerProps({
316
- id: 'pointcloud'
317
- }), {
318
- id: "".concat(this.id, "-pointcloud-").concat(tileHeader.id),
319
- tile: tileHeader,
320
- data,
321
- coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
322
- coordinateOrigin: cartographicOrigin,
323
- modelMatrix,
324
- getColor: constantRGBA || getPointColor,
325
- _offset: 0
326
- });
327
- }
328
-
329
- _make3DModelLayer(tileHeader) {
330
- const {
331
- gltf,
332
- instances,
333
- cartographicOrigin,
334
- modelMatrix
335
- } = tileHeader.content;
336
- const SubLayerClass = this.getSubLayerClass('scenegraph', _meshLayers.ScenegraphLayer);
337
- return new SubLayerClass({
338
- _lighting: 'pbr'
339
- }, this.getSubLayerProps({
340
- id: 'scenegraph'
341
- }), {
342
- id: "".concat(this.id, "-scenegraph-").concat(tileHeader.id),
343
- tile: tileHeader,
344
- data: instances || SINGLE_DATA,
345
- scenegraph: gltf,
346
- coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
347
- coordinateOrigin: cartographicOrigin,
348
- modelMatrix,
349
- getTransformMatrix: instance => instance.modelMatrix,
350
- getPosition: [0, 0, 0],
351
- _offset: 0
352
- });
353
- }
354
-
355
- _makeSimpleMeshLayer(tileHeader, oldLayer) {
356
- const content = tileHeader.content;
357
- const {
358
- attributes,
359
- indices,
360
- modelMatrix,
361
- cartographicOrigin,
362
- material,
363
- featureIds
364
- } = content;
365
- const {
366
- _getMeshColor
367
- } = this.props;
368
- const geometry = oldLayer && oldLayer.props.mesh || new _core.Geometry({
369
- drawMode: 4,
370
- attributes: getMeshGeometry(attributes),
371
- indices
372
- });
373
- const SubLayerClass = this.getSubLayerClass('mesh', _meshLayer.default);
374
- return new SubLayerClass(this.getSubLayerProps({
375
- id: 'mesh'
376
- }), {
377
- id: "".concat(this.id, "-mesh-").concat(tileHeader.id),
378
- tile: tileHeader,
379
- mesh: geometry,
380
- data: SINGLE_DATA,
381
- getColor: _getMeshColor(tileHeader),
382
- pbrMaterial: material,
383
- modelMatrix,
384
- coordinateOrigin: cartographicOrigin,
385
- coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
386
- featureIds,
387
- _offset: 0
388
- });
389
- }
390
-
391
- renderLayers() {
392
- const {
393
- tileset3d,
394
- layerMap
395
- } = this.state;
396
448
 
397
- if (!tileset3d) {
398
- return null;
399
- }
400
-
401
- return tileset3d.tiles.map(tile => {
402
- const layerCache = layerMap[tile.id] = layerMap[tile.id] || {
403
- tile
404
- };
405
- let {
406
- layer
407
- } = layerCache;
408
-
409
- if (tile.selected) {
410
- if (!layer) {
411
- layer = this._getSubLayer(tile);
412
- } else if (layerCache.needsUpdate) {
413
- layer = this._getSubLayer(tile, layer);
414
- layerCache.needsUpdate = false;
449
+ return tileset3d.tiles.map(function (tile) {
450
+ var layerCache = layerMap[tile.id] = layerMap[tile.id] || {
451
+ tile: tile
452
+ };
453
+ var layer = layerCache.layer;
454
+
455
+ if (tile.selected) {
456
+ if (!layer) {
457
+ layer = _this._getSubLayer(tile);
458
+ } else if (layerCache.needsUpdate) {
459
+ layer = _this._getSubLayer(tile, layer);
460
+ layerCache.needsUpdate = false;
461
+ }
415
462
  }
416
- }
417
463
 
418
- layerCache.layer = layer;
419
- return layer;
420
- }).filter(Boolean);
421
- }
422
-
423
- }
464
+ layerCache.layer = layer;
465
+ return layer;
466
+ }).filter(Boolean);
467
+ }
468
+ }, {
469
+ key: "isLoaded",
470
+ get: function get() {
471
+ var tileset3d = this.state.tileset3d;
472
+ return tileset3d && tileset3d.isLoaded();
473
+ }
474
+ }]);
475
+ return Tile3DLayer;
476
+ }(_core2.CompositeLayer);
424
477
 
425
478
  exports.default = Tile3DLayer;
426
479
 
427
480
  function getMeshGeometry(contentAttributes) {
428
- const attributes = {};
429
- attributes.positions = { ...contentAttributes.positions,
481
+ var attributes = {};
482
+ attributes.positions = _objectSpread(_objectSpread({}, contentAttributes.positions), {}, {
430
483
  value: new Float32Array(contentAttributes.positions.value)
431
- };
484
+ });
432
485
 
433
486
  if (contentAttributes.normals) {
434
487
  attributes.normals = contentAttributes.normals;