@deck.gl/geo-layers 8.6.6 → 8.6.9
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 +33 -21
- package/dist/es5/tile-layer/tileset-2d.js +19 -2
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +1 -1
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js +14 -2
- 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 +1 -1
- package/package.json +2 -2
- package/src/tile-layer/tileset-2d.js +14 -2
- package/src/tile-layer/utils.js +4 -4
package/dist/dist.dev.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
exports["deck"] = factory(require("deck"), require("luma"), require("h3"));
|
|
8
8
|
else
|
|
9
9
|
root["deck"] = factory(root["deck"], root["luma"], root["h3"]);
|
|
10
|
-
})(window, function(
|
|
10
|
+
})(window, function(__WEBPACK_EXTERNAL_MODULE__deck_gl_layers__, __WEBPACK_EXTERNAL_MODULE__luma_gl_core__, __WEBPACK_EXTERNAL_MODULE_h3_js__) {
|
|
11
11
|
return /******/ (function(modules) { // webpackBootstrap
|
|
12
12
|
/******/ // The module cache
|
|
13
13
|
/******/ var installedModules = {};
|
|
@@ -63495,7 +63495,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
63495
63495
|
|
|
63496
63496
|
|
|
63497
63497
|
|
|
63498
|
-
const VERSION = true ? "8.6.
|
|
63498
|
+
const VERSION = true ? "8.6.9" : undefined;
|
|
63499
63499
|
const isBrowser = Object(_env_is_browser__WEBPACK_IMPORTED_MODULE_0__["default"])();
|
|
63500
63500
|
//# sourceMappingURL=globals.js.map
|
|
63501
63501
|
|
|
@@ -63932,7 +63932,7 @@ module.exports = Object.assign(deck, deckGLLayers);
|
|
|
63932
63932
|
"use strict";
|
|
63933
63933
|
__webpack_require__.r(__webpack_exports__);
|
|
63934
63934
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return GreatCircleLayer; });
|
|
63935
|
-
/* harmony import */ var _deck_gl_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/layers */ "@deck.gl/
|
|
63935
|
+
/* harmony import */ var _deck_gl_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/layers */ "@deck.gl/layers");
|
|
63936
63936
|
/* harmony import */ var _deck_gl_layers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_layers__WEBPACK_IMPORTED_MODULE_0__);
|
|
63937
63937
|
// Copyright (c) 2015 - 2017 Uber Technologies, Inc.
|
|
63938
63938
|
//
|
|
@@ -63981,7 +63981,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
63981
63981
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return H3ClusterLayer; });
|
|
63982
63982
|
/* harmony import */ var h3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! h3-js */ "h3-js");
|
|
63983
63983
|
/* harmony import */ var h3_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(h3_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
63984
|
-
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/
|
|
63984
|
+
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/layers");
|
|
63985
63985
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_1__);
|
|
63986
63986
|
|
|
63987
63987
|
|
|
@@ -64101,7 +64101,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
64101
64101
|
/* harmony import */ var h3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! h3-js */ "h3-js");
|
|
64102
64102
|
/* harmony import */ var h3_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(h3_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
64103
64103
|
/* harmony import */ var math_gl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! math.gl */ "../../node_modules/math.gl/dist/esm/index.js");
|
|
64104
|
-
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/
|
|
64104
|
+
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/layers");
|
|
64105
64105
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_2__);
|
|
64106
64106
|
|
|
64107
64107
|
|
|
@@ -64663,7 +64663,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
64663
64663
|
/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/core */ "@luma.gl/core");
|
|
64664
64664
|
/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_luma_gl_core__WEBPACK_IMPORTED_MODULE_1__);
|
|
64665
64665
|
/* harmony import */ var _luma_gl_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/constants */ "../../node_modules/@luma.gl/constants/dist/esm/index.js");
|
|
64666
|
-
/* harmony import */ var _deck_gl_mesh_layers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/mesh-layers */ "@deck.gl/
|
|
64666
|
+
/* harmony import */ var _deck_gl_mesh_layers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/mesh-layers */ "@deck.gl/layers");
|
|
64667
64667
|
/* harmony import */ var _deck_gl_mesh_layers__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_mesh_layers__WEBPACK_IMPORTED_MODULE_3__);
|
|
64668
64668
|
/* harmony import */ var _mesh_layer_vertex_glsl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mesh-layer-vertex.glsl */ "./src/mesh-layer/mesh-layer-vertex.glsl.js");
|
|
64669
64669
|
/* harmony import */ var _mesh_layer_fragment_glsl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mesh-layer-fragment.glsl */ "./src/mesh-layer/mesh-layer-fragment.glsl.js");
|
|
@@ -65007,7 +65007,7 @@ function findIndex(array, predicate, startIndex, endIndex) {
|
|
|
65007
65007
|
"use strict";
|
|
65008
65008
|
__webpack_require__.r(__webpack_exports__);
|
|
65009
65009
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return MVTLayer; });
|
|
65010
|
-
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/
|
|
65010
|
+
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/layers");
|
|
65011
65011
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
|
|
65012
65012
|
/* harmony import */ var math_gl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! math.gl */ "../../node_modules/math.gl/dist/esm/index.js");
|
|
65013
65013
|
/* harmony import */ var _loaders_gl_mvt__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @loaders.gl/mvt */ "../../node_modules/@loaders.gl/mvt/dist/esm/index.js");
|
|
@@ -65552,7 +65552,7 @@ function FromHilbertQuadKey(hilbertQuadkey) {
|
|
|
65552
65552
|
"use strict";
|
|
65553
65553
|
__webpack_require__.r(__webpack_exports__);
|
|
65554
65554
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return S2Layer; });
|
|
65555
|
-
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/
|
|
65555
|
+
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/layers");
|
|
65556
65556
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
|
|
65557
65557
|
/* harmony import */ var _s2_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./s2-utils */ "./src/s2-layer/s2-utils.js");
|
|
65558
65558
|
// Copyright (c) 2015 - 2017 Uber Technologies, Inc.
|
|
@@ -65788,7 +65788,7 @@ function getS2Polygon(token) {
|
|
|
65788
65788
|
"use strict";
|
|
65789
65789
|
__webpack_require__.r(__webpack_exports__);
|
|
65790
65790
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return TerrainLayer; });
|
|
65791
|
-
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/
|
|
65791
|
+
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/layers");
|
|
65792
65792
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
|
|
65793
65793
|
/* harmony import */ var _loaders_gl_terrain__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @loaders.gl/terrain */ "../../node_modules/@loaders.gl/terrain/dist/esm/index.js");
|
|
65794
65794
|
/* harmony import */ var _tile_layer_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../tile-layer/tile-layer */ "./src/tile-layer/tile-layer.js");
|
|
@@ -66088,7 +66088,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
66088
66088
|
/* harmony import */ var _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/constants */ "../../node_modules/@luma.gl/constants/dist/esm/index.js");
|
|
66089
66089
|
/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/core */ "@luma.gl/core");
|
|
66090
66090
|
/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_luma_gl_core__WEBPACK_IMPORTED_MODULE_1__);
|
|
66091
|
-
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/
|
|
66091
|
+
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/layers");
|
|
66092
66092
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_2__);
|
|
66093
66093
|
/* harmony import */ var _mesh_layer_mesh_layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../mesh-layer/mesh-layer */ "./src/mesh-layer/mesh-layer.js");
|
|
66094
66094
|
/* harmony import */ var _loaders_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @loaders.gl/core */ "../../node_modules/@loaders.gl/core/dist/esm/index.js");
|
|
@@ -66461,7 +66461,7 @@ Tile3DLayer.defaultProps = defaultProps;
|
|
|
66461
66461
|
"use strict";
|
|
66462
66462
|
__webpack_require__.r(__webpack_exports__);
|
|
66463
66463
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Tile2DHeader; });
|
|
66464
|
-
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/
|
|
66464
|
+
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/layers");
|
|
66465
66465
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
|
|
66466
66466
|
/* eslint-env browser */
|
|
66467
66467
|
|
|
@@ -66818,7 +66818,7 @@ function getOSMTileIndices(viewport, maxZ, zRange, bounds) {
|
|
|
66818
66818
|
"use strict";
|
|
66819
66819
|
__webpack_require__.r(__webpack_exports__);
|
|
66820
66820
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return TileLayer; });
|
|
66821
|
-
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/
|
|
66821
|
+
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/layers");
|
|
66822
66822
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
|
|
66823
66823
|
/* harmony import */ var _tileset_2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tileset-2d */ "./src/tile-layer/tileset-2d.js");
|
|
66824
66824
|
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/tile-layer/utils.js");
|
|
@@ -67156,6 +67156,9 @@ class Tileset2D {
|
|
|
67156
67156
|
this._selectedTiles = null;
|
|
67157
67157
|
this._frameNumber = 0;
|
|
67158
67158
|
|
|
67159
|
+
this._modelMatrix = new math_gl__WEBPACK_IMPORTED_MODULE_3__["Matrix4"]();
|
|
67160
|
+
this._modelMatrixInverse = new math_gl__WEBPACK_IMPORTED_MODULE_3__["Matrix4"]();
|
|
67161
|
+
|
|
67159
67162
|
this.setOptions(opts);
|
|
67160
67163
|
}
|
|
67161
67164
|
|
|
@@ -67172,6 +67175,10 @@ class Tileset2D {
|
|
|
67172
67175
|
return this._selectedTiles.every(tile => tile.isLoaded);
|
|
67173
67176
|
}
|
|
67174
67177
|
|
|
67178
|
+
get needsReload() {
|
|
67179
|
+
return this._selectedTiles.some(tile => tile.needsReload);
|
|
67180
|
+
}
|
|
67181
|
+
|
|
67175
67182
|
setOptions(opts) {
|
|
67176
67183
|
Object.assign(this.opts, opts);
|
|
67177
67184
|
if (Number.isFinite(opts.maxZoom)) {
|
|
@@ -67216,8 +67223,8 @@ class Tileset2D {
|
|
|
67216
67223
|
const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);
|
|
67217
67224
|
if (!viewport.equals(this._viewport) || isModelMatrixNew) {
|
|
67218
67225
|
if (isModelMatrixNew) {
|
|
67219
|
-
this._modelMatrixInverse =
|
|
67220
|
-
this._modelMatrix =
|
|
67226
|
+
this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();
|
|
67227
|
+
this._modelMatrix = modelMatrixAsMatrix4;
|
|
67221
67228
|
}
|
|
67222
67229
|
this._viewport = viewport;
|
|
67223
67230
|
const tileIndices = this.getTileIndices({
|
|
@@ -67234,6 +67241,11 @@ class Tileset2D {
|
|
|
67234
67241
|
// Some new tiles are added
|
|
67235
67242
|
this._rebuildTree();
|
|
67236
67243
|
}
|
|
67244
|
+
// Check for needed reloads explicitly even if the view/matrix has not changed.
|
|
67245
|
+
} else if (this.needsReload) {
|
|
67246
|
+
this._selectedTiles = this._selectedTiles.map(tile =>
|
|
67247
|
+
this._getTile({x: tile.x, y: tile.y, z: tile.z})
|
|
67248
|
+
);
|
|
67237
67249
|
}
|
|
67238
67250
|
|
|
67239
67251
|
// Update tile states
|
|
@@ -67557,13 +67569,13 @@ const urlType = {
|
|
|
67557
67569
|
function transformBox(bbox, modelMatrix) {
|
|
67558
67570
|
const transformedCoords = [
|
|
67559
67571
|
// top-left
|
|
67560
|
-
modelMatrix.
|
|
67572
|
+
modelMatrix.transformAsPoint([bbox[0], bbox[1]]),
|
|
67561
67573
|
// top-right
|
|
67562
|
-
modelMatrix.
|
|
67574
|
+
modelMatrix.transformAsPoint([bbox[2], bbox[1]]),
|
|
67563
67575
|
// bottom-left
|
|
67564
|
-
modelMatrix.
|
|
67576
|
+
modelMatrix.transformAsPoint([bbox[0], bbox[3]]),
|
|
67565
67577
|
// bottom-right
|
|
67566
|
-
modelMatrix.
|
|
67578
|
+
modelMatrix.transformAsPoint([bbox[2], bbox[3]])
|
|
67567
67579
|
];
|
|
67568
67580
|
const transformedBox = [
|
|
67569
67581
|
// Minimum x coord
|
|
@@ -67751,7 +67763,7 @@ function isURLTemplate(s) {
|
|
|
67751
67763
|
"use strict";
|
|
67752
67764
|
__webpack_require__.r(__webpack_exports__);
|
|
67753
67765
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return TripsLayer; });
|
|
67754
|
-
/* harmony import */ var _deck_gl_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/layers */ "@deck.gl/
|
|
67766
|
+
/* harmony import */ var _deck_gl_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/layers */ "@deck.gl/layers");
|
|
67755
67767
|
/* harmony import */ var _deck_gl_layers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_layers__WEBPACK_IMPORTED_MODULE_0__);
|
|
67756
67768
|
// Copyright (c) 2015 - 2017 Uber Technologies, Inc.
|
|
67757
67769
|
//
|
|
@@ -67935,14 +67947,14 @@ TripsLayer.defaultProps = defaultProps;
|
|
|
67935
67947
|
|
|
67936
67948
|
/***/ }),
|
|
67937
67949
|
|
|
67938
|
-
/***/ "@deck.gl/
|
|
67950
|
+
/***/ "@deck.gl/layers":
|
|
67939
67951
|
/*!***********************!*\
|
|
67940
67952
|
!*** external "deck" ***!
|
|
67941
67953
|
\***********************/
|
|
67942
67954
|
/*! no static exports found */
|
|
67943
67955
|
/***/ (function(module, exports) {
|
|
67944
67956
|
|
|
67945
|
-
module.exports =
|
|
67957
|
+
module.exports = __WEBPACK_EXTERNAL_MODULE__deck_gl_layers__;
|
|
67946
67958
|
|
|
67947
67959
|
/***/ }),
|
|
67948
67960
|
|
|
@@ -68,6 +68,8 @@ var Tileset2D = function () {
|
|
|
68
68
|
this._viewport = null;
|
|
69
69
|
this._selectedTiles = null;
|
|
70
70
|
this._frameNumber = 0;
|
|
71
|
+
this._modelMatrix = new _math.Matrix4();
|
|
72
|
+
this._modelMatrixInverse = new _math.Matrix4();
|
|
71
73
|
this.setOptions(opts);
|
|
72
74
|
}
|
|
73
75
|
|
|
@@ -88,6 +90,13 @@ var Tileset2D = function () {
|
|
|
88
90
|
return tile.isLoaded;
|
|
89
91
|
});
|
|
90
92
|
}
|
|
93
|
+
}, {
|
|
94
|
+
key: "needsReload",
|
|
95
|
+
get: function get() {
|
|
96
|
+
return this._selectedTiles.some(function (tile) {
|
|
97
|
+
return tile.needsReload;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
91
100
|
}, {
|
|
92
101
|
key: "setOptions",
|
|
93
102
|
value: function setOptions(opts) {
|
|
@@ -164,8 +173,8 @@ var Tileset2D = function () {
|
|
|
164
173
|
|
|
165
174
|
if (!viewport.equals(this._viewport) || isModelMatrixNew) {
|
|
166
175
|
if (isModelMatrixNew) {
|
|
167
|
-
this._modelMatrixInverse =
|
|
168
|
-
this._modelMatrix =
|
|
176
|
+
this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();
|
|
177
|
+
this._modelMatrix = modelMatrixAsMatrix4;
|
|
169
178
|
}
|
|
170
179
|
|
|
171
180
|
this._viewport = viewport;
|
|
@@ -184,6 +193,14 @@ var Tileset2D = function () {
|
|
|
184
193
|
if (this._dirty) {
|
|
185
194
|
this._rebuildTree();
|
|
186
195
|
}
|
|
196
|
+
} else if (this.needsReload) {
|
|
197
|
+
this._selectedTiles = this._selectedTiles.map(function (tile) {
|
|
198
|
+
return _this2._getTile({
|
|
199
|
+
x: tile.x,
|
|
200
|
+
y: tile.y,
|
|
201
|
+
z: tile.z
|
|
202
|
+
});
|
|
203
|
+
});
|
|
187
204
|
}
|
|
188
205
|
|
|
189
206
|
var changed = this.updateTileStates();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/tileset-2d.js"],"names":["TILE_STATE_UNKNOWN","TILE_STATE_VISIBLE","TILE_STATE_PLACEHOLDER","TILE_STATE_HIDDEN","TILE_STATE_SELECTED","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","Tileset2D","opts","onTileLoad","tile","maxCacheByteSize","_cacheByteSize","byteLength","_resizeCache","_requestScheduler","RequestScheduler","maxRequests","throttleRequests","_cache","Map","_tiles","_dirty","_viewport","_selectedTiles","_frameNumber","setOptions","every","isLoaded","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","Matrix4","isModelMatrixNew","equals","_modelMatrix","_modelMatrixInverse","clone","invert","tileIndices","getTileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","changed","updateTileStates","tileSize","extent","zoomOffset","x","y","z","bbox","tileIndex","_updateTileStates","selectedTiles","abortCandidates","ongoingRequestCount","isVisible","Boolean","state","isSelected","push","length","shift","parent","children","_getNearestAncestor","refinementStrategy","getPlaceholderInAncestors","needsPlaceholder","getPlaceholderInChildren","maxCacheSize","Infinity","overflown","size","onTileUnload","Array","from","sort","t1","t2","create","needsReload","Tile2DHeader","getTileMetadata","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","onTileError","getParentIndex","t","max","child"],"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';\n\nconst TILE_STATE_UNKNOWN = 0;\nconst TILE_STATE_VISIBLE = 1;\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 */\nconst TILE_STATE_PLACEHOLDER = 3;\nconst TILE_STATE_HIDDEN = 4;\n// tiles that should be displayed in the current viewport\nconst TILE_STATE_SELECTED = 5;\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\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.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 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 = modelMatrix && modelMatrixAsMatrix4.clone().invert();\n this._modelMatrix = 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 }\n\n // Update tile states\n const changed = this.updateTileStates();\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 this._updateTileStates(this.selectedTiles);\n\n const {maxRequests} = this.opts;\n\n const abortCandidates = [];\n let ongoingRequestCount = 0;\n let changed = false;\n for (const tile of this._cache.values()) {\n const isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);\n if (tile.isVisible !== isVisible) {\n changed = true;\n tile.isVisible = isVisible;\n }\n\n // isSelected used in request scheduler\n tile.isSelected = tile.state === TILE_STATE_SELECTED;\n\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected) {\n abortCandidates.push(tile);\n }\n }\n }\n\n if (maxRequests > 0) {\n while (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 return changed;\n }\n\n /* Private methods */\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 // A selected tile is always visible.\n // Never show two overlapping tiles.\n // If a selected tile is loading, try showing a cached ancester with the closest z\n // If a selected tile is loading, and no ancester is shown - try showing cached\n // descendants with the closest z\n _updateTileStates(selectedTiles) {\n const {_cache} = this;\n const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.state = TILE_STATE_UNKNOWN;\n }\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\n for (const tile of selectedTiles) {\n tile.state = TILE_STATE_SELECTED;\n }\n\n if (refinementStrategy === STRATEGY_NEVER) {\n return;\n }\n for (const tile of selectedTiles) {\n getPlaceholderInAncestors(tile, refinementStrategy);\n }\n for (const tile of selectedTiles) {\n if (needsPlaceholder(tile)) {\n getPlaceholderInChildren(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// A selected tile needs placeholder from its children if\n// - it is not loaded\n// - none of its ancestors is visible and loaded\nfunction needsPlaceholder(tile) {\n let t = tile;\n while (t) {\n if (t.state & (TILE_STATE_VISIBLE === 0)) {\n return true;\n }\n if (t.isLoaded) {\n return false;\n }\n t = t.parent;\n }\n return true;\n}\n\nfunction getPlaceholderInAncestors(tile, refinementStrategy) {\n let parent;\n let state = TILE_STATE_PLACEHOLDER;\n while ((parent = tile.parent)) {\n if (tile.isLoaded) {\n // If a tile is loaded, mark all its ancestors as hidden\n state = TILE_STATE_HIDDEN;\n if (refinementStrategy === STRATEGY_DEFAULT) {\n return;\n }\n }\n parent.state = Math.max(parent.state, state);\n tile = parent;\n }\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n child.state = Math.max(child.state, TILE_STATE_PLACEHOLDER);\n if (!child.isLoaded) {\n getPlaceholderInChildren(child);\n }\n }\n}\n"],"file":"tileset-2d.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-layer/tileset-2d.js"],"names":["TILE_STATE_UNKNOWN","TILE_STATE_VISIBLE","TILE_STATE_PLACEHOLDER","TILE_STATE_HIDDEN","TILE_STATE_SELECTED","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","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","tileSize","extent","zoomOffset","bbox","tileIndex","_updateTileStates","selectedTiles","abortCandidates","ongoingRequestCount","isVisible","Boolean","state","isSelected","push","length","shift","parent","children","_getNearestAncestor","refinementStrategy","getPlaceholderInAncestors","needsPlaceholder","getPlaceholderInChildren","maxCacheSize","Infinity","overflown","size","onTileUnload","Array","from","sort","t1","t2","create","Tile2DHeader","getTileMetadata","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","onTileError","getParentIndex","t","max","child"],"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';\n\nconst TILE_STATE_UNKNOWN = 0;\nconst TILE_STATE_VISIBLE = 1;\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 */\nconst TILE_STATE_PLACEHOLDER = 3;\nconst TILE_STATE_HIDDEN = 4;\n// tiles that should be displayed in the current viewport\nconst TILE_STATE_SELECTED = 5;\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\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\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 this._updateTileStates(this.selectedTiles);\n\n const {maxRequests} = this.opts;\n\n const abortCandidates = [];\n let ongoingRequestCount = 0;\n let changed = false;\n for (const tile of this._cache.values()) {\n const isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);\n if (tile.isVisible !== isVisible) {\n changed = true;\n tile.isVisible = isVisible;\n }\n\n // isSelected used in request scheduler\n tile.isSelected = tile.state === TILE_STATE_SELECTED;\n\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected) {\n abortCandidates.push(tile);\n }\n }\n }\n\n if (maxRequests > 0) {\n while (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 return changed;\n }\n\n /* Private methods */\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 // A selected tile is always visible.\n // Never show two overlapping tiles.\n // If a selected tile is loading, try showing a cached ancester with the closest z\n // If a selected tile is loading, and no ancester is shown - try showing cached\n // descendants with the closest z\n _updateTileStates(selectedTiles) {\n const {_cache} = this;\n const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.state = TILE_STATE_UNKNOWN;\n }\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\n for (const tile of selectedTiles) {\n tile.state = TILE_STATE_SELECTED;\n }\n\n if (refinementStrategy === STRATEGY_NEVER) {\n return;\n }\n for (const tile of selectedTiles) {\n getPlaceholderInAncestors(tile, refinementStrategy);\n }\n for (const tile of selectedTiles) {\n if (needsPlaceholder(tile)) {\n getPlaceholderInChildren(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// A selected tile needs placeholder from its children if\n// - it is not loaded\n// - none of its ancestors is visible and loaded\nfunction needsPlaceholder(tile) {\n let t = tile;\n while (t) {\n if (t.state & (TILE_STATE_VISIBLE === 0)) {\n return true;\n }\n if (t.isLoaded) {\n return false;\n }\n t = t.parent;\n }\n return true;\n}\n\nfunction getPlaceholderInAncestors(tile, refinementStrategy) {\n let parent;\n let state = TILE_STATE_PLACEHOLDER;\n while ((parent = tile.parent)) {\n if (tile.isLoaded) {\n // If a tile is loaded, mark all its ancestors as hidden\n state = TILE_STATE_HIDDEN;\n if (refinementStrategy === STRATEGY_DEFAULT) {\n return;\n }\n }\n parent.state = Math.max(parent.state, state);\n tile = parent;\n }\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n child.state = Math.max(child.state, TILE_STATE_PLACEHOLDER);\n if (!child.isLoaded) {\n getPlaceholderInChildren(child);\n }\n }\n}\n"],"file":"tileset-2d.js"}
|
|
@@ -55,7 +55,7 @@ var urlType = {
|
|
|
55
55
|
exports.urlType = urlType;
|
|
56
56
|
|
|
57
57
|
function transformBox(bbox, modelMatrix) {
|
|
58
|
-
var transformedCoords = [modelMatrix.
|
|
58
|
+
var transformedCoords = [modelMatrix.transformAsPoint([bbox[0], bbox[1]]), modelMatrix.transformAsPoint([bbox[2], bbox[1]]), modelMatrix.transformAsPoint([bbox[0], bbox[3]]), modelMatrix.transformAsPoint([bbox[2], bbox[3]])];
|
|
59
59
|
var transformedBox = [Math.min.apply(Math, (0, _toConsumableArray2.default)(transformedCoords.map(function (i) {
|
|
60
60
|
return i[0];
|
|
61
61
|
}))), Math.min.apply(Math, (0, _toConsumableArray2.default)(transformedCoords.map(function (i) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/utils.js"],"names":["TILE_SIZE","DEFAULT_EXTENT","Infinity","urlType","type","value","validate","propType","optional","Array","isArray","every","url","equals","value1","value2","len","length","i","transformBox","bbox","modelMatrix","transformedCoords","transformPoint","transformedBox","Math","min","map","max","getURLFromTemplate","template","properties","index","abs","x","y","z","replace","pow","getBoundingBox","viewport","zRange","extent","bounds","minZ","maxZ","bounds0","getBounds","bounds1","isGeospatial","getIndexingCoords","scale","modelMatrixInverse","transformedTileIndex","getScale","tileSize","osmTile2lngLat","lng","n","PI","lat","atan","exp","tile2XY","tileToBoundingBox","west","north","east","south","left","top","right","bottom","getIdentityTileIndices","minX","minY","maxX","maxY","indices","floor","push","getTileIndices","maxZoom","minZoom","zoomOffset","round","zoom","log2","ceil","Number","isFinite","transformedExtent","isURLTemplate","s","test"],"mappings":"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","sourcesContent":["import {getOSMTileIndices} from './tile-2d-traversal';\n\nconst TILE_SIZE = 512;\nconst DEFAULT_EXTENT = [-Infinity, -Infinity, Infinity, Infinity];\n\nexport const urlType = {\n type: 'url',\n value: null,\n validate: (value, propType) =>\n (propType.optional && value === null) ||\n typeof value === 'string' ||\n (Array.isArray(value) && value.every(url => typeof url === 'string')),\n equals: (value1, value2) => {\n if (value1 === value2) {\n return true;\n }\n if (!Array.isArray(value1) || !Array.isArray(value2)) {\n return false;\n }\n const len = value1.length;\n if (len !== value2.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (value1[i] !== value2[i]) {\n return false;\n }\n }\n return true;\n }\n};\n\nfunction transformBox(bbox, modelMatrix) {\n const transformedCoords = [\n // top-left\n modelMatrix.transformPoint([bbox[0], bbox[1]]),\n // top-right\n modelMatrix.transformPoint([bbox[2], bbox[1]]),\n // bottom-left\n modelMatrix.transformPoint([bbox[0], bbox[3]]),\n // bottom-right\n modelMatrix.transformPoint([bbox[2], bbox[3]])\n ];\n const transformedBox = [\n // Minimum x coord\n Math.min(...transformedCoords.map(i => i[0])),\n // Minimum y coord\n Math.min(...transformedCoords.map(i => i[1])),\n // Max x coord\n Math.max(...transformedCoords.map(i => i[0])),\n // Max y coord\n Math.max(...transformedCoords.map(i => i[1]))\n ];\n return transformedBox;\n}\n\nexport function getURLFromTemplate(template, properties) {\n if (!template || !template.length) {\n return null;\n }\n if (Array.isArray(template)) {\n const index = Math.abs(properties.x + properties.y) % template.length;\n template = template[index];\n }\n\n const {x, y, z} = properties;\n return template\n .replace(/\\{x\\}/g, x)\n .replace(/\\{y\\}/g, y)\n .replace(/\\{z\\}/g, z)\n .replace(/\\{-y\\}/g, Math.pow(2, z) - y - 1);\n}\n\n/**\n * gets the bounding box of a viewport\n */\nfunction getBoundingBox(viewport, zRange, extent) {\n let bounds;\n if (zRange && zRange.length === 2) {\n const [minZ, maxZ] = zRange;\n const bounds0 = viewport.getBounds({z: minZ});\n const bounds1 = viewport.getBounds({z: maxZ});\n bounds = [\n Math.min(bounds0[0], bounds1[0]),\n Math.min(bounds0[1], bounds1[1]),\n Math.max(bounds0[2], bounds1[2]),\n Math.max(bounds0[3], bounds1[3])\n ];\n } else {\n bounds = viewport.getBounds();\n }\n if (!viewport.isGeospatial) {\n return [\n // Top corner should not be more then bottom corner in either direction\n Math.max(Math.min(bounds[0], extent[2]), extent[0]),\n Math.max(Math.min(bounds[1], extent[3]), extent[1]),\n // Bottom corner should not be less then top corner in either direction\n Math.min(Math.max(bounds[2], extent[0]), extent[2]),\n Math.min(Math.max(bounds[3], extent[1]), extent[3])\n ];\n }\n return [\n Math.max(bounds[0], extent[0]),\n Math.max(bounds[1], extent[1]),\n Math.min(bounds[2], extent[2]),\n Math.min(bounds[3], extent[3])\n ];\n}\n\nfunction getIndexingCoords(bbox, scale, modelMatrixInverse) {\n if (modelMatrixInverse) {\n const transformedTileIndex = transformBox(bbox, modelMatrixInverse).map(\n i => (i * scale) / TILE_SIZE\n );\n return transformedTileIndex;\n }\n return bbox.map(i => (i * scale) / TILE_SIZE);\n}\n\nfunction getScale(z, tileSize) {\n return (Math.pow(2, z) * TILE_SIZE) / tileSize;\n}\n\n// https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2\nexport function osmTile2lngLat(x, y, z) {\n const scale = getScale(z, TILE_SIZE);\n const lng = (x / scale) * 360 - 180;\n const n = Math.PI - (2 * Math.PI * y) / scale;\n const lat = (180 / Math.PI) * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n return [lng, lat];\n}\n\nfunction tile2XY(x, y, z, tileSize) {\n const scale = getScale(z, tileSize);\n return [(x / scale) * TILE_SIZE, (y / scale) * TILE_SIZE];\n}\nexport function tileToBoundingBox(viewport, x, y, z, tileSize = TILE_SIZE) {\n if (viewport.isGeospatial) {\n const [west, north] = osmTile2lngLat(x, y, z);\n const [east, south] = osmTile2lngLat(x + 1, y + 1, z);\n return {west, north, east, south};\n }\n const [left, top] = tile2XY(x, y, z, tileSize);\n const [right, bottom] = tile2XY(x + 1, y + 1, z, tileSize);\n return {left, top, right, bottom};\n}\n\nfunction getIdentityTileIndices(viewport, z, tileSize, extent, modelMatrixInverse) {\n const bbox = getBoundingBox(viewport, null, extent);\n const scale = getScale(z, tileSize);\n const [minX, minY, maxX, maxY] = getIndexingCoords(bbox, scale, modelMatrixInverse);\n const indices = [];\n\n /*\n | TILE | TILE | TILE |\n |(minX) |(maxX)\n */\n for (let x = Math.floor(minX); x < maxX; x++) {\n for (let y = Math.floor(minY); y < maxY; y++) {\n indices.push({x, y, z});\n }\n }\n return indices;\n}\n\n/**\n * Returns all tile indices in the current viewport. If the current zoom level is smaller\n * than minZoom, return an empty array. If the current zoom level is greater than maxZoom,\n * return tiles that are on maxZoom.\n */\n// eslint-disable-next-line complexity\nexport function getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n extent,\n tileSize = TILE_SIZE,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset = 0\n}) {\n let z = viewport.isGeospatial\n ? Math.round(viewport.zoom + Math.log2(TILE_SIZE / tileSize)) + zoomOffset\n : Math.ceil(viewport.zoom) + zoomOffset;\n if (Number.isFinite(minZoom) && z < minZoom) {\n if (!extent) {\n return [];\n }\n z = minZoom;\n }\n if (Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n }\n let transformedExtent = extent;\n if (modelMatrix && modelMatrixInverse && extent && !viewport.isGeospatial) {\n transformedExtent = transformBox(extent, modelMatrix);\n }\n return viewport.isGeospatial\n ? getOSMTileIndices(viewport, z, zRange, extent)\n : getIdentityTileIndices(\n viewport,\n z,\n tileSize,\n transformedExtent || DEFAULT_EXTENT,\n modelMatrixInverse\n );\n}\n\n/**\n * Returns true if s is a valid URL template\n */\nexport function isURLTemplate(s) {\n return /(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(s);\n}\n"],"file":"utils.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-layer/utils.js"],"names":["TILE_SIZE","DEFAULT_EXTENT","Infinity","urlType","type","value","validate","propType","optional","Array","isArray","every","url","equals","value1","value2","len","length","i","transformBox","bbox","modelMatrix","transformedCoords","transformAsPoint","transformedBox","Math","min","map","max","getURLFromTemplate","template","properties","index","abs","x","y","z","replace","pow","getBoundingBox","viewport","zRange","extent","bounds","minZ","maxZ","bounds0","getBounds","bounds1","isGeospatial","getIndexingCoords","scale","modelMatrixInverse","transformedTileIndex","getScale","tileSize","osmTile2lngLat","lng","n","PI","lat","atan","exp","tile2XY","tileToBoundingBox","west","north","east","south","left","top","right","bottom","getIdentityTileIndices","minX","minY","maxX","maxY","indices","floor","push","getTileIndices","maxZoom","minZoom","zoomOffset","round","zoom","log2","ceil","Number","isFinite","transformedExtent","isURLTemplate","s","test"],"mappings":"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","sourcesContent":["import {getOSMTileIndices} from './tile-2d-traversal';\n\nconst TILE_SIZE = 512;\nconst DEFAULT_EXTENT = [-Infinity, -Infinity, Infinity, Infinity];\n\nexport const urlType = {\n type: 'url',\n value: null,\n validate: (value, propType) =>\n (propType.optional && value === null) ||\n typeof value === 'string' ||\n (Array.isArray(value) && value.every(url => typeof url === 'string')),\n equals: (value1, value2) => {\n if (value1 === value2) {\n return true;\n }\n if (!Array.isArray(value1) || !Array.isArray(value2)) {\n return false;\n }\n const len = value1.length;\n if (len !== value2.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (value1[i] !== value2[i]) {\n return false;\n }\n }\n return true;\n }\n};\n\nfunction transformBox(bbox, modelMatrix) {\n const transformedCoords = [\n // top-left\n modelMatrix.transformAsPoint([bbox[0], bbox[1]]),\n // top-right\n modelMatrix.transformAsPoint([bbox[2], bbox[1]]),\n // bottom-left\n modelMatrix.transformAsPoint([bbox[0], bbox[3]]),\n // bottom-right\n modelMatrix.transformAsPoint([bbox[2], bbox[3]])\n ];\n const transformedBox = [\n // Minimum x coord\n Math.min(...transformedCoords.map(i => i[0])),\n // Minimum y coord\n Math.min(...transformedCoords.map(i => i[1])),\n // Max x coord\n Math.max(...transformedCoords.map(i => i[0])),\n // Max y coord\n Math.max(...transformedCoords.map(i => i[1]))\n ];\n return transformedBox;\n}\n\nexport function getURLFromTemplate(template, properties) {\n if (!template || !template.length) {\n return null;\n }\n if (Array.isArray(template)) {\n const index = Math.abs(properties.x + properties.y) % template.length;\n template = template[index];\n }\n\n const {x, y, z} = properties;\n return template\n .replace(/\\{x\\}/g, x)\n .replace(/\\{y\\}/g, y)\n .replace(/\\{z\\}/g, z)\n .replace(/\\{-y\\}/g, Math.pow(2, z) - y - 1);\n}\n\n/**\n * gets the bounding box of a viewport\n */\nfunction getBoundingBox(viewport, zRange, extent) {\n let bounds;\n if (zRange && zRange.length === 2) {\n const [minZ, maxZ] = zRange;\n const bounds0 = viewport.getBounds({z: minZ});\n const bounds1 = viewport.getBounds({z: maxZ});\n bounds = [\n Math.min(bounds0[0], bounds1[0]),\n Math.min(bounds0[1], bounds1[1]),\n Math.max(bounds0[2], bounds1[2]),\n Math.max(bounds0[3], bounds1[3])\n ];\n } else {\n bounds = viewport.getBounds();\n }\n if (!viewport.isGeospatial) {\n return [\n // Top corner should not be more then bottom corner in either direction\n Math.max(Math.min(bounds[0], extent[2]), extent[0]),\n Math.max(Math.min(bounds[1], extent[3]), extent[1]),\n // Bottom corner should not be less then top corner in either direction\n Math.min(Math.max(bounds[2], extent[0]), extent[2]),\n Math.min(Math.max(bounds[3], extent[1]), extent[3])\n ];\n }\n return [\n Math.max(bounds[0], extent[0]),\n Math.max(bounds[1], extent[1]),\n Math.min(bounds[2], extent[2]),\n Math.min(bounds[3], extent[3])\n ];\n}\n\nfunction getIndexingCoords(bbox, scale, modelMatrixInverse) {\n if (modelMatrixInverse) {\n const transformedTileIndex = transformBox(bbox, modelMatrixInverse).map(\n i => (i * scale) / TILE_SIZE\n );\n return transformedTileIndex;\n }\n return bbox.map(i => (i * scale) / TILE_SIZE);\n}\n\nfunction getScale(z, tileSize) {\n return (Math.pow(2, z) * TILE_SIZE) / tileSize;\n}\n\n// https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2\nexport function osmTile2lngLat(x, y, z) {\n const scale = getScale(z, TILE_SIZE);\n const lng = (x / scale) * 360 - 180;\n const n = Math.PI - (2 * Math.PI * y) / scale;\n const lat = (180 / Math.PI) * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n return [lng, lat];\n}\n\nfunction tile2XY(x, y, z, tileSize) {\n const scale = getScale(z, tileSize);\n return [(x / scale) * TILE_SIZE, (y / scale) * TILE_SIZE];\n}\nexport function tileToBoundingBox(viewport, x, y, z, tileSize = TILE_SIZE) {\n if (viewport.isGeospatial) {\n const [west, north] = osmTile2lngLat(x, y, z);\n const [east, south] = osmTile2lngLat(x + 1, y + 1, z);\n return {west, north, east, south};\n }\n const [left, top] = tile2XY(x, y, z, tileSize);\n const [right, bottom] = tile2XY(x + 1, y + 1, z, tileSize);\n return {left, top, right, bottom};\n}\n\nfunction getIdentityTileIndices(viewport, z, tileSize, extent, modelMatrixInverse) {\n const bbox = getBoundingBox(viewport, null, extent);\n const scale = getScale(z, tileSize);\n const [minX, minY, maxX, maxY] = getIndexingCoords(bbox, scale, modelMatrixInverse);\n const indices = [];\n\n /*\n | TILE | TILE | TILE |\n |(minX) |(maxX)\n */\n for (let x = Math.floor(minX); x < maxX; x++) {\n for (let y = Math.floor(minY); y < maxY; y++) {\n indices.push({x, y, z});\n }\n }\n return indices;\n}\n\n/**\n * Returns all tile indices in the current viewport. If the current zoom level is smaller\n * than minZoom, return an empty array. If the current zoom level is greater than maxZoom,\n * return tiles that are on maxZoom.\n */\n// eslint-disable-next-line complexity\nexport function getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n extent,\n tileSize = TILE_SIZE,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset = 0\n}) {\n let z = viewport.isGeospatial\n ? Math.round(viewport.zoom + Math.log2(TILE_SIZE / tileSize)) + zoomOffset\n : Math.ceil(viewport.zoom) + zoomOffset;\n if (Number.isFinite(minZoom) && z < minZoom) {\n if (!extent) {\n return [];\n }\n z = minZoom;\n }\n if (Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n }\n let transformedExtent = extent;\n if (modelMatrix && modelMatrixInverse && extent && !viewport.isGeospatial) {\n transformedExtent = transformBox(extent, modelMatrix);\n }\n return viewport.isGeospatial\n ? getOSMTileIndices(viewport, z, zRange, extent)\n : getIdentityTileIndices(\n viewport,\n z,\n tileSize,\n transformedExtent || DEFAULT_EXTENT,\n modelMatrixInverse\n );\n}\n\n/**\n * Returns true if s is a valid URL template\n */\nexport function isURLTemplate(s) {\n return /(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(s);\n}\n"],"file":"utils.js"}
|
|
@@ -36,6 +36,8 @@ export default class Tileset2D {
|
|
|
36
36
|
this._viewport = null;
|
|
37
37
|
this._selectedTiles = null;
|
|
38
38
|
this._frameNumber = 0;
|
|
39
|
+
this._modelMatrix = new Matrix4();
|
|
40
|
+
this._modelMatrixInverse = new Matrix4();
|
|
39
41
|
this.setOptions(opts);
|
|
40
42
|
}
|
|
41
43
|
|
|
@@ -51,6 +53,10 @@ export default class Tileset2D {
|
|
|
51
53
|
return this._selectedTiles.every(tile => tile.isLoaded);
|
|
52
54
|
}
|
|
53
55
|
|
|
56
|
+
get needsReload() {
|
|
57
|
+
return this._selectedTiles.some(tile => tile.needsReload);
|
|
58
|
+
}
|
|
59
|
+
|
|
54
60
|
setOptions(opts) {
|
|
55
61
|
Object.assign(this.opts, opts);
|
|
56
62
|
|
|
@@ -98,8 +104,8 @@ export default class Tileset2D {
|
|
|
98
104
|
|
|
99
105
|
if (!viewport.equals(this._viewport) || isModelMatrixNew) {
|
|
100
106
|
if (isModelMatrixNew) {
|
|
101
|
-
this._modelMatrixInverse =
|
|
102
|
-
this._modelMatrix =
|
|
107
|
+
this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();
|
|
108
|
+
this._modelMatrix = modelMatrixAsMatrix4;
|
|
103
109
|
}
|
|
104
110
|
|
|
105
111
|
this._viewport = viewport;
|
|
@@ -116,6 +122,12 @@ export default class Tileset2D {
|
|
|
116
122
|
if (this._dirty) {
|
|
117
123
|
this._rebuildTree();
|
|
118
124
|
}
|
|
125
|
+
} else if (this.needsReload) {
|
|
126
|
+
this._selectedTiles = this._selectedTiles.map(tile => this._getTile({
|
|
127
|
+
x: tile.x,
|
|
128
|
+
y: tile.y,
|
|
129
|
+
z: tile.z
|
|
130
|
+
}));
|
|
119
131
|
}
|
|
120
132
|
|
|
121
133
|
const changed = this.updateTileStates();
|