@deck.gl/geo-layers 8.7.0-alpha.3 → 8.7.0-beta.1
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 +8074 -4705
- 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 +326 -230
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +17 -9
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/es5/mesh-layer/mesh-layer.js +153 -132
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/coordinate-transform.js +46 -20
- 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 +395 -280
- 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 +384 -329
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js +182 -118
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js +176 -113
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +253 -214
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +519 -300
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +111 -62
- 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/h3-layers/h3-hexagon-layer.js +2 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer.js +2 -8
- package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/esm/mvt-layer/coordinate-transform.js +1 -1
- package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +27 -1
- 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 +2 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +8 -16
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js +85 -79
- package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
- package/dist/esm/tile-layer/utils.js +1 -1
- package/dist/esm/tile-layer/utils.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +12 -12
- package/src/h3-layers/h3-hexagon-layer.js +2 -1
- package/src/{index.js → index.ts} +2 -0
- package/src/mesh-layer/mesh-layer-vertex.glsl.js +24 -23
- package/src/mesh-layer/mesh-layer.js +5 -4
- package/src/mvt-layer/coordinate-transform.js +1 -1
- package/src/mvt-layer/mvt-layer.js +17 -1
- package/src/terrain-layer/terrain-layer.js +10 -9
- package/src/tile-3d-layer/tile-3d-layer.js +10 -2
- package/src/tile-layer/tile-layer.js +11 -12
- package/src/tile-layer/tileset-2d.js +103 -90
- package/src/tile-layer/utils.js +4 -4
|
@@ -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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], 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,432 @@ 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: "isLoaded",
|
|
114
|
+
get: function get() {
|
|
115
|
+
var tileset3d = this.state.tileset3d;
|
|
116
|
+
return tileset3d && tileset3d.isLoaded();
|
|
96
117
|
}
|
|
118
|
+
}, {
|
|
119
|
+
key: "shouldUpdateState",
|
|
120
|
+
value: function shouldUpdateState(_ref) {
|
|
121
|
+
var changeFlags = _ref.changeFlags;
|
|
122
|
+
return changeFlags.somethingChanged;
|
|
123
|
+
}
|
|
124
|
+
}, {
|
|
125
|
+
key: "updateState",
|
|
126
|
+
value: function updateState(_ref2) {
|
|
127
|
+
var props = _ref2.props,
|
|
128
|
+
oldProps = _ref2.oldProps,
|
|
129
|
+
changeFlags = _ref2.changeFlags;
|
|
130
|
+
|
|
131
|
+
if (props.data && props.data !== oldProps.data) {
|
|
132
|
+
this._loadTileset(props.data);
|
|
133
|
+
}
|
|
97
134
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
activeViewports
|
|
101
|
-
} = this.state;
|
|
102
|
-
const viewportsNumber = Object.keys(activeViewports).length;
|
|
135
|
+
if (changeFlags.viewportChanged) {
|
|
136
|
+
var activeViewports = this.state.activeViewports;
|
|
137
|
+
var viewportsNumber = Object.keys(activeViewports).length;
|
|
103
138
|
|
|
104
|
-
|
|
105
|
-
|
|
139
|
+
if (viewportsNumber) {
|
|
140
|
+
this._updateTileset(activeViewports);
|
|
106
141
|
|
|
107
|
-
|
|
108
|
-
|
|
142
|
+
this.state.lastUpdatedViewports = activeViewports;
|
|
143
|
+
this.state.activeViewports = {};
|
|
144
|
+
}
|
|
109
145
|
}
|
|
110
|
-
}
|
|
111
146
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
layerMap
|
|
115
|
-
} = this.state;
|
|
147
|
+
if (changeFlags.propsChanged) {
|
|
148
|
+
var layerMap = this.state.layerMap;
|
|
116
149
|
|
|
117
|
-
|
|
118
|
-
|
|
150
|
+
for (var key in layerMap) {
|
|
151
|
+
layerMap[key].needsUpdate = true;
|
|
152
|
+
}
|
|
119
153
|
}
|
|
120
154
|
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
155
|
+
}, {
|
|
156
|
+
key: "activateViewport",
|
|
157
|
+
value: function activateViewport(viewport) {
|
|
158
|
+
var _this$state = this.state,
|
|
159
|
+
activeViewports = _this$state.activeViewports,
|
|
160
|
+
lastUpdatedViewports = _this$state.lastUpdatedViewports;
|
|
161
|
+
this.internalState.viewport = viewport;
|
|
162
|
+
activeViewports[viewport.id] = viewport;
|
|
163
|
+
var lastViewport = lastUpdatedViewports === null || lastUpdatedViewports === void 0 ? void 0 : lastUpdatedViewports[viewport.id];
|
|
164
|
+
|
|
165
|
+
if (!lastViewport || !viewport.equals(lastViewport)) {
|
|
166
|
+
this.setChangeFlags({
|
|
167
|
+
viewportChanged: true
|
|
168
|
+
});
|
|
169
|
+
this.setNeedsUpdate();
|
|
170
|
+
}
|
|
137
171
|
}
|
|
138
|
-
}
|
|
172
|
+
}, {
|
|
173
|
+
key: "getPickingInfo",
|
|
174
|
+
value: function getPickingInfo(_ref3) {
|
|
175
|
+
var info = _ref3.info,
|
|
176
|
+
sourceLayer = _ref3.sourceLayer;
|
|
177
|
+
var layerMap = this.state.layerMap;
|
|
178
|
+
var layerId = sourceLayer && sourceLayer.id;
|
|
179
|
+
|
|
180
|
+
if (layerId) {
|
|
181
|
+
var substr = layerId.substring(this.id.length + 1);
|
|
182
|
+
var tileId = substr.substring(substr.indexOf('-') + 1);
|
|
183
|
+
info.object = layerMap[tileId] && layerMap[tileId].tile;
|
|
184
|
+
}
|
|
139
185
|
|
|
140
|
-
|
|
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;
|
|
186
|
+
return info;
|
|
153
187
|
}
|
|
188
|
+
}, {
|
|
189
|
+
key: "filterSubLayer",
|
|
190
|
+
value: function filterSubLayer(_ref4) {
|
|
191
|
+
var layer = _ref4.layer,
|
|
192
|
+
viewport = _ref4.viewport;
|
|
193
|
+
var tile = layer.props.tile;
|
|
194
|
+
var viewportId = viewport.id;
|
|
195
|
+
return tile.selected && tile.viewportIds.includes(viewportId);
|
|
196
|
+
}
|
|
197
|
+
}, {
|
|
198
|
+
key: "_updateAutoHighlight",
|
|
199
|
+
value: function _updateAutoHighlight(info) {
|
|
200
|
+
if (info.sourceLayer) {
|
|
201
|
+
info.sourceLayer.updateAutoHighlight(info);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}, {
|
|
205
|
+
key: "_loadTileset",
|
|
206
|
+
value: function () {
|
|
207
|
+
var _loadTileset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tilesetUrl) {
|
|
208
|
+
var _this$props$loadOptio, loadOptions, loader, options, preloadOptions, tilesetJson, tileset3d;
|
|
209
|
+
|
|
210
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
211
|
+
while (1) {
|
|
212
|
+
switch (_context.prev = _context.next) {
|
|
213
|
+
case 0:
|
|
214
|
+
_this$props$loadOptio = this.props.loadOptions, loadOptions = _this$props$loadOptio === void 0 ? {} : _this$props$loadOptio;
|
|
215
|
+
loader = this.props.loader || this.props.loaders;
|
|
216
|
+
|
|
217
|
+
if (Array.isArray(loader)) {
|
|
218
|
+
loader = loader[0];
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
options = {
|
|
222
|
+
loadOptions: _objectSpread({}, loadOptions)
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
if (!loader.preload) {
|
|
226
|
+
_context.next = 10;
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
_context.next = 7;
|
|
231
|
+
return loader.preload(tilesetUrl, loadOptions);
|
|
232
|
+
|
|
233
|
+
case 7:
|
|
234
|
+
preloadOptions = _context.sent;
|
|
235
|
+
|
|
236
|
+
if (preloadOptions.headers) {
|
|
237
|
+
options.loadOptions.fetch = _objectSpread(_objectSpread({}, options.loadOptions.fetch), {}, {
|
|
238
|
+
headers: preloadOptions.headers
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
Object.assign(options, preloadOptions);
|
|
243
|
+
|
|
244
|
+
case 10:
|
|
245
|
+
_context.next = 12;
|
|
246
|
+
return (0, _core3.load)(tilesetUrl, loader, options.loadOptions);
|
|
247
|
+
|
|
248
|
+
case 12:
|
|
249
|
+
tilesetJson = _context.sent;
|
|
250
|
+
tileset3d = new _tiles.Tileset3D(tilesetJson, _objectSpread({
|
|
251
|
+
onTileLoad: this._onTileLoad.bind(this),
|
|
252
|
+
onTileUnload: this._onTileUnload.bind(this),
|
|
253
|
+
onTileLoadFail: this.props.onTileError
|
|
254
|
+
}, options));
|
|
255
|
+
this.setState({
|
|
256
|
+
tileset3d: tileset3d,
|
|
257
|
+
layerMap: {}
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
this._updateTileset(this.state.activeViewports);
|
|
261
|
+
|
|
262
|
+
this.props.onTilesetLoad(tileset3d);
|
|
263
|
+
|
|
264
|
+
case 17:
|
|
265
|
+
case "end":
|
|
266
|
+
return _context.stop();
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}, _callee, this);
|
|
270
|
+
}));
|
|
271
|
+
|
|
272
|
+
function _loadTileset(_x) {
|
|
273
|
+
return _loadTileset2.apply(this, arguments);
|
|
274
|
+
}
|
|
154
275
|
|
|
155
|
-
|
|
156
|
-
|
|
276
|
+
return _loadTileset;
|
|
277
|
+
}()
|
|
278
|
+
}, {
|
|
279
|
+
key: "_onTileLoad",
|
|
280
|
+
value: function _onTileLoad(tileHeader) {
|
|
281
|
+
var lastUpdatedViewports = this.state.lastUpdatedViewports;
|
|
282
|
+
this.props.onTileLoad(tileHeader);
|
|
157
283
|
|
|
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
|
-
}
|
|
284
|
+
this._updateTileset(lastUpdatedViewports);
|
|
170
285
|
|
|
171
|
-
|
|
172
|
-
if (info.sourceLayer) {
|
|
173
|
-
info.sourceLayer.updateAutoHighlight(info);
|
|
286
|
+
this.setNeedsUpdate();
|
|
174
287
|
}
|
|
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];
|
|
288
|
+
}, {
|
|
289
|
+
key: "_onTileUnload",
|
|
290
|
+
value: function _onTileUnload(tileHeader) {
|
|
291
|
+
delete this.state.layerMap[tileHeader.id];
|
|
292
|
+
this.props.onTileUnload(tileHeader);
|
|
185
293
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
294
|
+
}, {
|
|
295
|
+
key: "_updateTileset",
|
|
296
|
+
value: function _updateTileset(viewports) {
|
|
297
|
+
var tileset3d = this.state.tileset3d;
|
|
298
|
+
var timeline = this.context.timeline;
|
|
299
|
+
var viewportsNumber = Object.keys(viewports).length;
|
|
300
|
+
|
|
301
|
+
if (!timeline || !viewportsNumber || !tileset3d) {
|
|
302
|
+
return;
|
|
189
303
|
}
|
|
190
|
-
};
|
|
191
304
|
|
|
192
|
-
|
|
193
|
-
|
|
305
|
+
var frameNumber = tileset3d.update(Object.values(viewports));
|
|
306
|
+
var tilesetChanged = this.state.frameNumber !== frameNumber;
|
|
194
307
|
|
|
195
|
-
if (
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
};
|
|
308
|
+
if (tilesetChanged) {
|
|
309
|
+
this.setState({
|
|
310
|
+
frameNumber: frameNumber
|
|
311
|
+
});
|
|
199
312
|
}
|
|
200
|
-
|
|
201
|
-
Object.assign(options, preloadOptions);
|
|
202
313
|
}
|
|
314
|
+
}, {
|
|
315
|
+
key: "_getSubLayer",
|
|
316
|
+
value: function _getSubLayer(tileHeader, oldLayer) {
|
|
317
|
+
if (!tileHeader.content) {
|
|
318
|
+
return null;
|
|
319
|
+
}
|
|
203
320
|
|
|
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);
|
|
321
|
+
switch (tileHeader.type) {
|
|
322
|
+
case _tiles.TILE_TYPE.POINTCLOUD:
|
|
323
|
+
return this._makePointCloudLayer(tileHeader, oldLayer);
|
|
226
324
|
|
|
227
|
-
|
|
325
|
+
case _tiles.TILE_TYPE.SCENEGRAPH:
|
|
326
|
+
return this._make3DModelLayer(tileHeader, oldLayer);
|
|
228
327
|
|
|
229
|
-
|
|
230
|
-
|
|
328
|
+
case _tiles.TILE_TYPE.MESH:
|
|
329
|
+
return this._makeSimpleMeshLayer(tileHeader, oldLayer);
|
|
231
330
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
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;
|
|
331
|
+
default:
|
|
332
|
+
throw new Error("Tile3DLayer: Failed to render layer of type ".concat(tileHeader.content.type));
|
|
333
|
+
}
|
|
248
334
|
}
|
|
335
|
+
}, {
|
|
336
|
+
key: "_makePointCloudLayer",
|
|
337
|
+
value: function _makePointCloudLayer(tileHeader, oldLayer) {
|
|
338
|
+
var _tileHeader$content = tileHeader.content,
|
|
339
|
+
attributes = _tileHeader$content.attributes,
|
|
340
|
+
pointCount = _tileHeader$content.pointCount,
|
|
341
|
+
constantRGBA = _tileHeader$content.constantRGBA,
|
|
342
|
+
cartographicOrigin = _tileHeader$content.cartographicOrigin,
|
|
343
|
+
modelMatrix = _tileHeader$content.modelMatrix;
|
|
344
|
+
var positions = attributes.positions,
|
|
345
|
+
normals = attributes.normals,
|
|
346
|
+
colors = attributes.colors;
|
|
347
|
+
|
|
348
|
+
if (!positions) {
|
|
349
|
+
return null;
|
|
350
|
+
}
|
|
249
351
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
352
|
+
var data = oldLayer && oldLayer.props.data || {
|
|
353
|
+
header: {
|
|
354
|
+
vertexCount: pointCount
|
|
355
|
+
},
|
|
356
|
+
attributes: {
|
|
357
|
+
POSITION: positions,
|
|
358
|
+
NORMAL: normals,
|
|
359
|
+
COLOR_0: colors
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
var _this$props = this.props,
|
|
363
|
+
pointSize = _this$props.pointSize,
|
|
364
|
+
getPointColor = _this$props.getPointColor;
|
|
365
|
+
var SubLayerClass = this.getSubLayerClass('pointcloud', _layers.PointCloudLayer);
|
|
366
|
+
return new SubLayerClass({
|
|
367
|
+
pointSize: pointSize
|
|
368
|
+
}, this.getSubLayerProps({
|
|
369
|
+
id: 'pointcloud'
|
|
370
|
+
}), {
|
|
371
|
+
id: "".concat(this.id, "-pointcloud-").concat(tileHeader.id),
|
|
372
|
+
tile: tileHeader,
|
|
373
|
+
data: data,
|
|
374
|
+
coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
|
|
375
|
+
coordinateOrigin: cartographicOrigin,
|
|
376
|
+
modelMatrix: modelMatrix,
|
|
377
|
+
getColor: constantRGBA || getPointColor,
|
|
378
|
+
_offset: 0
|
|
256
379
|
});
|
|
257
380
|
}
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
381
|
+
}, {
|
|
382
|
+
key: "_make3DModelLayer",
|
|
383
|
+
value: function _make3DModelLayer(tileHeader) {
|
|
384
|
+
var _tileHeader$content2 = tileHeader.content,
|
|
385
|
+
gltf = _tileHeader$content2.gltf,
|
|
386
|
+
instances = _tileHeader$content2.instances,
|
|
387
|
+
cartographicOrigin = _tileHeader$content2.cartographicOrigin,
|
|
388
|
+
modelMatrix = _tileHeader$content2.modelMatrix;
|
|
389
|
+
var SubLayerClass = this.getSubLayerClass('scenegraph', _meshLayers.ScenegraphLayer);
|
|
390
|
+
return new SubLayerClass({
|
|
391
|
+
_lighting: 'pbr'
|
|
392
|
+
}, this.getSubLayerProps({
|
|
393
|
+
id: 'scenegraph'
|
|
394
|
+
}), {
|
|
395
|
+
id: "".concat(this.id, "-scenegraph-").concat(tileHeader.id),
|
|
396
|
+
tile: tileHeader,
|
|
397
|
+
data: instances || SINGLE_DATA,
|
|
398
|
+
scenegraph: gltf,
|
|
399
|
+
coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
|
|
400
|
+
coordinateOrigin: cartographicOrigin,
|
|
401
|
+
modelMatrix: modelMatrix,
|
|
402
|
+
getTransformMatrix: function getTransformMatrix(instance) {
|
|
403
|
+
return instance.modelMatrix;
|
|
404
|
+
},
|
|
405
|
+
getPosition: [0, 0, 0],
|
|
406
|
+
_offset: 0
|
|
407
|
+
});
|
|
263
408
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
409
|
+
}, {
|
|
410
|
+
key: "_makeSimpleMeshLayer",
|
|
411
|
+
value: function _makeSimpleMeshLayer(tileHeader, oldLayer) {
|
|
412
|
+
var content = tileHeader.content;
|
|
413
|
+
var attributes = content.attributes,
|
|
414
|
+
indices = content.indices,
|
|
415
|
+
modelMatrix = content.modelMatrix,
|
|
416
|
+
cartographicOrigin = content.cartographicOrigin,
|
|
417
|
+
_content$coordinateSy = content.coordinateSystem,
|
|
418
|
+
coordinateSystem = _content$coordinateSy === void 0 ? _core2.COORDINATE_SYSTEM.METER_OFFSETS : _content$coordinateSy,
|
|
419
|
+
material = content.material,
|
|
420
|
+
featureIds = content.featureIds;
|
|
421
|
+
var _getMeshColor = this.props._getMeshColor;
|
|
422
|
+
var geometry = oldLayer && oldLayer.props.mesh || new _core.Geometry({
|
|
423
|
+
drawMode: 4,
|
|
424
|
+
attributes: getMeshGeometry(attributes),
|
|
425
|
+
indices: indices
|
|
426
|
+
});
|
|
427
|
+
var SubLayerClass = this.getSubLayerClass('mesh', _meshLayer.default);
|
|
428
|
+
return new SubLayerClass(this.getSubLayerProps({
|
|
429
|
+
id: 'mesh'
|
|
430
|
+
}), {
|
|
431
|
+
id: "".concat(this.id, "-mesh-").concat(tileHeader.id),
|
|
432
|
+
tile: tileHeader,
|
|
433
|
+
mesh: geometry,
|
|
434
|
+
data: SINGLE_DATA,
|
|
435
|
+
getColor: _getMeshColor(tileHeader),
|
|
436
|
+
pbrMaterial: material,
|
|
437
|
+
modelMatrix: modelMatrix,
|
|
438
|
+
coordinateOrigin: cartographicOrigin,
|
|
439
|
+
coordinateSystem: coordinateSystem,
|
|
440
|
+
featureIds: featureIds,
|
|
441
|
+
_offset: 0
|
|
442
|
+
});
|
|
277
443
|
}
|
|
278
|
-
}
|
|
444
|
+
}, {
|
|
445
|
+
key: "renderLayers",
|
|
446
|
+
value: function renderLayers() {
|
|
447
|
+
var _this = this;
|
|
279
448
|
|
|
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
|
-
}
|
|
449
|
+
var _this$state2 = this.state,
|
|
450
|
+
tileset3d = _this$state2.tileset3d,
|
|
451
|
+
layerMap = _this$state2.layerMap;
|
|
297
452
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
vertexCount: pointCount
|
|
301
|
-
},
|
|
302
|
-
attributes: {
|
|
303
|
-
POSITION: positions,
|
|
304
|
-
NORMAL: normals,
|
|
305
|
-
COLOR_0: colors
|
|
453
|
+
if (!tileset3d) {
|
|
454
|
+
return null;
|
|
306
455
|
}
|
|
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
456
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
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;
|
|
457
|
+
return tileset3d.tiles.map(function (tile) {
|
|
458
|
+
var layerCache = layerMap[tile.id] = layerMap[tile.id] || {
|
|
459
|
+
tile: tile
|
|
460
|
+
};
|
|
461
|
+
var layer = layerCache.layer;
|
|
462
|
+
|
|
463
|
+
if (tile.selected) {
|
|
464
|
+
if (!layer) {
|
|
465
|
+
layer = _this._getSubLayer(tile);
|
|
466
|
+
} else if (layerCache.needsUpdate) {
|
|
467
|
+
layer = _this._getSubLayer(tile, layer);
|
|
468
|
+
layerCache.needsUpdate = false;
|
|
469
|
+
}
|
|
415
470
|
}
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
layerCache.layer = layer;
|
|
419
|
-
return layer;
|
|
420
|
-
}).filter(Boolean);
|
|
421
|
-
}
|
|
422
471
|
|
|
423
|
-
|
|
472
|
+
layerCache.layer = layer;
|
|
473
|
+
return layer;
|
|
474
|
+
}).filter(Boolean);
|
|
475
|
+
}
|
|
476
|
+
}]);
|
|
477
|
+
return Tile3DLayer;
|
|
478
|
+
}(_core2.CompositeLayer);
|
|
424
479
|
|
|
425
480
|
exports.default = Tile3DLayer;
|
|
426
481
|
|
|
427
482
|
function getMeshGeometry(contentAttributes) {
|
|
428
|
-
|
|
429
|
-
attributes.positions = {
|
|
483
|
+
var attributes = {};
|
|
484
|
+
attributes.positions = _objectSpread(_objectSpread({}, contentAttributes.positions), {}, {
|
|
430
485
|
value: new Float32Array(contentAttributes.positions.value)
|
|
431
|
-
};
|
|
486
|
+
});
|
|
432
487
|
|
|
433
488
|
if (contentAttributes.normals) {
|
|
434
489
|
attributes.normals = contentAttributes.normals;
|