@deck.gl/geo-layers 8.7.0-alpha.9 → 8.7.0-beta.4
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 +127 -63
- package/dist/es5/index.js +8 -0
- package/dist/es5/index.js.map +1 -1
- 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/index.js +1 -0
- package/dist/esm/index.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 +11 -11
- package/src/index.ts +2 -0
- package/src/tile-layer/tileset-2d.js +14 -2
- package/src/tile-layer/utils.js +4 -4
|
@@ -70,6 +70,8 @@ var Tileset2D = function () {
|
|
|
70
70
|
this._viewport = null;
|
|
71
71
|
this._selectedTiles = null;
|
|
72
72
|
this._frameNumber = 0;
|
|
73
|
+
this._modelMatrix = new _core.Matrix4();
|
|
74
|
+
this._modelMatrixInverse = new _core.Matrix4();
|
|
73
75
|
this.setOptions(opts);
|
|
74
76
|
}
|
|
75
77
|
|
|
@@ -90,6 +92,13 @@ var Tileset2D = function () {
|
|
|
90
92
|
return tile.isLoaded;
|
|
91
93
|
});
|
|
92
94
|
}
|
|
95
|
+
}, {
|
|
96
|
+
key: "needsReload",
|
|
97
|
+
get: function get() {
|
|
98
|
+
return this._selectedTiles.some(function (tile) {
|
|
99
|
+
return tile.needsReload;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
93
102
|
}, {
|
|
94
103
|
key: "setOptions",
|
|
95
104
|
value: function setOptions(opts) {
|
|
@@ -166,8 +175,8 @@ var Tileset2D = function () {
|
|
|
166
175
|
|
|
167
176
|
if (!viewport.equals(this._viewport) || isModelMatrixNew) {
|
|
168
177
|
if (isModelMatrixNew) {
|
|
169
|
-
this._modelMatrixInverse =
|
|
170
|
-
this._modelMatrix =
|
|
178
|
+
this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();
|
|
179
|
+
this._modelMatrix = modelMatrixAsMatrix4;
|
|
171
180
|
}
|
|
172
181
|
|
|
173
182
|
this._viewport = viewport;
|
|
@@ -186,6 +195,14 @@ var Tileset2D = function () {
|
|
|
186
195
|
if (this._dirty) {
|
|
187
196
|
this._rebuildTree();
|
|
188
197
|
}
|
|
198
|
+
} else if (this.needsReload) {
|
|
199
|
+
this._selectedTiles = this._selectedTiles.map(function (tile) {
|
|
200
|
+
return _this2._getTile({
|
|
201
|
+
x: tile.x,
|
|
202
|
+
y: tile.y,
|
|
203
|
+
z: tile.z
|
|
204
|
+
});
|
|
205
|
+
});
|
|
189
206
|
}
|
|
190
207
|
|
|
191
208
|
var changed = this.updateTileStates();
|
|
@@ -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","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","_pruneRequests","tileSize","extent","zoomOffset","x","y","z","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","needsReload","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.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 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.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"}
|
|
@@ -81,7 +81,7 @@ function getURLFromTemplate(template, properties) {
|
|
|
81
81
|
var x = properties.x,
|
|
82
82
|
y = properties.y,
|
|
83
83
|
z = properties.z;
|
|
84
|
-
return template.replace(
|
|
84
|
+
return template.replace(/\{x\}/g, x).replace(/\{y\}/g, y).replace(/\{z\}/g, z).replace(/\{-y\}/g, Math.pow(2, z) - y - 1);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
function getBoundingBox(viewport, zRange, extent) {
|
|
@@ -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":";;;;;;;;;;;;;;;;;;AAAA;;AAEA,IAAMA,SAAS,GAAG,GAAlB;AACA,IAAMC,cAAc,GAAG,CAAC,CAACC,QAAF,EAAY,CAACA,QAAb,EAAuBA,QAAvB,EAAiCA,QAAjC,CAAvB;AAEO,IAAMC,OAAO,GAAG;AACrBC,EAAAA,IAAI,EAAE,KADe;AAErBC,EAAAA,KAAK,EAAE,IAFc;AAGrBC,EAAAA,QAAQ,EAAE,kBAACD,KAAD,EAAQE,QAAR;AAAA,WACPA,QAAQ,CAACC,QAAT,IAAqBH,KAAK,KAAK,IAAhC,IACA,OAAOA,KAAP,KAAiB,QADjB,IAECI,KAAK,CAACC,OAAN,CAAcL,KAAd,KAAwBA,KAAK,CAACM,KAAN,CAAY,UAAAC,GAAG;AAAA,aAAI,OAAOA,GAAP,KAAe,QAAnB;AAAA,KAAf,CAHjB;AAAA,GAHW;AAOrBC,EAAAA,MAAM,EAAE,gBAACC,MAAD,EAASC,MAAT,EAAoB;AAC1B,QAAID,MAAM,KAAKC,MAAf,EAAuB;AACrB,aAAO,IAAP;AACD;;AACD,QAAI,CAACN,KAAK,CAACC,OAAN,CAAcI,MAAd,CAAD,IAA0B,CAACL,KAAK,CAACC,OAAN,CAAcK,MAAd,CAA/B,EAAsD;AACpD,aAAO,KAAP;AACD;;AACD,QAAMC,GAAG,GAAGF,MAAM,CAACG,MAAnB;;AACA,QAAID,GAAG,KAAKD,MAAM,CAACE,MAAnB,EAA2B;AACzB,aAAO,KAAP;AACD;;AACD,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,GAApB,EAAyBE,CAAC,EAA1B,EAA8B;AAC5B,UAAIJ,MAAM,CAACI,CAAD,CAAN,KAAcH,MAAM,CAACG,CAAD,CAAxB,EAA6B;AAC3B,eAAO,KAAP;AACD;AACF;;AACD,WAAO,IAAP;AACD;AAxBoB,CAAhB;;;AA2BP,SAASC,YAAT,CAAsBC,IAAtB,EAA4BC,WAA5B,EAAyC;AACvC,MAAMC,iBAAiB,GAAG,CAExBD,WAAW,CAACE,cAAZ,CAA2B,CAACH,IAAI,CAAC,CAAD,CAAL,EAAUA,IAAI,CAAC,CAAD,CAAd,CAA3B,CAFwB,EAIxBC,WAAW,CAACE,cAAZ,CAA2B,CAACH,IAAI,CAAC,CAAD,CAAL,EAAUA,IAAI,CAAC,CAAD,CAAd,CAA3B,CAJwB,EAMxBC,WAAW,CAACE,cAAZ,CAA2B,CAACH,IAAI,CAAC,CAAD,CAAL,EAAUA,IAAI,CAAC,CAAD,CAAd,CAA3B,CANwB,EAQxBC,WAAW,CAACE,cAAZ,CAA2B,CAACH,IAAI,CAAC,CAAD,CAAL,EAAUA,IAAI,CAAC,CAAD,CAAd,CAA3B,CARwB,CAA1B;AAUA,MAAMI,cAAc,GAAG,CAErBC,IAAI,CAACC,GAAL,OAAAD,IAAI,mCAAQH,iBAAiB,CAACK,GAAlB,CAAsB,UAAAT,CAAC;AAAA,WAAIA,CAAC,CAAC,CAAD,CAAL;AAAA,GAAvB,CAAR,EAFiB,EAIrBO,IAAI,CAACC,GAAL,OAAAD,IAAI,mCAAQH,iBAAiB,CAACK,GAAlB,CAAsB,UAAAT,CAAC;AAAA,WAAIA,CAAC,CAAC,CAAD,CAAL;AAAA,GAAvB,CAAR,EAJiB,EAMrBO,IAAI,CAACG,GAAL,OAAAH,IAAI,mCAAQH,iBAAiB,CAACK,GAAlB,CAAsB,UAAAT,CAAC;AAAA,WAAIA,CAAC,CAAC,CAAD,CAAL;AAAA,GAAvB,CAAR,EANiB,EAQrBO,IAAI,CAACG,GAAL,OAAAH,IAAI,mCAAQH,iBAAiB,CAACK,GAAlB,CAAsB,UAAAT,CAAC;AAAA,WAAIA,CAAC,CAAC,CAAD,CAAL;AAAA,GAAvB,CAAR,EARiB,CAAvB;AAUA,SAAOM,cAAP;AACD;;AAEM,SAASK,kBAAT,CAA4BC,QAA5B,EAAsCC,UAAtC,EAAkD;AACvD,MAAI,CAACD,QAAD,IAAa,CAACA,QAAQ,CAACb,MAA3B,EAAmC;AACjC,WAAO,IAAP;AACD;;AACD,MAAIR,KAAK,CAACC,OAAN,CAAcoB,QAAd,CAAJ,EAA6B;AAC3B,QAAME,KAAK,GAAGP,IAAI,CAACQ,GAAL,CAASF,UAAU,CAACG,CAAX,GAAeH,UAAU,CAACI,CAAnC,IAAwCL,QAAQ,CAACb,MAA/D;AACAa,IAAAA,QAAQ,GAAGA,QAAQ,CAACE,KAAD,CAAnB;AACD;;AAED,MAAOE,CAAP,GAAkBH,UAAlB,CAAOG,CAAP;AAAA,MAAUC,CAAV,GAAkBJ,UAAlB,CAAUI,CAAV;AAAA,MAAaC,CAAb,GAAkBL,UAAlB,CAAaK,CAAb;AACA,SAAON,QAAQ,CACZO,OADI,CACI,KADJ,EACWH,CADX,EAEJG,OAFI,CAEI,KAFJ,EAEWF,CAFX,EAGJE,OAHI,CAGI,KAHJ,EAGWD,CAHX,EAIJC,OAJI,CAII,MAJJ,EAIYZ,IAAI,CAACa,GAAL,CAAS,CAAT,EAAYF,CAAZ,IAAiBD,CAAjB,GAAqB,CAJjC,CAAP;AAKD;;AAKD,SAASI,cAAT,CAAwBC,QAAxB,EAAkCC,MAAlC,EAA0CC,MAA1C,EAAkD;AAChD,MAAIC,MAAJ;;AACA,MAAIF,MAAM,IAAIA,MAAM,CAACxB,MAAP,KAAkB,CAAhC,EAAmC;AACjC,+CAAqBwB,MAArB;AAAA,QAAOG,IAAP;AAAA,QAAaC,IAAb;;AACA,QAAMC,OAAO,GAAGN,QAAQ,CAACO,SAAT,CAAmB;AAACX,MAAAA,CAAC,EAAEQ;AAAJ,KAAnB,CAAhB;AACA,QAAMI,OAAO,GAAGR,QAAQ,CAACO,SAAT,CAAmB;AAACX,MAAAA,CAAC,EAAES;AAAJ,KAAnB,CAAhB;AACAF,IAAAA,MAAM,GAAG,CACPlB,IAAI,CAACC,GAAL,CAASoB,OAAO,CAAC,CAAD,CAAhB,EAAqBE,OAAO,CAAC,CAAD,CAA5B,CADO,EAEPvB,IAAI,CAACC,GAAL,CAASoB,OAAO,CAAC,CAAD,CAAhB,EAAqBE,OAAO,CAAC,CAAD,CAA5B,CAFO,EAGPvB,IAAI,CAACG,GAAL,CAASkB,OAAO,CAAC,CAAD,CAAhB,EAAqBE,OAAO,CAAC,CAAD,CAA5B,CAHO,EAIPvB,IAAI,CAACG,GAAL,CAASkB,OAAO,CAAC,CAAD,CAAhB,EAAqBE,OAAO,CAAC,CAAD,CAA5B,CAJO,CAAT;AAMD,GAVD,MAUO;AACLL,IAAAA,MAAM,GAAGH,QAAQ,CAACO,SAAT,EAAT;AACD;;AACD,MAAI,CAACP,QAAQ,CAACS,YAAd,EAA4B;AAC1B,WAAO,CAELxB,IAAI,CAACG,GAAL,CAASH,IAAI,CAACC,GAAL,CAASiB,MAAM,CAAC,CAAD,CAAf,EAAoBD,MAAM,CAAC,CAAD,CAA1B,CAAT,EAAyCA,MAAM,CAAC,CAAD,CAA/C,CAFK,EAGLjB,IAAI,CAACG,GAAL,CAASH,IAAI,CAACC,GAAL,CAASiB,MAAM,CAAC,CAAD,CAAf,EAAoBD,MAAM,CAAC,CAAD,CAA1B,CAAT,EAAyCA,MAAM,CAAC,CAAD,CAA/C,CAHK,EAKLjB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACG,GAAL,CAASe,MAAM,CAAC,CAAD,CAAf,EAAoBD,MAAM,CAAC,CAAD,CAA1B,CAAT,EAAyCA,MAAM,CAAC,CAAD,CAA/C,CALK,EAMLjB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACG,GAAL,CAASe,MAAM,CAAC,CAAD,CAAf,EAAoBD,MAAM,CAAC,CAAD,CAA1B,CAAT,EAAyCA,MAAM,CAAC,CAAD,CAA/C,CANK,CAAP;AAQD;;AACD,SAAO,CACLjB,IAAI,CAACG,GAAL,CAASe,MAAM,CAAC,CAAD,CAAf,EAAoBD,MAAM,CAAC,CAAD,CAA1B,CADK,EAELjB,IAAI,CAACG,GAAL,CAASe,MAAM,CAAC,CAAD,CAAf,EAAoBD,MAAM,CAAC,CAAD,CAA1B,CAFK,EAGLjB,IAAI,CAACC,GAAL,CAASiB,MAAM,CAAC,CAAD,CAAf,EAAoBD,MAAM,CAAC,CAAD,CAA1B,CAHK,EAILjB,IAAI,CAACC,GAAL,CAASiB,MAAM,CAAC,CAAD,CAAf,EAAoBD,MAAM,CAAC,CAAD,CAA1B,CAJK,CAAP;AAMD;;AAED,SAASQ,iBAAT,CAA2B9B,IAA3B,EAAiC+B,KAAjC,EAAwCC,kBAAxC,EAA4D;AAC1D,MAAIA,kBAAJ,EAAwB;AACtB,QAAMC,oBAAoB,GAAGlC,YAAY,CAACC,IAAD,EAAOgC,kBAAP,CAAZ,CAAuCzB,GAAvC,CAC3B,UAAAT,CAAC;AAAA,aAAKA,CAAC,GAAGiC,KAAL,GAAcnD,SAAlB;AAAA,KAD0B,CAA7B;AAGA,WAAOqD,oBAAP;AACD;;AACD,SAAOjC,IAAI,CAACO,GAAL,CAAS,UAAAT,CAAC;AAAA,WAAKA,CAAC,GAAGiC,KAAL,GAAcnD,SAAlB;AAAA,GAAV,CAAP;AACD;;AAED,SAASsD,QAAT,CAAkBlB,CAAlB,EAAqBmB,QAArB,EAA+B;AAC7B,SAAQ9B,IAAI,CAACa,GAAL,CAAS,CAAT,EAAYF,CAAZ,IAAiBpC,SAAlB,GAA+BuD,QAAtC;AACD;;AAGM,SAASC,cAAT,CAAwBtB,CAAxB,EAA2BC,CAA3B,EAA8BC,CAA9B,EAAiC;AACtC,MAAMe,KAAK,GAAGG,QAAQ,CAAClB,CAAD,EAAIpC,SAAJ,CAAtB;AACA,MAAMyD,GAAG,GAAIvB,CAAC,GAAGiB,KAAL,GAAc,GAAd,GAAoB,GAAhC;AACA,MAAMO,CAAC,GAAGjC,IAAI,CAACkC,EAAL,GAAW,IAAIlC,IAAI,CAACkC,EAAT,GAAcxB,CAAf,GAAoBgB,KAAxC;AACA,MAAMS,GAAG,GAAI,MAAMnC,IAAI,CAACkC,EAAZ,GAAkBlC,IAAI,CAACoC,IAAL,CAAU,OAAOpC,IAAI,CAACqC,GAAL,CAASJ,CAAT,IAAcjC,IAAI,CAACqC,GAAL,CAAS,CAACJ,CAAV,CAArB,CAAV,CAA9B;AACA,SAAO,CAACD,GAAD,EAAMG,GAAN,CAAP;AACD;;AAED,SAASG,OAAT,CAAiB7B,CAAjB,EAAoBC,CAApB,EAAuBC,CAAvB,EAA0BmB,QAA1B,EAAoC;AAClC,MAAMJ,KAAK,GAAGG,QAAQ,CAAClB,CAAD,EAAImB,QAAJ,CAAtB;AACA,SAAO,CAAErB,CAAC,GAAGiB,KAAL,GAAcnD,SAAf,EAA2BmC,CAAC,GAAGgB,KAAL,GAAcnD,SAAxC,CAAP;AACD;;AACM,SAASgE,iBAAT,CAA2BxB,QAA3B,EAAqCN,CAArC,EAAwCC,CAAxC,EAA2CC,CAA3C,EAAoE;AAAA,MAAtBmB,QAAsB,uEAAXvD,SAAW;;AACzE,MAAIwC,QAAQ,CAACS,YAAb,EAA2B;AACzB,0BAAsBO,cAAc,CAACtB,CAAD,EAAIC,CAAJ,EAAOC,CAAP,CAApC;AAAA;AAAA,QAAO6B,IAAP;AAAA,QAAaC,KAAb;;AACA,2BAAsBV,cAAc,CAACtB,CAAC,GAAG,CAAL,EAAQC,CAAC,GAAG,CAAZ,EAAeC,CAAf,CAApC;AAAA;AAAA,QAAO+B,IAAP;AAAA,QAAaC,KAAb;;AACA,WAAO;AAACH,MAAAA,IAAI,EAAJA,IAAD;AAAOC,MAAAA,KAAK,EAALA,KAAP;AAAcC,MAAAA,IAAI,EAAJA,IAAd;AAAoBC,MAAAA,KAAK,EAALA;AAApB,KAAP;AACD;;AACD,iBAAoBL,OAAO,CAAC7B,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUmB,QAAV,CAA3B;AAAA;AAAA,MAAOc,IAAP;AAAA,MAAaC,GAAb;;AACA,kBAAwBP,OAAO,CAAC7B,CAAC,GAAG,CAAL,EAAQC,CAAC,GAAG,CAAZ,EAAeC,CAAf,EAAkBmB,QAAlB,CAA/B;AAAA;AAAA,MAAOgB,KAAP;AAAA,MAAcC,MAAd;;AACA,SAAO;AAACH,IAAAA,IAAI,EAAJA,IAAD;AAAOC,IAAAA,GAAG,EAAHA,GAAP;AAAYC,IAAAA,KAAK,EAALA,KAAZ;AAAmBC,IAAAA,MAAM,EAANA;AAAnB,GAAP;AACD;;AAED,SAASC,sBAAT,CAAgCjC,QAAhC,EAA0CJ,CAA1C,EAA6CmB,QAA7C,EAAuDb,MAAvD,EAA+DU,kBAA/D,EAAmF;AACjF,MAAMhC,IAAI,GAAGmB,cAAc,CAACC,QAAD,EAAW,IAAX,EAAiBE,MAAjB,CAA3B;AACA,MAAMS,KAAK,GAAGG,QAAQ,CAAClB,CAAD,EAAImB,QAAJ,CAAtB;;AACA,2BAAiCL,iBAAiB,CAAC9B,IAAD,EAAO+B,KAAP,EAAcC,kBAAd,CAAlD;AAAA;AAAA,MAAOsB,IAAP;AAAA,MAAaC,IAAb;AAAA,MAAmBC,IAAnB;AAAA,MAAyBC,IAAzB;;AACA,MAAMC,OAAO,GAAG,EAAhB;;AAMA,OAAK,IAAI5C,CAAC,GAAGT,IAAI,CAACsD,KAAL,CAAWL,IAAX,CAAb,EAA+BxC,CAAC,GAAG0C,IAAnC,EAAyC1C,CAAC,EAA1C,EAA8C;AAC5C,SAAK,IAAIC,CAAC,GAAGV,IAAI,CAACsD,KAAL,CAAWJ,IAAX,CAAb,EAA+BxC,CAAC,GAAG0C,IAAnC,EAAyC1C,CAAC,EAA1C,EAA8C;AAC5C2C,MAAAA,OAAO,CAACE,IAAR,CAAa;AAAC9C,QAAAA,CAAC,EAADA,CAAD;AAAIC,QAAAA,CAAC,EAADA,CAAJ;AAAOC,QAAAA,CAAC,EAADA;AAAP,OAAb;AACD;AACF;;AACD,SAAO0C,OAAP;AACD;;AAQM,SAASG,cAAT,OAUJ;AAAA,MATDzC,QASC,QATDA,QASC;AAAA,MARD0C,OAQC,QARDA,OAQC;AAAA,MAPDC,OAOC,QAPDA,OAOC;AAAA,MAND1C,MAMC,QANDA,MAMC;AAAA,MALDC,MAKC,QALDA,MAKC;AAAA,2BAJDa,QAIC;AAAA,MAJDA,QAIC,8BAJUvD,SAIV;AAAA,MAHDqB,WAGC,QAHDA,WAGC;AAAA,MAFD+B,kBAEC,QAFDA,kBAEC;AAAA,6BADDgC,UACC;AAAA,MADDA,UACC,gCADY,CACZ;AACD,MAAIhD,CAAC,GAAGI,QAAQ,CAACS,YAAT,GACJxB,IAAI,CAAC4D,KAAL,CAAW7C,QAAQ,CAAC8C,IAAT,GAAgB7D,IAAI,CAAC8D,IAAL,CAAUvF,SAAS,GAAGuD,QAAtB,CAA3B,IAA8D6B,UAD1D,GAEJ3D,IAAI,CAAC+D,IAAL,CAAUhD,QAAQ,CAAC8C,IAAnB,IAA2BF,UAF/B;;AAGA,MAAIK,MAAM,CAACC,QAAP,CAAgBP,OAAhB,KAA4B/C,CAAC,GAAG+C,OAApC,EAA6C;AAC3C,QAAI,CAACzC,MAAL,EAAa;AACX,aAAO,EAAP;AACD;;AACDN,IAAAA,CAAC,GAAG+C,OAAJ;AACD;;AACD,MAAIM,MAAM,CAACC,QAAP,CAAgBR,OAAhB,KAA4B9C,CAAC,GAAG8C,OAApC,EAA6C;AAC3C9C,IAAAA,CAAC,GAAG8C,OAAJ;AACD;;AACD,MAAIS,iBAAiB,GAAGjD,MAAxB;;AACA,MAAIrB,WAAW,IAAI+B,kBAAf,IAAqCV,MAArC,IAA+C,CAACF,QAAQ,CAACS,YAA7D,EAA2E;AACzE0C,IAAAA,iBAAiB,GAAGxE,YAAY,CAACuB,MAAD,EAASrB,WAAT,CAAhC;AACD;;AACD,SAAOmB,QAAQ,CAACS,YAAT,GACH,wCAAkBT,QAAlB,EAA4BJ,CAA5B,EAA+BK,MAA/B,EAAuCC,MAAvC,CADG,GAEH+B,sBAAsB,CACpBjC,QADoB,EAEpBJ,CAFoB,EAGpBmB,QAHoB,EAIpBoC,iBAAiB,IAAI1F,cAJD,EAKpBmD,kBALoB,CAF1B;AASD;;AAKM,SAASwC,aAAT,CAAuBC,CAAvB,EAA0B;AAC/B,SAAO,qCAAqCC,IAArC,CAA0CD,CAA1C,CAAP;AACD","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}', x)\n .replace('{y}', y)\n .replace('{z}', z)\n .replace('{-y}', 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","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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -7,4 +7,5 @@ export { default as H3HexagonLayer } from './h3-layers/h3-hexagon-layer';
|
|
|
7
7
|
export { default as Tile3DLayer } from './tile-3d-layer/tile-3d-layer';
|
|
8
8
|
export { default as TerrainLayer } from './terrain-layer/terrain-layer';
|
|
9
9
|
export { default as MVTLayer } from './mvt-layer/mvt-layer';
|
|
10
|
+
export { getURLFromTemplate as _getURLFromTemplate } from './tile-layer/utils';
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":["default","GreatCircleLayer","S2Layer","TileLayer","TripsLayer","H3ClusterLayer","H3HexagonLayer","Tile3DLayer","TerrainLayer","MVTLayer"],"mappings":"AAqBA,SAAQA,OAAO,IAAIC,gBAAnB,QAA0C,yCAA1C;AACA,SAAQD,OAAO,IAAIE,OAAnB,QAAiC,qBAAjC;AACA,SAAQF,OAAO,IAAIG,SAAnB,QAAmC,yBAAnC;AACA,SAAQH,OAAO,IAAII,UAAnB,QAAoC,2BAApC;AACA,SAAQJ,OAAO,IAAIK,cAAnB,QAAwC,8BAAxC;AACA,SAAQL,OAAO,IAAIM,cAAnB,QAAwC,8BAAxC;AACA,SAAQN,OAAO,IAAIO,WAAnB,QAAqC,+BAArC;AACA,SAAQP,OAAO,IAAIQ,YAAnB,QAAsC,+BAAtC;AACA,SAAQR,OAAO,IAAIS,QAAnB,QAAkC,uBAAlC","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/* eslint-disable max-len */\n\nexport {default as GreatCircleLayer} from './great-circle-layer/great-circle-layer';\nexport {default as S2Layer} from './s2-layer/s2-layer';\nexport {default as TileLayer} from './tile-layer/tile-layer';\nexport {default as TripsLayer} from './trips-layer/trips-layer';\nexport {default as H3ClusterLayer} from './h3-layers/h3-cluster-layer';\nexport {default as H3HexagonLayer} from './h3-layers/h3-hexagon-layer';\nexport {default as Tile3DLayer} from './tile-3d-layer/tile-3d-layer';\nexport {default as TerrainLayer} from './terrain-layer/terrain-layer';\nexport {default as MVTLayer} from './mvt-layer/mvt-layer';\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["default","GreatCircleLayer","S2Layer","TileLayer","TripsLayer","H3ClusterLayer","H3HexagonLayer","Tile3DLayer","TerrainLayer","MVTLayer","getURLFromTemplate","_getURLFromTemplate"],"mappings":"AAqBA,SAAQA,OAAO,IAAIC,gBAAnB,QAA0C,yCAA1C;AACA,SAAQD,OAAO,IAAIE,OAAnB,QAAiC,qBAAjC;AACA,SAAQF,OAAO,IAAIG,SAAnB,QAAmC,yBAAnC;AACA,SAAQH,OAAO,IAAII,UAAnB,QAAoC,2BAApC;AACA,SAAQJ,OAAO,IAAIK,cAAnB,QAAwC,8BAAxC;AACA,SAAQL,OAAO,IAAIM,cAAnB,QAAwC,8BAAxC;AACA,SAAQN,OAAO,IAAIO,WAAnB,QAAqC,+BAArC;AACA,SAAQP,OAAO,IAAIQ,YAAnB,QAAsC,+BAAtC;AACA,SAAQR,OAAO,IAAIS,QAAnB,QAAkC,uBAAlC;AAEA,SAAQC,kBAAkB,IAAIC,mBAA9B,QAAwD,oBAAxD","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/* eslint-disable max-len */\n\nexport {default as GreatCircleLayer} from './great-circle-layer/great-circle-layer';\nexport {default as S2Layer} from './s2-layer/s2-layer';\nexport {default as TileLayer} from './tile-layer/tile-layer';\nexport {default as TripsLayer} from './trips-layer/trips-layer';\nexport {default as H3ClusterLayer} from './h3-layers/h3-cluster-layer';\nexport {default as H3HexagonLayer} from './h3-layers/h3-hexagon-layer';\nexport {default as Tile3DLayer} from './tile-3d-layer/tile-3d-layer';\nexport {default as TerrainLayer} from './terrain-layer/terrain-layer';\nexport {default as MVTLayer} from './mvt-layer/mvt-layer';\n\nexport {getURLFromTemplate as _getURLFromTemplate} from './tile-layer/utils';\n"],"file":"index.js"}
|
|
@@ -38,6 +38,8 @@ export default class Tileset2D {
|
|
|
38
38
|
this._viewport = null;
|
|
39
39
|
this._selectedTiles = null;
|
|
40
40
|
this._frameNumber = 0;
|
|
41
|
+
this._modelMatrix = new Matrix4();
|
|
42
|
+
this._modelMatrixInverse = new Matrix4();
|
|
41
43
|
this.setOptions(opts);
|
|
42
44
|
}
|
|
43
45
|
|
|
@@ -53,6 +55,10 @@ export default class Tileset2D {
|
|
|
53
55
|
return this._selectedTiles.every(tile => tile.isLoaded);
|
|
54
56
|
}
|
|
55
57
|
|
|
58
|
+
get needsReload() {
|
|
59
|
+
return this._selectedTiles.some(tile => tile.needsReload);
|
|
60
|
+
}
|
|
61
|
+
|
|
56
62
|
setOptions(opts) {
|
|
57
63
|
Object.assign(this.opts, opts);
|
|
58
64
|
|
|
@@ -99,8 +105,8 @@ export default class Tileset2D {
|
|
|
99
105
|
|
|
100
106
|
if (!viewport.equals(this._viewport) || isModelMatrixNew) {
|
|
101
107
|
if (isModelMatrixNew) {
|
|
102
|
-
this._modelMatrixInverse =
|
|
103
|
-
this._modelMatrix =
|
|
108
|
+
this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();
|
|
109
|
+
this._modelMatrix = modelMatrixAsMatrix4;
|
|
104
110
|
}
|
|
105
111
|
|
|
106
112
|
this._viewport = viewport;
|
|
@@ -117,6 +123,12 @@ export default class Tileset2D {
|
|
|
117
123
|
if (this._dirty) {
|
|
118
124
|
this._rebuildTree();
|
|
119
125
|
}
|
|
126
|
+
} else if (this.needsReload) {
|
|
127
|
+
this._selectedTiles = this._selectedTiles.map(tile => this._getTile({
|
|
128
|
+
x: tile.x,
|
|
129
|
+
y: tile.y,
|
|
130
|
+
z: tile.z
|
|
131
|
+
}));
|
|
120
132
|
}
|
|
121
133
|
|
|
122
134
|
const changed = this.updateTileStates();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/tileset-2d.js"],"names":["Tile2DHeader","getTileIndices","tileToBoundingBox","RequestScheduler","Matrix4","TILE_STATE_VISITED","TILE_STATE_VISIBLE","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","STRATEGIES","updateTileStateDefault","updateTileStateReplace","Tileset2D","constructor","opts","onTileLoad","tile","maxCacheByteSize","_cacheByteSize","byteLength","_resizeCache","_requestScheduler","maxRequests","throttleRequests","_cache","Map","_tiles","_dirty","_viewport","_selectedTiles","_frameNumber","setOptions","tiles","selectedTiles","isLoaded","every","Object","assign","Number","isFinite","maxZoom","_maxZoom","Math","floor","minZoom","_minZoom","ceil","finalize","values","isLoading","abort","clear","reloadAll","tileId","keys","get","includes","delete","setNeedsReload","update","viewport","zRange","modelMatrix","modelMatrixAsMatrix4","isModelMatrixNew","equals","_modelMatrix","_modelMatrixInverse","clone","invert","tileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","changed","updateTileStates","_pruneRequests","tileSize","extent","zoomOffset","getTileMetadata","x","y","z","bbox","getParentIndex","tileIndex","refinementStrategy","visibilities","Array","size","i","isVisible","isSelected","from","abortCandidates","ongoingRequestCount","push","length","shift","parent","children","_getNearestAncestor","maxCacheSize","Infinity","overflown","onTileUnload","sort","t1","t2","create","needsReload","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","onTileError","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.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 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.js"],"names":["Tile2DHeader","getTileIndices","tileToBoundingBox","RequestScheduler","Matrix4","TILE_STATE_VISITED","TILE_STATE_VISIBLE","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","STRATEGIES","updateTileStateDefault","updateTileStateReplace","Tileset2D","constructor","opts","onTileLoad","tile","maxCacheByteSize","_cacheByteSize","byteLength","_resizeCache","_requestScheduler","maxRequests","throttleRequests","_cache","Map","_tiles","_dirty","_viewport","_selectedTiles","_frameNumber","_modelMatrix","_modelMatrixInverse","setOptions","tiles","selectedTiles","isLoaded","every","needsReload","some","Object","assign","Number","isFinite","maxZoom","_maxZoom","Math","floor","minZoom","_minZoom","ceil","finalize","values","isLoading","abort","clear","reloadAll","tileId","keys","get","includes","delete","setNeedsReload","update","viewport","zRange","modelMatrix","modelMatrixAsMatrix4","isModelMatrixNew","equals","clone","invert","tileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","x","y","z","changed","updateTileStates","_pruneRequests","tileSize","extent","zoomOffset","getTileMetadata","bbox","getParentIndex","tileIndex","refinementStrategy","visibilities","Array","size","i","isVisible","isSelected","from","abortCandidates","ongoingRequestCount","push","length","shift","parent","children","_getNearestAncestor","maxCacheSize","Infinity","overflown","onTileUnload","sort","t1","t2","create","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","onTileError","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"}
|
|
@@ -51,7 +51,7 @@ export function getURLFromTemplate(template, properties) {
|
|
|
51
51
|
y,
|
|
52
52
|
z
|
|
53
53
|
} = properties;
|
|
54
|
-
return template.replace(
|
|
54
|
+
return template.replace(/\{x\}/g, x).replace(/\{y\}/g, y).replace(/\{z\}/g, z).replace(/\{-y\}/g, Math.pow(2, z) - y - 1);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
function getBoundingBox(viewport, zRange, extent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/utils.js"],"names":["getOSMTileIndices","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}', x)\n .replace('{y}', y)\n .replace('{z}', z)\n .replace('{-y}', 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":["getOSMTileIndices","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"}
|