@deck.gl/geo-layers 8.6.0-beta.1 → 8.6.3
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.
- package/dist/dist.dev.js +1449 -1449
- package/dist/es5/great-circle-layer/great-circle-layer.js +1 -26
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +87 -149
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js +226 -321
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +9 -9
- package/dist/es5/mesh-layer/mesh-layer.js +125 -151
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/coordinate-transform.js +19 -45
- package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/es5/mvt-layer/find-index-binary.js +26 -45
- package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +282 -374
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-geometry.js +32 -43
- package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
- package/dist/es5/s2-layer/s2-layer.js +69 -104
- package/dist/es5/s2-layer/s2-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-utils.js +28 -27
- package/dist/es5/s2-layer/s2-utils.js.map +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js +208 -254
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +329 -382
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js +119 -183
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js +115 -178
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +214 -258
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +290 -435
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +61 -110
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/es5/trips-layer/trips-layer.js +44 -81
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +2 -2
|
@@ -7,22 +7,6 @@ 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
|
-
|
|
26
10
|
var _core = require("@luma.gl/core");
|
|
27
11
|
|
|
28
12
|
var _core2 = require("@deck.gl/core");
|
|
@@ -39,16 +23,8 @@ var _tiles = require("@loaders.gl/tiles");
|
|
|
39
23
|
|
|
40
24
|
var _dTiles = require("@loaders.gl/3d-tiles");
|
|
41
25
|
|
|
42
|
-
|
|
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 = {
|
|
26
|
+
const SINGLE_DATA = [0];
|
|
27
|
+
const defaultProps = {
|
|
52
28
|
getPointColor: {
|
|
53
29
|
type: 'accessor',
|
|
54
30
|
value: [0, 0, 0, 255]
|
|
@@ -58,430 +34,401 @@ var defaultProps = {
|
|
|
58
34
|
loader: _dTiles.Tiles3DLoader,
|
|
59
35
|
onTilesetLoad: {
|
|
60
36
|
type: 'function',
|
|
61
|
-
value:
|
|
37
|
+
value: tileset3d => {},
|
|
62
38
|
compare: false
|
|
63
39
|
},
|
|
64
40
|
onTileLoad: {
|
|
65
41
|
type: 'function',
|
|
66
|
-
value:
|
|
42
|
+
value: tileHeader => {},
|
|
67
43
|
compare: false
|
|
68
44
|
},
|
|
69
45
|
onTileUnload: {
|
|
70
46
|
type: 'function',
|
|
71
|
-
value:
|
|
47
|
+
value: tileHeader => {},
|
|
72
48
|
compare: false
|
|
73
49
|
},
|
|
74
50
|
onTileError: {
|
|
75
51
|
type: 'function',
|
|
76
|
-
value:
|
|
52
|
+
value: (tile, message, url) => {},
|
|
77
53
|
compare: false
|
|
78
54
|
},
|
|
79
55
|
_getMeshColor: {
|
|
80
56
|
type: 'function',
|
|
81
|
-
value:
|
|
82
|
-
return [255, 255, 255];
|
|
83
|
-
},
|
|
57
|
+
value: tileHeader => [255, 255, 255],
|
|
84
58
|
compare: false
|
|
85
59
|
}
|
|
86
60
|
};
|
|
87
61
|
|
|
88
|
-
|
|
89
|
-
(
|
|
62
|
+
class Tile3DLayer extends _core2.CompositeLayer {
|
|
63
|
+
initializeState() {
|
|
64
|
+
if ('onTileLoadFail' in this.props) {
|
|
65
|
+
_core2.log.removed('onTileLoadFail', 'onTileError')();
|
|
66
|
+
}
|
|
90
67
|
|
|
91
|
-
|
|
68
|
+
this.state = {
|
|
69
|
+
layerMap: {},
|
|
70
|
+
tileset3d: null,
|
|
71
|
+
activeViewports: {},
|
|
72
|
+
lastUpdatedViewports: null
|
|
73
|
+
};
|
|
74
|
+
}
|
|
92
75
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
76
|
+
get isLoaded() {
|
|
77
|
+
const {
|
|
78
|
+
tileset3d
|
|
79
|
+
} = this.state;
|
|
80
|
+
return tileset3d && tileset3d.isLoaded();
|
|
96
81
|
}
|
|
97
82
|
|
|
98
|
-
(
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
83
|
+
shouldUpdateState({
|
|
84
|
+
changeFlags
|
|
85
|
+
}) {
|
|
86
|
+
return changeFlags.somethingChanged;
|
|
87
|
+
}
|
|
104
88
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}, {
|
|
113
|
-
key: "shouldUpdateState",
|
|
114
|
-
value: function shouldUpdateState(_ref) {
|
|
115
|
-
var changeFlags = _ref.changeFlags;
|
|
116
|
-
return changeFlags.somethingChanged;
|
|
89
|
+
updateState({
|
|
90
|
+
props,
|
|
91
|
+
oldProps,
|
|
92
|
+
changeFlags
|
|
93
|
+
}) {
|
|
94
|
+
if (props.data && props.data !== oldProps.data) {
|
|
95
|
+
this._loadTileset(props.data);
|
|
117
96
|
}
|
|
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
|
-
}
|
|
128
97
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
98
|
+
if (changeFlags.viewportChanged) {
|
|
99
|
+
const {
|
|
100
|
+
activeViewports
|
|
101
|
+
} = this.state;
|
|
102
|
+
const viewportsNumber = Object.keys(activeViewports).length;
|
|
132
103
|
|
|
133
|
-
|
|
134
|
-
|
|
104
|
+
if (viewportsNumber) {
|
|
105
|
+
this._updateTileset(activeViewports);
|
|
135
106
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
107
|
+
this.state.lastUpdatedViewports = activeViewports;
|
|
108
|
+
this.state.activeViewports = {};
|
|
139
109
|
}
|
|
110
|
+
}
|
|
140
111
|
|
|
141
|
-
|
|
142
|
-
|
|
112
|
+
if (changeFlags.propsChanged) {
|
|
113
|
+
const {
|
|
114
|
+
layerMap
|
|
115
|
+
} = this.state;
|
|
143
116
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
117
|
+
for (const key in layerMap) {
|
|
118
|
+
layerMap[key].needsUpdate = true;
|
|
147
119
|
}
|
|
148
120
|
}
|
|
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
|
-
}
|
|
165
|
-
}
|
|
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
|
-
}
|
|
121
|
+
}
|
|
179
122
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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();
|
|
190
137
|
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
138
|
+
}
|
|
139
|
+
|
|
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;
|
|
197
153
|
}
|
|
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
|
-
}
|
|
269
154
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}, {
|
|
273
|
-
key: "_onTileLoad",
|
|
274
|
-
value: function _onTileLoad(tileHeader) {
|
|
275
|
-
var lastUpdatedViewports = this.state.lastUpdatedViewports;
|
|
276
|
-
this.props.onTileLoad(tileHeader);
|
|
155
|
+
return info;
|
|
156
|
+
}
|
|
277
157
|
|
|
278
|
-
|
|
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
|
+
}
|
|
279
170
|
|
|
280
|
-
|
|
171
|
+
_updateAutoHighlight(info) {
|
|
172
|
+
if (info.sourceLayer) {
|
|
173
|
+
info.sourceLayer.updateAutoHighlight(info);
|
|
281
174
|
}
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
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];
|
|
287
185
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
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;
|
|
186
|
+
|
|
187
|
+
const options = {
|
|
188
|
+
loadOptions: { ...loadOptions
|
|
297
189
|
}
|
|
190
|
+
};
|
|
298
191
|
|
|
299
|
-
|
|
300
|
-
|
|
192
|
+
if (loader.preload) {
|
|
193
|
+
const preloadOptions = await loader.preload(tilesetUrl, loadOptions);
|
|
301
194
|
|
|
302
|
-
if (
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
}
|
|
195
|
+
if (preloadOptions.headers) {
|
|
196
|
+
options.loadOptions.fetch = { ...options.loadOptions.fetch,
|
|
197
|
+
headers: preloadOptions.headers
|
|
198
|
+
};
|
|
306
199
|
}
|
|
200
|
+
|
|
201
|
+
Object.assign(options, preloadOptions);
|
|
307
202
|
}
|
|
308
|
-
}, {
|
|
309
|
-
key: "_getSubLayer",
|
|
310
|
-
value: function _getSubLayer(tileHeader, oldLayer) {
|
|
311
|
-
if (!tileHeader.content) {
|
|
312
|
-
return null;
|
|
313
|
-
}
|
|
314
203
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
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
|
+
}
|
|
318
220
|
|
|
319
|
-
|
|
320
|
-
|
|
221
|
+
_onTileLoad(tileHeader) {
|
|
222
|
+
const {
|
|
223
|
+
lastUpdatedViewports
|
|
224
|
+
} = this.state;
|
|
225
|
+
this.props.onTileLoad(tileHeader);
|
|
321
226
|
|
|
322
|
-
|
|
323
|
-
return this._makeSimpleMeshLayer(tileHeader, oldLayer);
|
|
227
|
+
this._updateTileset(lastUpdatedViewports);
|
|
324
228
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
229
|
+
this.setNeedsUpdate();
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
_onTileUnload(tileHeader) {
|
|
233
|
+
delete this.state.layerMap[tileHeader.id];
|
|
234
|
+
this.props.onTileUnload(tileHeader);
|
|
235
|
+
}
|
|
236
|
+
|
|
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;
|
|
328
248
|
}
|
|
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
|
-
}
|
|
345
249
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
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
|
|
250
|
+
const frameNumber = tileset3d.update(Object.values(viewports));
|
|
251
|
+
const tilesetChanged = this.state.frameNumber !== frameNumber;
|
|
252
|
+
|
|
253
|
+
if (tilesetChanged) {
|
|
254
|
+
this.setState({
|
|
255
|
+
frameNumber
|
|
373
256
|
});
|
|
374
257
|
}
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
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
|
-
});
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
_getSubLayer(tileHeader, oldLayer) {
|
|
261
|
+
if (!tileHeader.content) {
|
|
262
|
+
return null;
|
|
402
263
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
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
|
-
});
|
|
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));
|
|
435
277
|
}
|
|
436
|
-
}
|
|
437
|
-
key: "renderLayers",
|
|
438
|
-
value: function renderLayers() {
|
|
439
|
-
var _this = this;
|
|
278
|
+
}
|
|
440
279
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
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
|
+
}
|
|
444
297
|
|
|
445
|
-
|
|
446
|
-
|
|
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
|
|
447
306
|
}
|
|
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
|
+
}
|
|
448
328
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
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
|
+
}
|
|
463
354
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
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
|
+
|
|
397
|
+
if (!tileset3d) {
|
|
398
|
+
return null;
|
|
473
399
|
}
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
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;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
layerCache.layer = layer;
|
|
419
|
+
return layer;
|
|
420
|
+
}).filter(Boolean);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
}
|
|
477
424
|
|
|
478
425
|
exports.default = Tile3DLayer;
|
|
479
426
|
|
|
480
427
|
function getMeshGeometry(contentAttributes) {
|
|
481
|
-
|
|
482
|
-
attributes.positions =
|
|
428
|
+
const attributes = {};
|
|
429
|
+
attributes.positions = { ...contentAttributes.positions,
|
|
483
430
|
value: new Float32Array(contentAttributes.positions.value)
|
|
484
|
-
}
|
|
431
|
+
};
|
|
485
432
|
|
|
486
433
|
if (contentAttributes.normals) {
|
|
487
434
|
attributes.normals = contentAttributes.normals;
|