@deck.gl/geo-layers 8.7.8 → 8.8.0-alpha.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 +62999 -30700
- package/dist/es5/geo-cell-layer/GeoCellLayer.js +3 -3
- package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/es5/index.js +8 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +19 -19
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/quadkey-layer/quadkey-layer.js +4 -2
- package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
- package/dist/es5/quadkey-layer/quadkey-utils.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +13 -10
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js +36 -17
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js +13 -3
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +38 -32
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +122 -96
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/types.js +2 -0
- package/dist/es5/tile-layer/types.js.map +1 -0
- package/dist/es5/tile-layer/utils.js +27 -9
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/esm/geo-cell-layer/GeoCellLayer.js +6 -3
- package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +17 -17
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/quadkey-layer/quadkey-layer.js +5 -2
- package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
- package/dist/esm/quadkey-layer/quadkey-utils.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +8 -7
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-header.js +54 -18
- package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-traversal.js +17 -3
- package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +23 -17
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js +88 -54
- package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
- package/dist/esm/tile-layer/types.js +2 -0
- package/dist/esm/tile-layer/types.js.map +1 -0
- package/dist/esm/tile-layer/utils.js +26 -11
- package/dist/esm/tile-layer/utils.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +11 -11
- package/src/geo-cell-layer/{GeoCellLayer.js → GeoCellLayer.ts} +14 -10
- package/src/index.ts +6 -0
- package/src/mvt-layer/mvt-layer.js +11 -10
- package/src/quadkey-layer/quadkey-layer.ts +39 -0
- package/src/quadkey-layer/{quadkey-utils.js → quadkey-utils.ts} +2 -2
- package/src/tile-3d-layer/tile-3d-layer.js +6 -5
- package/src/tile-layer/{tile-2d-header.js → tile-2d-header.ts} +50 -16
- package/src/tile-layer/{tile-2d-traversal.js → tile-2d-traversal.ts} +49 -12
- package/src/tile-layer/{tile-layer.js → tile-layer.ts} +153 -31
- package/src/tile-layer/{tileset-2d.js → tileset-2d.ts} +143 -66
- package/src/tile-layer/types.ts +17 -0
- package/src/tile-layer/{utils.js → utils.ts} +67 -25
- package/src/quadkey-layer/quadkey-layer.js +0 -22
|
@@ -23,6 +23,8 @@ var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
|
23
23
|
|
|
24
24
|
var _core = require("@math.gl/core");
|
|
25
25
|
|
|
26
|
+
var _core2 = require("@deck.gl/core");
|
|
27
|
+
|
|
26
28
|
var _STRATEGIES;
|
|
27
29
|
|
|
28
30
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
@@ -47,6 +49,20 @@ var Tileset2D = function () {
|
|
|
47
49
|
var _this = this;
|
|
48
50
|
|
|
49
51
|
(0, _classCallCheck2.default)(this, Tileset2D);
|
|
52
|
+
(0, _defineProperty2.default)(this, "opts", void 0);
|
|
53
|
+
(0, _defineProperty2.default)(this, "_requestScheduler", void 0);
|
|
54
|
+
(0, _defineProperty2.default)(this, "_cache", void 0);
|
|
55
|
+
(0, _defineProperty2.default)(this, "_dirty", void 0);
|
|
56
|
+
(0, _defineProperty2.default)(this, "_tiles", void 0);
|
|
57
|
+
(0, _defineProperty2.default)(this, "_cacheByteSize", void 0);
|
|
58
|
+
(0, _defineProperty2.default)(this, "_viewport", void 0);
|
|
59
|
+
(0, _defineProperty2.default)(this, "_selectedTiles", void 0);
|
|
60
|
+
(0, _defineProperty2.default)(this, "_frameNumber", void 0);
|
|
61
|
+
(0, _defineProperty2.default)(this, "_modelMatrix", void 0);
|
|
62
|
+
(0, _defineProperty2.default)(this, "_modelMatrixInverse", void 0);
|
|
63
|
+
(0, _defineProperty2.default)(this, "_maxZoom", void 0);
|
|
64
|
+
(0, _defineProperty2.default)(this, "_minZoom", void 0);
|
|
65
|
+
(0, _defineProperty2.default)(this, "onTileLoad", void 0);
|
|
50
66
|
this.opts = opts;
|
|
51
67
|
|
|
52
68
|
this.onTileLoad = function (tile) {
|
|
@@ -88,14 +104,14 @@ var Tileset2D = function () {
|
|
|
88
104
|
}, {
|
|
89
105
|
key: "isLoaded",
|
|
90
106
|
get: function get() {
|
|
91
|
-
return this._selectedTiles.every(function (tile) {
|
|
107
|
+
return this._selectedTiles !== null && this._selectedTiles.every(function (tile) {
|
|
92
108
|
return tile.isLoaded;
|
|
93
109
|
});
|
|
94
110
|
}
|
|
95
111
|
}, {
|
|
96
112
|
key: "needsReload",
|
|
97
113
|
get: function get() {
|
|
98
|
-
return this._selectedTiles.some(function (tile) {
|
|
114
|
+
return this._selectedTiles !== null && this._selectedTiles.some(function (tile) {
|
|
99
115
|
return tile.needsReload;
|
|
100
116
|
});
|
|
101
117
|
}
|
|
@@ -120,10 +136,10 @@ var Tileset2D = function () {
|
|
|
120
136
|
|
|
121
137
|
try {
|
|
122
138
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
123
|
-
var
|
|
139
|
+
var _tile = _step.value;
|
|
124
140
|
|
|
125
|
-
if (
|
|
126
|
-
|
|
141
|
+
if (_tile.isLoading) {
|
|
142
|
+
_tile.abort();
|
|
127
143
|
}
|
|
128
144
|
}
|
|
129
145
|
} catch (err) {
|
|
@@ -145,14 +161,14 @@ var Tileset2D = function () {
|
|
|
145
161
|
|
|
146
162
|
try {
|
|
147
163
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
148
|
-
var
|
|
164
|
+
var id = _step2.value;
|
|
149
165
|
|
|
150
|
-
var
|
|
166
|
+
var _tile2 = this._cache.get(id);
|
|
151
167
|
|
|
152
|
-
if (!this._selectedTiles.includes(
|
|
153
|
-
this._cache.delete(
|
|
168
|
+
if (!this._selectedTiles || !this._selectedTiles.includes(_tile2)) {
|
|
169
|
+
this._cache.delete(id);
|
|
154
170
|
} else {
|
|
155
|
-
|
|
171
|
+
_tile2.setNeedsReload();
|
|
156
172
|
}
|
|
157
173
|
}
|
|
158
174
|
} catch (err) {
|
|
@@ -173,7 +189,7 @@ var Tileset2D = function () {
|
|
|
173
189
|
var modelMatrixAsMatrix4 = new _core.Matrix4(modelMatrix);
|
|
174
190
|
var isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);
|
|
175
191
|
|
|
176
|
-
if (!viewport.equals(this._viewport) || isModelMatrixNew) {
|
|
192
|
+
if (!this._viewport || !viewport.equals(this._viewport) || isModelMatrixNew) {
|
|
177
193
|
if (isModelMatrixNew) {
|
|
178
194
|
this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();
|
|
179
195
|
this._modelMatrix = modelMatrixAsMatrix4;
|
|
@@ -197,11 +213,7 @@ var Tileset2D = function () {
|
|
|
197
213
|
}
|
|
198
214
|
} else if (this.needsReload) {
|
|
199
215
|
this._selectedTiles = this._selectedTiles.map(function (tile) {
|
|
200
|
-
return _this2._getTile(
|
|
201
|
-
x: tile.x,
|
|
202
|
-
y: tile.y,
|
|
203
|
-
z: tile.z
|
|
204
|
-
});
|
|
216
|
+
return _this2._getTile(tile.index);
|
|
205
217
|
});
|
|
206
218
|
}
|
|
207
219
|
|
|
@@ -244,28 +256,41 @@ var Tileset2D = function () {
|
|
|
244
256
|
zoomOffset: zoomOffset
|
|
245
257
|
});
|
|
246
258
|
}
|
|
259
|
+
}, {
|
|
260
|
+
key: "getTileId",
|
|
261
|
+
value: function getTileId(index) {
|
|
262
|
+
return "".concat(index.x, "-").concat(index.y, "-").concat(index.z);
|
|
263
|
+
}
|
|
264
|
+
}, {
|
|
265
|
+
key: "getTileZoom",
|
|
266
|
+
value: function getTileZoom(index) {
|
|
267
|
+
return index.z;
|
|
268
|
+
}
|
|
247
269
|
}, {
|
|
248
270
|
key: "getTileMetadata",
|
|
249
|
-
value: function getTileMetadata(
|
|
250
|
-
|
|
251
|
-
y = _ref3.y,
|
|
252
|
-
z = _ref3.z;
|
|
271
|
+
value: function getTileMetadata(index) {
|
|
272
|
+
(0, _core2.assert)(this._viewport);
|
|
253
273
|
var tileSize = this.opts.tileSize;
|
|
254
274
|
return {
|
|
255
|
-
bbox: (0, _utils.tileToBoundingBox)(this._viewport, x, y, z, tileSize)
|
|
275
|
+
bbox: (0, _utils.tileToBoundingBox)(this._viewport, index.x, index.y, index.z, tileSize)
|
|
256
276
|
};
|
|
257
277
|
}
|
|
258
278
|
}, {
|
|
259
279
|
key: "getParentIndex",
|
|
260
|
-
value: function getParentIndex(
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
return
|
|
280
|
+
value: function getParentIndex(index) {
|
|
281
|
+
var x = Math.floor(index.x / 2);
|
|
282
|
+
var y = Math.floor(index.y / 2);
|
|
283
|
+
var z = index.z - 1;
|
|
284
|
+
return {
|
|
285
|
+
x: x,
|
|
286
|
+
y: y,
|
|
287
|
+
z: z
|
|
288
|
+
};
|
|
265
289
|
}
|
|
266
290
|
}, {
|
|
267
291
|
key: "updateTileStates",
|
|
268
292
|
value: function updateTileStates() {
|
|
293
|
+
(0, _core2.assert)(this._selectedTiles);
|
|
269
294
|
var refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;
|
|
270
295
|
var visibilities = new Array(this._cache.size);
|
|
271
296
|
var i = 0;
|
|
@@ -275,10 +300,10 @@ var Tileset2D = function () {
|
|
|
275
300
|
|
|
276
301
|
try {
|
|
277
302
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
278
|
-
var
|
|
279
|
-
visibilities[i++] =
|
|
280
|
-
|
|
281
|
-
|
|
303
|
+
var _tile3 = _step3.value;
|
|
304
|
+
visibilities[i++] = _tile3.isVisible;
|
|
305
|
+
_tile3.isSelected = false;
|
|
306
|
+
_tile3.isVisible = false;
|
|
282
307
|
}
|
|
283
308
|
} catch (err) {
|
|
284
309
|
_iterator3.e(err);
|
|
@@ -291,9 +316,9 @@ var Tileset2D = function () {
|
|
|
291
316
|
|
|
292
317
|
try {
|
|
293
318
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
294
|
-
var
|
|
295
|
-
|
|
296
|
-
|
|
319
|
+
var _tile4 = _step4.value;
|
|
320
|
+
_tile4.isSelected = true;
|
|
321
|
+
_tile4.isVisible = true;
|
|
297
322
|
}
|
|
298
323
|
} catch (err) {
|
|
299
324
|
_iterator4.e(err);
|
|
@@ -309,9 +334,9 @@ var Tileset2D = function () {
|
|
|
309
334
|
|
|
310
335
|
try {
|
|
311
336
|
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
312
|
-
var
|
|
337
|
+
var _tile5 = _step5.value;
|
|
313
338
|
|
|
314
|
-
if (visibilities[i++] !==
|
|
339
|
+
if (visibilities[i++] !== _tile5.isVisible) {
|
|
315
340
|
return true;
|
|
316
341
|
}
|
|
317
342
|
}
|
|
@@ -335,13 +360,13 @@ var Tileset2D = function () {
|
|
|
335
360
|
|
|
336
361
|
try {
|
|
337
362
|
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
338
|
-
var
|
|
363
|
+
var _tile7 = _step6.value;
|
|
339
364
|
|
|
340
|
-
if (
|
|
365
|
+
if (_tile7.isLoading) {
|
|
341
366
|
ongoingRequestCount++;
|
|
342
367
|
|
|
343
|
-
if (!
|
|
344
|
-
abortCandidates.push(
|
|
368
|
+
if (!_tile7.isSelected && !_tile7.isVisible) {
|
|
369
|
+
abortCandidates.push(_tile7);
|
|
345
370
|
}
|
|
346
371
|
}
|
|
347
372
|
}
|
|
@@ -352,8 +377,10 @@ var Tileset2D = function () {
|
|
|
352
377
|
}
|
|
353
378
|
|
|
354
379
|
while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {
|
|
355
|
-
var
|
|
356
|
-
|
|
380
|
+
var _tile6 = abortCandidates.shift();
|
|
381
|
+
|
|
382
|
+
_tile6.abort();
|
|
383
|
+
|
|
357
384
|
ongoingRequestCount--;
|
|
358
385
|
}
|
|
359
386
|
}
|
|
@@ -367,9 +394,12 @@ var Tileset2D = function () {
|
|
|
367
394
|
|
|
368
395
|
try {
|
|
369
396
|
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
370
|
-
var
|
|
371
|
-
|
|
372
|
-
|
|
397
|
+
var _tile8 = _step7.value;
|
|
398
|
+
_tile8.parent = null;
|
|
399
|
+
|
|
400
|
+
if (_tile8.children) {
|
|
401
|
+
_tile8.children.length = 0;
|
|
402
|
+
}
|
|
373
403
|
}
|
|
374
404
|
} catch (err) {
|
|
375
405
|
_iterator7.e(err);
|
|
@@ -382,14 +412,14 @@ var Tileset2D = function () {
|
|
|
382
412
|
|
|
383
413
|
try {
|
|
384
414
|
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
385
|
-
var
|
|
415
|
+
var _tile9 = _step8.value;
|
|
386
416
|
|
|
387
|
-
var parent = this._getNearestAncestor(
|
|
417
|
+
var parent = this._getNearestAncestor(_tile9);
|
|
388
418
|
|
|
389
|
-
|
|
419
|
+
_tile9.parent = parent;
|
|
390
420
|
|
|
391
|
-
if (parent) {
|
|
392
|
-
parent.children.push(
|
|
421
|
+
if (parent !== null && parent !== void 0 && parent.children) {
|
|
422
|
+
parent.children.push(_tile9);
|
|
393
423
|
}
|
|
394
424
|
}
|
|
395
425
|
} catch (err) {
|
|
@@ -401,6 +431,7 @@ var Tileset2D = function () {
|
|
|
401
431
|
}, {
|
|
402
432
|
key: "_resizeCache",
|
|
403
433
|
value: function _resizeCache() {
|
|
434
|
+
(0, _core2.assert)(this.selectedTiles);
|
|
404
435
|
var _cache = this._cache,
|
|
405
436
|
opts = this.opts;
|
|
406
437
|
var maxCacheSize = opts.maxCacheSize || (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);
|
|
@@ -414,15 +445,15 @@ var Tileset2D = function () {
|
|
|
414
445
|
try {
|
|
415
446
|
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
416
447
|
var _step9$value = (0, _slicedToArray2.default)(_step9.value, 2),
|
|
417
|
-
|
|
418
|
-
|
|
448
|
+
id = _step9$value[0],
|
|
449
|
+
_tile10 = _step9$value[1];
|
|
419
450
|
|
|
420
|
-
if (!
|
|
421
|
-
this._cacheByteSize -= opts.maxCacheByteSize ?
|
|
451
|
+
if (!_tile10.isVisible) {
|
|
452
|
+
this._cacheByteSize -= opts.maxCacheByteSize ? _tile10.byteLength : 0;
|
|
422
453
|
|
|
423
|
-
_cache.delete(
|
|
454
|
+
_cache.delete(id);
|
|
424
455
|
|
|
425
|
-
this.opts.onTileUnload(
|
|
456
|
+
this.opts.onTileUnload(_tile10);
|
|
426
457
|
}
|
|
427
458
|
|
|
428
459
|
if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {
|
|
@@ -442,40 +473,37 @@ var Tileset2D = function () {
|
|
|
442
473
|
|
|
443
474
|
if (this._dirty) {
|
|
444
475
|
this._tiles = Array.from(this._cache.values()).sort(function (t1, t2) {
|
|
445
|
-
return t1.
|
|
476
|
+
return t1.zoom - t2.zoom;
|
|
446
477
|
});
|
|
447
478
|
this._dirty = false;
|
|
448
479
|
}
|
|
449
480
|
}
|
|
450
481
|
}, {
|
|
451
482
|
key: "_getTile",
|
|
452
|
-
value: function _getTile(
|
|
453
|
-
var
|
|
454
|
-
y = _ref4.y,
|
|
455
|
-
z = _ref4.z;
|
|
456
|
-
var tileId = "".concat(x, ",").concat(y, ",").concat(z);
|
|
483
|
+
value: function _getTile(index, create) {
|
|
484
|
+
var id = this.getTileId(index);
|
|
457
485
|
|
|
458
|
-
var tile = this._cache.get(
|
|
486
|
+
var tile = this._cache.get(id);
|
|
459
487
|
|
|
460
488
|
var needsReload = false;
|
|
461
489
|
|
|
462
490
|
if (!tile && create) {
|
|
463
|
-
tile = new _tile2dHeader.default(
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
491
|
+
tile = new _tile2dHeader.default(index);
|
|
492
|
+
Object.assign(tile, this.getTileMetadata(tile.index));
|
|
493
|
+
Object.assign(tile, {
|
|
494
|
+
id: id,
|
|
495
|
+
zoom: this.getTileZoom(tile.index)
|
|
467
496
|
});
|
|
468
|
-
Object.assign(tile, this.getTileMetadata(tile));
|
|
469
497
|
needsReload = true;
|
|
470
498
|
|
|
471
|
-
this._cache.set(
|
|
499
|
+
this._cache.set(id, tile);
|
|
472
500
|
|
|
473
501
|
this._dirty = true;
|
|
474
502
|
} else if (tile && tile.needsReload) {
|
|
475
503
|
needsReload = true;
|
|
476
504
|
}
|
|
477
505
|
|
|
478
|
-
if (needsReload) {
|
|
506
|
+
if (tile && needsReload) {
|
|
479
507
|
tile.loadData({
|
|
480
508
|
getData: this.opts.getTileData,
|
|
481
509
|
requestScheduler: this._requestScheduler,
|
|
@@ -488,17 +516,13 @@ var Tileset2D = function () {
|
|
|
488
516
|
}
|
|
489
517
|
}, {
|
|
490
518
|
key: "_getNearestAncestor",
|
|
491
|
-
value: function _getNearestAncestor(
|
|
519
|
+
value: function _getNearestAncestor(tile) {
|
|
492
520
|
var _this$_minZoom = this._minZoom,
|
|
493
521
|
_minZoom = _this$_minZoom === void 0 ? 0 : _this$_minZoom;
|
|
494
522
|
|
|
495
|
-
var index =
|
|
496
|
-
x: x,
|
|
497
|
-
y: y,
|
|
498
|
-
z: z
|
|
499
|
-
};
|
|
523
|
+
var index = tile.index;
|
|
500
524
|
|
|
501
|
-
while (index
|
|
525
|
+
while (this.getTileZoom(index) > _minZoom) {
|
|
502
526
|
index = this.getParentIndex(index);
|
|
503
527
|
|
|
504
528
|
var parent = this._getTile(index);
|
|
@@ -522,8 +546,8 @@ function updateTileStateDefault(allTiles) {
|
|
|
522
546
|
|
|
523
547
|
try {
|
|
524
548
|
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
525
|
-
var
|
|
526
|
-
|
|
549
|
+
var _tile11 = _step10.value;
|
|
550
|
+
_tile11.state = 0;
|
|
527
551
|
}
|
|
528
552
|
} catch (err) {
|
|
529
553
|
_iterator10.e(err);
|
|
@@ -536,10 +560,10 @@ function updateTileStateDefault(allTiles) {
|
|
|
536
560
|
|
|
537
561
|
try {
|
|
538
562
|
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
|
539
|
-
var
|
|
563
|
+
var _tile12 = _step11.value;
|
|
540
564
|
|
|
541
|
-
if (
|
|
542
|
-
getPlaceholderInChildren(
|
|
565
|
+
if (_tile12.isSelected && !getPlaceholderInAncestors(_tile12)) {
|
|
566
|
+
getPlaceholderInChildren(_tile12);
|
|
543
567
|
}
|
|
544
568
|
}
|
|
545
569
|
} catch (err) {
|
|
@@ -553,8 +577,8 @@ function updateTileStateDefault(allTiles) {
|
|
|
553
577
|
|
|
554
578
|
try {
|
|
555
579
|
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
556
|
-
var
|
|
557
|
-
|
|
580
|
+
var _tile13 = _step12.value;
|
|
581
|
+
_tile13.isVisible = Boolean(_tile13.state & TILE_STATE_VISIBLE);
|
|
558
582
|
}
|
|
559
583
|
} catch (err) {
|
|
560
584
|
_iterator12.e(err);
|
|
@@ -569,8 +593,8 @@ function updateTileStateReplace(allTiles) {
|
|
|
569
593
|
|
|
570
594
|
try {
|
|
571
595
|
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
|
|
572
|
-
var
|
|
573
|
-
|
|
596
|
+
var _tile14 = _step13.value;
|
|
597
|
+
_tile14.state = 0;
|
|
574
598
|
}
|
|
575
599
|
} catch (err) {
|
|
576
600
|
_iterator13.e(err);
|
|
@@ -583,10 +607,10 @@ function updateTileStateReplace(allTiles) {
|
|
|
583
607
|
|
|
584
608
|
try {
|
|
585
609
|
for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
|
|
586
|
-
var
|
|
610
|
+
var _tile15 = _step14.value;
|
|
587
611
|
|
|
588
|
-
if (
|
|
589
|
-
getPlaceholderInAncestors(
|
|
612
|
+
if (_tile15.isSelected) {
|
|
613
|
+
getPlaceholderInAncestors(_tile15);
|
|
590
614
|
}
|
|
591
615
|
}
|
|
592
616
|
} catch (err) {
|
|
@@ -596,7 +620,7 @@ function updateTileStateReplace(allTiles) {
|
|
|
596
620
|
}
|
|
597
621
|
|
|
598
622
|
var sortedTiles = Array.from(allTiles).sort(function (t1, t2) {
|
|
599
|
-
return t1.
|
|
623
|
+
return t1.zoom - t2.zoom;
|
|
600
624
|
});
|
|
601
625
|
|
|
602
626
|
var _iterator15 = _createForOfIteratorHelper(sortedTiles),
|
|
@@ -604,11 +628,11 @@ function updateTileStateReplace(allTiles) {
|
|
|
604
628
|
|
|
605
629
|
try {
|
|
606
630
|
for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
|
|
607
|
-
var
|
|
608
|
-
|
|
631
|
+
var _tile16 = _step15.value;
|
|
632
|
+
_tile16.isVisible = Boolean(_tile16.state & TILE_STATE_VISIBLE);
|
|
609
633
|
|
|
610
|
-
if (
|
|
611
|
-
var _iterator16 = _createForOfIteratorHelper(
|
|
634
|
+
if (_tile16.children && (_tile16.isVisible || _tile16.state & TILE_STATE_VISITED)) {
|
|
635
|
+
var _iterator16 = _createForOfIteratorHelper(_tile16.children),
|
|
612
636
|
_step16;
|
|
613
637
|
|
|
614
638
|
try {
|
|
@@ -621,8 +645,8 @@ function updateTileStateReplace(allTiles) {
|
|
|
621
645
|
} finally {
|
|
622
646
|
_iterator16.f();
|
|
623
647
|
}
|
|
624
|
-
} else if (
|
|
625
|
-
getPlaceholderInChildren(
|
|
648
|
+
} else if (_tile16.isSelected) {
|
|
649
|
+
getPlaceholderInChildren(_tile16);
|
|
626
650
|
}
|
|
627
651
|
}
|
|
628
652
|
} catch (err) {
|
|
@@ -632,7 +656,9 @@ function updateTileStateReplace(allTiles) {
|
|
|
632
656
|
}
|
|
633
657
|
}
|
|
634
658
|
|
|
635
|
-
function getPlaceholderInAncestors(
|
|
659
|
+
function getPlaceholderInAncestors(startTile) {
|
|
660
|
+
var tile = startTile;
|
|
661
|
+
|
|
636
662
|
while (tile) {
|
|
637
663
|
if (tile.isLoaded || tile.content) {
|
|
638
664
|
tile.state |= TILE_STATE_VISIBLE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/tileset-2d.js"],"names":["TILE_STATE_VISITED","TILE_STATE_VISIBLE","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","STRATEGIES","updateTileStateDefault","updateTileStateReplace","Tileset2D","opts","onTileLoad","tile","maxCacheByteSize","_cacheByteSize","byteLength","_resizeCache","_requestScheduler","RequestScheduler","maxRequests","throttleRequests","_cache","Map","_tiles","_dirty","_viewport","_selectedTiles","_frameNumber","_modelMatrix","Matrix4","_modelMatrixInverse","setOptions","every","isLoaded","some","needsReload","Object","assign","Number","isFinite","maxZoom","_maxZoom","Math","floor","minZoom","_minZoom","ceil","values","isLoading","abort","clear","keys","tileId","get","includes","delete","setNeedsReload","viewport","zRange","modelMatrix","modelMatrixAsMatrix4","isModelMatrixNew","equals","clone","invert","tileIndices","getTileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","x","y","z","changed","updateTileStates","_pruneRequests","tileSize","extent","zoomOffset","bbox","tileIndex","refinementStrategy","visibilities","Array","size","i","isVisible","isSelected","from","abortCandidates","ongoingRequestCount","push","length","shift","parent","children","_getNearestAncestor","maxCacheSize","Infinity","selectedTiles","overflown","onTileUnload","sort","t1","t2","create","Tile2DHeader","getTileMetadata","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","onTileError","getParentIndex","allTiles","state","getPlaceholderInAncestors","getPlaceholderInChildren","Boolean","sortedTiles","child","content"],"mappings":"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","sourcesContent":["import Tile2DHeader from './tile-2d-header';\nimport {getTileIndices, tileToBoundingBox} from './utils';\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {Matrix4} from '@math.gl/core';\n\n// bit masks\nconst TILE_STATE_VISITED = 1;\nconst TILE_STATE_VISIBLE = 2;\n/*\n show cached parent tile if children are loading\n +-----------+ +-----+ +-----+-----+\n | | | | | | |\n | | | | | | |\n | | --> +-----+-----+ -> +-----+-----+\n | | | | | | |\n | | | | | | |\n +-----------+ +-----+ +-----+-----+\n\n show cached children tiles when parent is loading\n +-------+---- +------------\n | | |\n | | |\n | | |\n +-------+---- --> |\n | | |\n */\n\nexport const STRATEGY_NEVER = 'never';\nexport const STRATEGY_REPLACE = 'no-overlap';\nexport const STRATEGY_DEFAULT = 'best-available';\n\nconst DEFAULT_CACHE_SCALE = 5;\n\nconst STRATEGIES = {\n [STRATEGY_DEFAULT]: updateTileStateDefault,\n [STRATEGY_REPLACE]: updateTileStateReplace,\n [STRATEGY_NEVER]: () => {}\n};\n\n/**\n * Manages loading and purging of tiles data. This class caches recently visited tiles\n * and only create new tiles if they are present.\n */\n\nexport default class Tileset2D {\n /**\n * Takes in a function that returns tile data, a cache size, and a max and a min zoom level.\n * Cache size defaults to 5 * number of tiles in the current viewport\n */\n constructor(opts) {\n this.opts = opts;\n\n this.onTileLoad = tile => {\n this.opts.onTileLoad(tile);\n if (this.opts.maxCacheByteSize) {\n this._cacheByteSize += tile.byteLength;\n this._resizeCache();\n }\n };\n\n this._requestScheduler = new RequestScheduler({\n maxRequests: opts.maxRequests,\n throttleRequests: opts.maxRequests > 0\n });\n\n // Maps tile id in string {z}-{x}-{y} to a Tile object\n this._cache = new Map();\n this._tiles = [];\n this._dirty = false;\n this._cacheByteSize = 0;\n\n // Cache the last processed viewport\n this._viewport = null;\n this._selectedTiles = null;\n this._frameNumber = 0;\n\n this._modelMatrix = new Matrix4();\n this._modelMatrixInverse = new Matrix4();\n\n this.setOptions(opts);\n }\n\n /* Public API */\n get tiles() {\n return this._tiles;\n }\n\n get selectedTiles() {\n return this._selectedTiles;\n }\n\n get isLoaded() {\n return this._selectedTiles.every(tile => tile.isLoaded);\n }\n\n get needsReload() {\n return this._selectedTiles.some(tile => tile.needsReload);\n }\n\n setOptions(opts) {\n Object.assign(this.opts, opts);\n if (Number.isFinite(opts.maxZoom)) {\n this._maxZoom = Math.floor(opts.maxZoom);\n }\n if (Number.isFinite(opts.minZoom)) {\n this._minZoom = Math.ceil(opts.minZoom);\n }\n }\n\n // Clean up any outstanding tile requests.\n finalize() {\n for (const tile of this._cache.values()) {\n if (tile.isLoading) {\n tile.abort();\n }\n }\n this._cache.clear();\n this._tiles = [];\n this._selectedTiles = null;\n }\n\n reloadAll() {\n for (const tileId of this._cache.keys()) {\n const tile = this._cache.get(tileId);\n if (!this._selectedTiles.includes(tile)) {\n this._cache.delete(tileId);\n } else {\n tile.setNeedsReload();\n }\n }\n }\n\n /**\n * Update the cache with the given viewport and model matrix and triggers callback onUpdate.\n * @param {*} viewport\n * @param {*} onUpdate\n * @param {*} modelMatrix\n */\n update(viewport, {zRange, modelMatrix} = {}) {\n const modelMatrixAsMatrix4 = new Matrix4(modelMatrix);\n const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);\n if (!viewport.equals(this._viewport) || isModelMatrixNew) {\n if (isModelMatrixNew) {\n this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();\n this._modelMatrix = modelMatrixAsMatrix4;\n }\n this._viewport = viewport;\n const tileIndices = this.getTileIndices({\n viewport,\n maxZoom: this._maxZoom,\n minZoom: this._minZoom,\n zRange,\n modelMatrix: this._modelMatrix,\n modelMatrixInverse: this._modelMatrixInverse\n });\n this._selectedTiles = tileIndices.map(index => this._getTile(index, true));\n\n if (this._dirty) {\n // Some new tiles are added\n this._rebuildTree();\n }\n // Check for needed reloads explicitly even if the view/matrix has not changed.\n } else if (this.needsReload) {\n this._selectedTiles = this._selectedTiles.map(tile =>\n this._getTile({x: tile.x, y: tile.y, z: tile.z})\n );\n }\n\n // Update tile states\n const changed = this.updateTileStates();\n this._pruneRequests();\n\n if (this._dirty) {\n // cache size is either the user defined maxSize or 5 * number of current tiles in the viewport.\n this._resizeCache();\n }\n\n if (changed) {\n this._frameNumber++;\n }\n\n return this._frameNumber;\n }\n\n /* Public interface for subclassing */\n\n // Returns array of {x, y, z}\n getTileIndices({viewport, maxZoom, minZoom, zRange, modelMatrix, modelMatrixInverse}) {\n const {tileSize, extent, zoomOffset} = this.opts;\n return getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n tileSize,\n extent,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset\n });\n }\n\n // Add custom metadata to tiles\n getTileMetadata({x, y, z}) {\n const {tileSize} = this.opts;\n return {bbox: tileToBoundingBox(this._viewport, x, y, z, tileSize)};\n }\n\n // Returns {x, y, z} of the parent tile\n getParentIndex(tileIndex) {\n // Perf: mutate the input object to avoid GC\n tileIndex.x = Math.floor(tileIndex.x / 2);\n tileIndex.y = Math.floor(tileIndex.y / 2);\n tileIndex.z -= 1;\n return tileIndex;\n }\n\n // Returns true if any tile's visibility changed\n updateTileStates() {\n const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n\n const visibilities = new Array(this._cache.size);\n let i = 0;\n // Reset state\n for (const tile of this._cache.values()) {\n // save previous state\n visibilities[i++] = tile.isVisible;\n tile.isSelected = false;\n tile.isVisible = false;\n }\n for (const tile of this._selectedTiles) {\n tile.isSelected = true;\n tile.isVisible = true;\n }\n\n // Strategy-specific state logic\n (typeof refinementStrategy === 'function'\n ? refinementStrategy\n : STRATEGIES[refinementStrategy])(Array.from(this._cache.values()));\n\n i = 0;\n // Check if any visibility has changed\n for (const tile of this._cache.values()) {\n if (visibilities[i++] !== tile.isVisible) {\n return true;\n }\n }\n\n return false;\n }\n\n /* Private methods */\n\n _pruneRequests() {\n const {maxRequests} = this.opts;\n\n const abortCandidates = [];\n let ongoingRequestCount = 0;\n for (const tile of this._cache.values()) {\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected && !tile.isVisible) {\n abortCandidates.push(tile);\n }\n }\n }\n\n while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {\n // There are too many ongoing requests, so abort some that are unselected\n const tile = abortCandidates.shift();\n tile.abort();\n ongoingRequestCount--;\n }\n }\n\n // This needs to be called every time some tiles have been added/removed from cache\n _rebuildTree() {\n const {_cache} = this;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.parent = null;\n tile.children.length = 0;\n }\n\n // Rebuild tree\n for (const tile of _cache.values()) {\n const parent = this._getNearestAncestor(tile.x, tile.y, tile.z);\n tile.parent = parent;\n if (parent) {\n parent.children.push(tile);\n }\n }\n }\n\n /**\n * Clear tiles that are not visible when the cache is full\n */\n /* eslint-disable complexity */\n _resizeCache() {\n const {_cache, opts} = this;\n\n const maxCacheSize =\n opts.maxCacheSize ||\n (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);\n const maxCacheByteSize = opts.maxCacheByteSize || Infinity;\n\n const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;\n\n if (overflown) {\n for (const [tileId, tile] of _cache) {\n if (!tile.isVisible) {\n // delete tile\n this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;\n _cache.delete(tileId);\n this.opts.onTileUnload(tile);\n }\n if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {\n break;\n }\n }\n this._rebuildTree();\n this._dirty = true;\n }\n if (this._dirty) {\n this._tiles = Array.from(this._cache.values())\n // sort by zoom level so that smaller tiles are displayed on top\n .sort((t1, t2) => t1.z - t2.z);\n\n this._dirty = false;\n }\n }\n /* eslint-enable complexity */\n\n _getTile({x, y, z}, create) {\n const tileId = `${x},${y},${z}`;\n let tile = this._cache.get(tileId);\n let needsReload = false;\n\n if (!tile && create) {\n tile = new Tile2DHeader({x, y, z});\n Object.assign(tile, this.getTileMetadata(tile));\n needsReload = true;\n this._cache.set(tileId, tile);\n this._dirty = true;\n } else if (tile && tile.needsReload) {\n needsReload = true;\n }\n if (needsReload) {\n tile.loadData({\n getData: this.opts.getTileData,\n requestScheduler: this._requestScheduler,\n onLoad: this.onTileLoad,\n onError: this.opts.onTileError\n });\n }\n\n return tile;\n }\n\n _getNearestAncestor(x, y, z) {\n const {_minZoom = 0} = this;\n let index = {x, y, z};\n\n while (index.z > _minZoom) {\n index = this.getParentIndex(index);\n const parent = this._getTile(index);\n if (parent) {\n return parent;\n }\n }\n return null;\n }\n}\n\n/* -- Refinement strategies --*/\n/* eslint-disable max-depth */\n\n// For all the selected && pending tiles:\n// - pick the closest ancestor as placeholder\n// - if no ancestor is visible, pick the closest children as placeholder\nfunction updateTileStateDefault(allTiles) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected && !getPlaceholderInAncestors(tile)) {\n getPlaceholderInChildren(tile);\n }\n }\n for (const tile of allTiles) {\n tile.isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);\n }\n}\n\n// Until a selected tile and all its selected siblings are loaded, use the closest ancestor as placeholder\nfunction updateTileStateReplace(allTiles) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected) {\n getPlaceholderInAncestors(tile);\n }\n }\n // Always process parents first\n const sortedTiles = Array.from(allTiles).sort((t1, t2) => t1.z - t2.z);\n for (const tile of sortedTiles) {\n tile.isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);\n\n if (tile.isVisible || tile.state & TILE_STATE_VISITED) {\n // If the tile is rendered, or if the tile has been explicitly hidden, hide all of its children\n for (const child of tile.children) {\n child.state = TILE_STATE_VISITED;\n }\n } else if (tile.isSelected) {\n getPlaceholderInChildren(tile);\n }\n }\n}\n\n// Walk up the tree until we find one ancestor that is loaded. Returns true if successful.\nfunction getPlaceholderInAncestors(tile) {\n while (tile) {\n if (tile.isLoaded || tile.content) {\n tile.state |= TILE_STATE_VISIBLE;\n return true;\n }\n tile = tile.parent;\n }\n return false;\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n if (child.isLoaded || child.content) {\n child.state |= TILE_STATE_VISIBLE;\n } else {\n getPlaceholderInChildren(child);\n }\n }\n}\n"],"file":"tileset-2d.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-layer/tileset-2d.ts"],"names":["TILE_STATE_VISITED","TILE_STATE_VISIBLE","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","STRATEGIES","updateTileStateDefault","updateTileStateReplace","Tileset2D","opts","onTileLoad","tile","maxCacheByteSize","_cacheByteSize","byteLength","_resizeCache","_requestScheduler","RequestScheduler","maxRequests","throttleRequests","_cache","Map","_tiles","_dirty","_viewport","_selectedTiles","_frameNumber","_modelMatrix","Matrix4","_modelMatrixInverse","setOptions","every","isLoaded","some","needsReload","Object","assign","Number","isFinite","maxZoom","_maxZoom","Math","floor","minZoom","_minZoom","ceil","values","isLoading","abort","clear","keys","id","get","includes","delete","setNeedsReload","viewport","zRange","modelMatrix","modelMatrixAsMatrix4","isModelMatrixNew","equals","clone","invert","tileIndices","getTileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","changed","updateTileStates","_pruneRequests","tileSize","extent","zoomOffset","x","y","z","bbox","refinementStrategy","visibilities","Array","size","i","isVisible","isSelected","from","abortCandidates","ongoingRequestCount","push","length","shift","parent","children","_getNearestAncestor","selectedTiles","maxCacheSize","Infinity","overflown","onTileUnload","sort","t1","t2","zoom","create","getTileId","Tile2DHeader","getTileMetadata","getTileZoom","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","onTileError","getParentIndex","allTiles","state","getPlaceholderInAncestors","getPlaceholderInChildren","Boolean","sortedTiles","child","startTile","content"],"mappings":"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","sourcesContent":["import Tile2DHeader from './tile-2d-header';\nimport {getTileIndices, tileToBoundingBox} from './utils';\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {Matrix4} from '@math.gl/core';\nimport {assert, Viewport} from '@deck.gl/core';\nimport {Bounds, TileIndex, ZRange} from './types';\nimport {TileLayerProps} from './tile-layer';\n\n// bit masks\nconst TILE_STATE_VISITED = 1;\nconst TILE_STATE_VISIBLE = 2;\n/*\n show cached parent tile if children are loading\n +-----------+ +-----+ +-----+-----+\n | | | | | | |\n | | | | | | |\n | | --> +-----+-----+ -> +-----+-----+\n | | | | | | |\n | | | | | | |\n +-----------+ +-----+ +-----+-----+\n\n show cached children tiles when parent is loading\n +-------+---- +------------\n | | |\n | | |\n | | |\n +-------+---- --> |\n | | |\n */\n\nexport const STRATEGY_NEVER = 'never';\nexport const STRATEGY_REPLACE = 'no-overlap';\nexport const STRATEGY_DEFAULT = 'best-available';\n\nexport type RefinementStrategyFunction = (tiles: Tile2DHeader[]) => void;\nexport type RefinementStrategy =\n | typeof STRATEGY_NEVER\n | typeof STRATEGY_REPLACE\n | typeof STRATEGY_DEFAULT\n | RefinementStrategyFunction;\n\nconst DEFAULT_CACHE_SCALE = 5;\n\nconst STRATEGIES = {\n [STRATEGY_DEFAULT]: updateTileStateDefault,\n [STRATEGY_REPLACE]: updateTileStateReplace,\n [STRATEGY_NEVER]: () => {}\n};\n\nexport type Tileset2DProps = Pick<\n TileLayerProps,\n | 'getTileData'\n | 'tileSize'\n | 'maxCacheSize'\n | 'maxCacheByteSize'\n | 'refinementStrategy'\n | 'extent'\n | 'maxZoom'\n | 'minZoom'\n | 'maxRequests'\n | 'zoomOffset'\n> & {\n onTileLoad: (tile: Tile2DHeader) => void;\n onTileUnload: (tile: Tile2DHeader) => void;\n onTileError: (error: any, tile: Tile2DHeader) => void;\n};\n\n/**\n * Manages loading and purging of tile data. This class caches recently visited tiles\n * and only creates new tiles if they are present.\n */\nexport default class Tileset2D {\n private opts: Tileset2DProps;\n private _requestScheduler: RequestScheduler;\n private _cache: Map<string, Tile2DHeader>;\n private _dirty: boolean;\n private _tiles: Tile2DHeader[];\n\n private _cacheByteSize: number;\n private _viewport: Viewport | null;\n private _selectedTiles: Tile2DHeader[] | null;\n private _frameNumber: number;\n private _modelMatrix: Matrix4;\n private _modelMatrixInverse: Matrix4;\n\n private _maxZoom?: number;\n private _minZoom?: number;\n\n private onTileLoad: (tile: Tile2DHeader) => void;\n\n /**\n * Takes in a function that returns tile data, a cache size, and a max and a min zoom level.\n * Cache size defaults to 5 * number of tiles in the current viewport\n */\n constructor(opts: Tileset2DProps) {\n this.opts = opts;\n\n this.onTileLoad = tile => {\n this.opts.onTileLoad(tile);\n if (this.opts.maxCacheByteSize) {\n this._cacheByteSize += tile.byteLength;\n this._resizeCache();\n }\n };\n\n this._requestScheduler = new RequestScheduler({\n maxRequests: opts.maxRequests,\n throttleRequests: opts.maxRequests > 0\n });\n\n // Maps tile id in string {z}-{x}-{y} to a Tile object\n this._cache = new Map();\n this._tiles = [];\n this._dirty = false;\n this._cacheByteSize = 0;\n\n // Cache the last processed viewport\n this._viewport = null;\n this._selectedTiles = null;\n this._frameNumber = 0;\n\n this._modelMatrix = new Matrix4();\n this._modelMatrixInverse = new Matrix4();\n\n this.setOptions(opts);\n }\n\n /* Public API */\n get tiles() {\n return this._tiles;\n }\n\n get selectedTiles(): Tile2DHeader[] | null {\n return this._selectedTiles;\n }\n\n get isLoaded(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.every(tile => tile.isLoaded);\n }\n\n get needsReload(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.some(tile => tile.needsReload);\n }\n\n setOptions(opts: Tileset2DProps): void {\n Object.assign(this.opts, opts);\n if (Number.isFinite(opts.maxZoom)) {\n this._maxZoom = Math.floor(opts.maxZoom);\n }\n if (Number.isFinite(opts.minZoom)) {\n this._minZoom = Math.ceil(opts.minZoom);\n }\n }\n\n // Clean up any outstanding tile requests.\n finalize(): void {\n for (const tile of this._cache.values()) {\n if (tile.isLoading) {\n tile.abort();\n }\n }\n this._cache.clear();\n this._tiles = [];\n this._selectedTiles = null;\n }\n\n reloadAll(): void {\n for (const id of this._cache.keys()) {\n const tile = this._cache.get(id) as Tile2DHeader;\n if (!this._selectedTiles || !this._selectedTiles.includes(tile)) {\n this._cache.delete(id);\n } else {\n tile.setNeedsReload();\n }\n }\n }\n\n /**\n * Update the cache with the given viewport and model matrix and triggers callback onUpdate.\n */\n update(\n viewport: Viewport,\n {zRange, modelMatrix}: {zRange?: ZRange; modelMatrix?: Matrix4} = {}\n ): number {\n const modelMatrixAsMatrix4 = new Matrix4(modelMatrix);\n const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);\n if (!this._viewport || !viewport.equals(this._viewport) || isModelMatrixNew) {\n if (isModelMatrixNew) {\n this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();\n this._modelMatrix = modelMatrixAsMatrix4;\n }\n this._viewport = viewport;\n const tileIndices = this.getTileIndices({\n viewport,\n maxZoom: this._maxZoom,\n minZoom: this._minZoom,\n zRange,\n modelMatrix: this._modelMatrix,\n modelMatrixInverse: this._modelMatrixInverse\n });\n this._selectedTiles = tileIndices.map(index => this._getTile(index, true));\n\n if (this._dirty) {\n // Some new tiles are added\n this._rebuildTree();\n }\n // Check for needed reloads explicitly even if the view/matrix has not changed.\n } else if (this.needsReload) {\n this._selectedTiles = this._selectedTiles!.map(tile => this._getTile(tile.index));\n }\n\n // Update tile states\n const changed = this.updateTileStates();\n this._pruneRequests();\n\n if (this._dirty) {\n // cache size is either the user defined maxSize or 5 * number of current tiles in the viewport.\n this._resizeCache();\n }\n\n if (changed) {\n this._frameNumber++;\n }\n\n return this._frameNumber;\n }\n\n /* Public interface for subclassing */\n\n /** Returns array of tile indices in the current viewport */\n getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n modelMatrix,\n modelMatrixInverse\n }: {\n viewport: Viewport;\n maxZoom?: number;\n minZoom?: number;\n zRange: ZRange | undefined;\n tileSize?: number;\n modelMatrix?: Matrix4;\n modelMatrixInverse?: Matrix4;\n zoomOffset?: number;\n }): TileIndex[] {\n const {tileSize, extent, zoomOffset} = this.opts;\n return getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n tileSize,\n extent: extent as Bounds | undefined,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset\n });\n }\n\n /** Returns unique string key for a tile index */\n getTileId(index: TileIndex) {\n return `${index.x}-${index.y}-${index.z}`;\n }\n\n /** Returns a zoom level for a tile index */\n getTileZoom(index: TileIndex) {\n return index.z;\n }\n\n /** Returns additional metadata to add to tile, bbox by default */\n getTileMetadata(index: TileIndex) {\n assert(this._viewport);\n const {tileSize} = this.opts;\n return {bbox: tileToBoundingBox(this._viewport, index.x, index.y, index.z, tileSize)};\n }\n\n /** Returns index of the parent tile */\n getParentIndex(index: TileIndex) {\n const x = Math.floor(index.x / 2);\n const y = Math.floor(index.y / 2);\n const z = index.z - 1;\n return {x, y, z};\n }\n\n // Returns true if any tile's visibility changed\n updateTileStates() {\n assert(this._selectedTiles);\n const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n\n const visibilities = new Array(this._cache.size);\n let i = 0;\n // Reset state\n for (const tile of this._cache.values()) {\n // save previous state\n visibilities[i++] = tile.isVisible;\n tile.isSelected = false;\n tile.isVisible = false;\n }\n for (const tile of this._selectedTiles) {\n tile.isSelected = true;\n tile.isVisible = true;\n }\n\n // Strategy-specific state logic\n (typeof refinementStrategy === 'function'\n ? refinementStrategy\n : STRATEGIES[refinementStrategy])(Array.from(this._cache.values()));\n\n i = 0;\n // Check if any visibility has changed\n for (const tile of this._cache.values()) {\n if (visibilities[i++] !== tile.isVisible) {\n return true;\n }\n }\n\n return false;\n }\n\n /* Private methods */\n\n _pruneRequests(): void {\n const {maxRequests} = this.opts;\n\n const abortCandidates: Tile2DHeader[] = [];\n let ongoingRequestCount = 0;\n for (const tile of this._cache.values()) {\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected && !tile.isVisible) {\n abortCandidates.push(tile);\n }\n }\n }\n\n while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {\n // There are too many ongoing requests, so abort some that are unselected\n const tile = abortCandidates.shift()!;\n tile.abort();\n ongoingRequestCount--;\n }\n }\n\n // This needs to be called every time some tiles have been added/removed from cache\n _rebuildTree() {\n const {_cache} = this;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.parent = null;\n if (tile.children) {\n tile.children.length = 0;\n }\n }\n\n // Rebuild tree\n for (const tile of _cache.values()) {\n const parent = this._getNearestAncestor(tile);\n tile.parent = parent;\n if (parent?.children) {\n parent.children.push(tile);\n }\n }\n }\n\n /**\n * Clear tiles that are not visible when the cache is full\n */\n /* eslint-disable complexity */\n _resizeCache() {\n assert(this.selectedTiles);\n const {_cache, opts} = this;\n\n const maxCacheSize =\n opts.maxCacheSize ||\n (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);\n const maxCacheByteSize = opts.maxCacheByteSize || Infinity;\n\n const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;\n\n if (overflown) {\n for (const [id, tile] of _cache) {\n if (!tile.isVisible) {\n // delete tile\n this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;\n _cache.delete(id);\n this.opts.onTileUnload(tile);\n }\n if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {\n break;\n }\n }\n this._rebuildTree();\n this._dirty = true;\n }\n if (this._dirty) {\n // sort by zoom level so that smaller tiles are displayed on top\n this._tiles = Array.from(this._cache.values()).sort((t1, t2) => t1.zoom - t2.zoom);\n\n this._dirty = false;\n }\n }\n /* eslint-enable complexity */\n\n _getTile(index: TileIndex, create: true): Tile2DHeader;\n _getTile(index: TileIndex, create?: false): Tile2DHeader | undefined;\n _getTile(index: TileIndex, create?: boolean): Tile2DHeader | undefined {\n const id = this.getTileId(index);\n let tile = this._cache.get(id);\n let needsReload = false;\n\n if (!tile && create) {\n tile = new Tile2DHeader(index);\n Object.assign(tile, this.getTileMetadata(tile.index));\n Object.assign(tile, {id, zoom: this.getTileZoom(tile.index)});\n needsReload = true;\n this._cache.set(id, tile);\n this._dirty = true;\n } else if (tile && tile.needsReload) {\n needsReload = true;\n }\n if (tile && needsReload) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tile.loadData({\n getData: this.opts.getTileData,\n requestScheduler: this._requestScheduler,\n onLoad: this.onTileLoad,\n onError: this.opts.onTileError\n });\n }\n\n return tile;\n }\n\n _getNearestAncestor(tile: Tile2DHeader): Tile2DHeader | null {\n const {_minZoom = 0} = this;\n\n let index = tile.index;\n while (this.getTileZoom(index) > _minZoom) {\n index = this.getParentIndex(index);\n const parent = this._getTile(index);\n if (parent) {\n return parent;\n }\n }\n return null;\n }\n}\n\n/* -- Refinement strategies --*/\n/* eslint-disable max-depth */\n\n// For all the selected && pending tiles:\n// - pick the closest ancestor as placeholder\n// - if no ancestor is visible, pick the closest children as placeholder\nfunction updateTileStateDefault(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected && !getPlaceholderInAncestors(tile)) {\n getPlaceholderInChildren(tile);\n }\n }\n for (const tile of allTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n }\n}\n\n// Until a selected tile and all its selected siblings are loaded, use the closest ancestor as placeholder\nfunction updateTileStateReplace(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected) {\n getPlaceholderInAncestors(tile);\n }\n }\n // Always process parents first\n const sortedTiles = Array.from(allTiles).sort((t1, t2) => t1.zoom - t2.zoom);\n for (const tile of sortedTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n\n if (tile.children && (tile.isVisible || tile.state! & TILE_STATE_VISITED)) {\n // If the tile is rendered, or if the tile has been explicitly hidden, hide all of its children\n for (const child of tile.children) {\n child.state = TILE_STATE_VISITED;\n }\n } else if (tile.isSelected) {\n getPlaceholderInChildren(tile);\n }\n }\n}\n\n// Walk up the tree until we find one ancestor that is loaded. Returns true if successful.\nfunction getPlaceholderInAncestors(startTile: Tile2DHeader) {\n let tile: Tile2DHeader | null = startTile;\n while (tile) {\n if (tile.isLoaded || tile.content) {\n tile.state! |= TILE_STATE_VISIBLE;\n return true;\n }\n tile = tile.parent;\n }\n return false;\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n if (child.isLoaded || child.content) {\n child.state |= TILE_STATE_VISIBLE;\n } else {\n getPlaceholderInChildren(child);\n }\n }\n}\n"],"file":"tileset-2d.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
|