@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.
- package/dist/dist.dev.js +35 -15
- package/dist/es5/great-circle-layer/great-circle-layer.js +26 -1
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +149 -87
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js +321 -226
- 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 +151 -125
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/coordinate-transform.js +45 -19
- package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/es5/mvt-layer/find-index-binary.js +45 -26
- package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +394 -279
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-geometry.js +43 -32
- package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
- package/dist/es5/s2-layer/s2-layer.js +104 -69
- package/dist/es5/s2-layer/s2-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-utils.js +27 -28
- package/dist/es5/s2-layer/s2-utils.js.map +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js +250 -208
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +382 -329
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js +183 -119
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js +178 -115
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +257 -214
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +435 -290
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +110 -61
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/es5/trips-layer/trips-layer.js +81 -44
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +26 -0
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/terrain-layer/terrain-layer.js +8 -10
- package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +6 -8
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +2 -2
- package/src/mvt-layer/mvt-layer.js +16 -0
- package/src/terrain-layer/terrain-layer.js +10 -9
- 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
|
-
|
|
27
|
-
|
|
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
|
|
81
|
+
value: function value(tileHeader) {
|
|
82
|
+
return [255, 255, 255];
|
|
83
|
+
},
|
|
58
84
|
compare: false
|
|
59
85
|
}
|
|
60
86
|
};
|
|
61
87
|
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
69
|
-
layerMap: {},
|
|
70
|
-
tileset3d: null,
|
|
71
|
-
activeViewports: {},
|
|
72
|
-
lastUpdatedViewports: null
|
|
73
|
-
};
|
|
74
|
-
}
|
|
91
|
+
var _super = _createSuper(Tile3DLayer);
|
|
75
92
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
99
|
-
|
|
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
|
-
|
|
105
|
-
|
|
133
|
+
if (viewportsNumber) {
|
|
134
|
+
this._updateTileset(activeViewports);
|
|
106
135
|
|
|
107
|
-
|
|
108
|
-
|
|
136
|
+
this.state.lastUpdatedViewports = activeViewports;
|
|
137
|
+
this.state.activeViewports = {};
|
|
138
|
+
}
|
|
109
139
|
}
|
|
110
|
-
}
|
|
111
140
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
layerMap
|
|
115
|
-
} = this.state;
|
|
141
|
+
if (changeFlags.propsChanged) {
|
|
142
|
+
var layerMap = this.state.layerMap;
|
|
116
143
|
|
|
117
|
-
|
|
118
|
-
|
|
144
|
+
for (var key in layerMap) {
|
|
145
|
+
layerMap[key].needsUpdate = true;
|
|
146
|
+
}
|
|
119
147
|
}
|
|
120
148
|
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
172
|
-
if (info.sourceLayer) {
|
|
173
|
-
info.sourceLayer.updateAutoHighlight(info);
|
|
280
|
+
this.setNeedsUpdate();
|
|
174
281
|
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
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
|
-
|
|
188
|
-
|
|
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
|
-
|
|
193
|
-
|
|
299
|
+
var frameNumber = tileset3d.update(Object.values(viewports));
|
|
300
|
+
var tilesetChanged = this.state.frameNumber !== frameNumber;
|
|
194
301
|
|
|
195
|
-
if (
|
|
196
|
-
|
|
197
|
-
|
|
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
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
-
|
|
230
|
-
|
|
319
|
+
case _tiles.TILE_TYPE.SCENEGRAPH:
|
|
320
|
+
return this._make3DModelLayer(tileHeader, oldLayer);
|
|
231
321
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
this.props.onTileUnload(tileHeader);
|
|
235
|
-
}
|
|
322
|
+
case _tiles.TILE_TYPE.MESH:
|
|
323
|
+
return this._makeSimpleMeshLayer(tileHeader, oldLayer);
|
|
236
324
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
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
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
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
|
-
|
|
261
|
-
|
|
262
|
-
|
|
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
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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
|
-
|
|
281
|
-
|
|
282
|
-
|
|
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
|
-
|
|
299
|
-
|
|
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
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
tile
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
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
|
-
|
|
419
|
-
|
|
420
|
-
|
|
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
|
-
|
|
429
|
-
attributes.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;
|