@deck.gl/geo-layers 9.0.0-alpha.7 → 9.0.0-beta.10

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.
Files changed (263) hide show
  1. package/dist/dist.dev.js +2574 -5044
  2. package/dist/geo-cell-layer/GeoCellLayer.js +51 -0
  3. package/{typed → dist}/geohash-layer/geohash-layer.d.ts +1 -1
  4. package/dist/geohash-layer/geohash-layer.d.ts.map +1 -0
  5. package/dist/geohash-layer/geohash-layer.js +19 -0
  6. package/dist/geohash-layer/geohash-utils.js +50 -0
  7. package/dist/great-circle-layer/great-circle-layer.js +12 -0
  8. package/{typed → dist}/h3-layers/h3-cluster-layer.d.ts +1 -1
  9. package/dist/h3-layers/h3-cluster-layer.d.ts.map +1 -0
  10. package/dist/h3-layers/h3-cluster-layer.js +47 -0
  11. package/dist/h3-layers/h3-hexagon-layer.js +204 -0
  12. package/dist/h3-layers/h3-utils.js +56 -0
  13. package/dist/index.cjs +3160 -0
  14. package/dist/index.cjs.map +7 -0
  15. package/dist/index.d.ts +31 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +36 -0
  18. package/dist/mesh-layer/mesh-layer-fragment.glsl.d.ts +3 -0
  19. package/{typed → dist}/mesh-layer/mesh-layer-fragment.glsl.d.ts.map +1 -1
  20. package/dist/mesh-layer/mesh-layer-fragment.glsl.js +33 -0
  21. package/dist/mesh-layer/mesh-layer-vertex.glsl.js +63 -0
  22. package/{typed → dist}/mesh-layer/mesh-layer.d.ts.map +1 -1
  23. package/dist/mesh-layer/mesh-layer.js +128 -0
  24. package/{typed → dist}/mvt-layer/coordinate-transform.d.ts +1 -1
  25. package/{typed → dist}/mvt-layer/coordinate-transform.d.ts.map +1 -1
  26. package/dist/mvt-layer/coordinate-transform.js +41 -0
  27. package/dist/mvt-layer/find-index-binary.d.ts +11 -0
  28. package/dist/mvt-layer/find-index-binary.d.ts.map +1 -0
  29. package/dist/mvt-layer/find-index-binary.js +96 -0
  30. package/{typed → dist}/mvt-layer/mvt-layer.d.ts +13 -11
  31. package/dist/mvt-layer/mvt-layer.d.ts.map +1 -0
  32. package/dist/mvt-layer/mvt-layer.js +305 -0
  33. package/{typed → dist}/quadkey-layer/quadkey-layer.d.ts +1 -1
  34. package/dist/quadkey-layer/quadkey-layer.d.ts.map +1 -0
  35. package/dist/quadkey-layer/quadkey-layer.js +22 -0
  36. package/dist/quadkey-layer/quadkey-utils.js +26 -0
  37. package/dist/s2-layer/s2-geometry.js +123 -0
  38. package/{typed → dist}/s2-layer/s2-layer.d.ts +1 -1
  39. package/dist/s2-layer/s2-layer.d.ts.map +1 -0
  40. package/dist/s2-layer/s2-layer.js +38 -0
  41. package/dist/s2-layer/s2-utils.js +87 -0
  42. package/{typed → dist}/terrain-layer/terrain-layer.d.ts +4 -4
  43. package/dist/terrain-layer/terrain-layer.d.ts.map +1 -0
  44. package/dist/terrain-layer/terrain-layer.js +233 -0
  45. package/{typed → dist}/tile-3d-layer/tile-3d-layer.d.ts +15 -1
  46. package/{typed → dist}/tile-3d-layer/tile-3d-layer.d.ts.map +1 -1
  47. package/dist/tile-3d-layer/tile-3d-layer.js +302 -0
  48. package/{typed → dist}/tile-layer/tile-layer.d.ts +14 -5
  49. package/dist/tile-layer/tile-layer.d.ts.map +1 -0
  50. package/dist/tile-layer/tile-layer.js +207 -0
  51. package/dist/tileset-2d/index.d.ts +7 -0
  52. package/dist/tileset-2d/index.d.ts.map +1 -0
  53. package/dist/tileset-2d/index.js +4 -0
  54. package/dist/tileset-2d/memoize.js +41 -0
  55. package/{typed → dist}/tileset-2d/tile-2d-header.d.ts +3 -2
  56. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
  57. package/dist/tileset-2d/tile-2d-header.js +135 -0
  58. package/dist/tileset-2d/tile-2d-traversal.d.ts +4 -0
  59. package/dist/tileset-2d/tile-2d-traversal.d.ts.map +1 -0
  60. package/dist/tileset-2d/tile-2d-traversal.js +182 -0
  61. package/{typed → dist}/tileset-2d/tileset-2d.d.ts +9 -7
  62. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
  63. package/dist/tileset-2d/tileset-2d.js +458 -0
  64. package/dist/tileset-2d/types.js +1 -0
  65. package/{typed → dist}/tileset-2d/utils.d.ts +3 -3
  66. package/dist/tileset-2d/utils.d.ts.map +1 -0
  67. package/dist/tileset-2d/utils.js +234 -0
  68. package/{typed → dist}/trips-layer/trips-layer.d.ts +1 -1
  69. package/{typed → dist}/trips-layer/trips-layer.d.ts.map +1 -1
  70. package/dist/trips-layer/trips-layer.js +93 -0
  71. package/dist/wms-layer/utils.js +13 -0
  72. package/dist/wms-layer/wms-layer.js +192 -0
  73. package/dist.min.js +243 -564
  74. package/package.json +30 -23
  75. package/src/index.ts +7 -7
  76. package/src/mesh-layer/mesh-layer-fragment.glsl.ts +1 -9
  77. package/src/mesh-layer/mesh-layer.ts +1 -2
  78. package/src/mvt-layer/coordinate-transform.ts +1 -1
  79. package/src/mvt-layer/find-index-binary.ts +5 -9
  80. package/src/mvt-layer/mvt-layer.ts +36 -25
  81. package/src/terrain-layer/terrain-layer.ts +13 -3
  82. package/src/tile-3d-layer/tile-3d-layer.ts +1 -2
  83. package/src/tile-layer/tile-layer.ts +30 -14
  84. package/src/tileset-2d/tile-2d-header.ts +2 -1
  85. package/src/tileset-2d/tile-2d-traversal.ts +1 -1
  86. package/src/tileset-2d/tileset-2d.ts +14 -7
  87. package/src/tileset-2d/utils.ts +2 -2
  88. package/src/trips-layer/trips-layer.ts +1 -1
  89. package/src/wms-layer/wms-layer.ts +1 -1
  90. package/dist/es5/geo-cell-layer/GeoCellLayer.js +0 -118
  91. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +0 -1
  92. package/dist/es5/geohash-layer/geohash-layer.js +0 -67
  93. package/dist/es5/geohash-layer/geohash-layer.js.map +0 -1
  94. package/dist/es5/geohash-layer/geohash-utils.js +0 -77
  95. package/dist/es5/geohash-layer/geohash-utils.js.map +0 -1
  96. package/dist/es5/great-circle-layer/great-circle-layer.js +0 -48
  97. package/dist/es5/great-circle-layer/great-circle-layer.js.map +0 -1
  98. package/dist/es5/h3-layers/h3-cluster-layer.js +0 -162
  99. package/dist/es5/h3-layers/h3-cluster-layer.js.map +0 -1
  100. package/dist/es5/h3-layers/h3-hexagon-layer.js +0 -351
  101. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +0 -1
  102. package/dist/es5/h3-layers/h3-utils.js +0 -111
  103. package/dist/es5/h3-layers/h3-utils.js.map +0 -1
  104. package/dist/es5/index.js +0 -132
  105. package/dist/es5/index.js.map +0 -1
  106. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js +0 -9
  107. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
  108. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +0 -9
  109. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
  110. package/dist/es5/mesh-layer/mesh-layer.js +0 -217
  111. package/dist/es5/mesh-layer/mesh-layer.js.map +0 -1
  112. package/dist/es5/mvt-layer/coordinate-transform.js +0 -83
  113. package/dist/es5/mvt-layer/coordinate-transform.js.map +0 -1
  114. package/dist/es5/mvt-layer/find-index-binary.js +0 -127
  115. package/dist/es5/mvt-layer/find-index-binary.js.map +0 -1
  116. package/dist/es5/mvt-layer/mvt-layer.js +0 -533
  117. package/dist/es5/mvt-layer/mvt-layer.js.map +0 -1
  118. package/dist/es5/quadkey-layer/quadkey-layer.js +0 -72
  119. package/dist/es5/quadkey-layer/quadkey-layer.js.map +0 -1
  120. package/dist/es5/quadkey-layer/quadkey-utils.js +0 -53
  121. package/dist/es5/quadkey-layer/quadkey-utils.js.map +0 -1
  122. package/dist/es5/s2-layer/s2-geometry.js +0 -158
  123. package/dist/es5/s2-layer/s2-geometry.js.map +0 -1
  124. package/dist/es5/s2-layer/s2-layer.js +0 -67
  125. package/dist/es5/s2-layer/s2-layer.js.map +0 -1
  126. package/dist/es5/s2-layer/s2-utils.js +0 -80
  127. package/dist/es5/s2-layer/s2-utils.js.map +0 -1
  128. package/dist/es5/terrain-layer/terrain-layer.js +0 -347
  129. package/dist/es5/terrain-layer/terrain-layer.js.map +0 -1
  130. package/dist/es5/tile-3d-layer/tile-3d-layer.js +0 -511
  131. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +0 -1
  132. package/dist/es5/tile-layer/tile-layer.js +0 -363
  133. package/dist/es5/tile-layer/tile-layer.js.map +0 -1
  134. package/dist/es5/tileset-2d/index.js +0 -66
  135. package/dist/es5/tileset-2d/index.js.map +0 -1
  136. package/dist/es5/tileset-2d/memoize.js +0 -47
  137. package/dist/es5/tileset-2d/memoize.js.map +0 -1
  138. package/dist/es5/tileset-2d/tile-2d-header.js +0 -250
  139. package/dist/es5/tileset-2d/tile-2d-header.js.map +0 -1
  140. package/dist/es5/tileset-2d/tile-2d-traversal.js +0 -256
  141. package/dist/es5/tileset-2d/tile-2d-traversal.js.map +0 -1
  142. package/dist/es5/tileset-2d/tileset-2d.js +0 -757
  143. package/dist/es5/tileset-2d/tileset-2d.js.map +0 -1
  144. package/dist/es5/tileset-2d/types.js +0 -2
  145. package/dist/es5/tileset-2d/types.js.map +0 -1
  146. package/dist/es5/tileset-2d/utils.js +0 -302
  147. package/dist/es5/tileset-2d/utils.js.map +0 -1
  148. package/dist/es5/trips-layer/trips-layer.js +0 -114
  149. package/dist/es5/trips-layer/trips-layer.js.map +0 -1
  150. package/dist/es5/wms-layer/utils.js +0 -18
  151. package/dist/es5/wms-layer/utils.js.map +0 -1
  152. package/dist/es5/wms-layer/wms-layer.js +0 -376
  153. package/dist/es5/wms-layer/wms-layer.js.map +0 -1
  154. package/dist/esm/geo-cell-layer/GeoCellLayer.js +0 -72
  155. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +0 -1
  156. package/dist/esm/geohash-layer/geohash-layer.js +0 -26
  157. package/dist/esm/geohash-layer/geohash-layer.js.map +0 -1
  158. package/dist/esm/geohash-layer/geohash-utils.js +0 -56
  159. package/dist/esm/geohash-layer/geohash-utils.js.map +0 -1
  160. package/dist/esm/great-circle-layer/great-circle-layer.js +0 -12
  161. package/dist/esm/great-circle-layer/great-circle-layer.js.map +0 -1
  162. package/dist/esm/h3-layers/h3-cluster-layer.js +0 -79
  163. package/dist/esm/h3-layers/h3-cluster-layer.js.map +0 -1
  164. package/dist/esm/h3-layers/h3-hexagon-layer.js +0 -280
  165. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +0 -1
  166. package/dist/esm/h3-layers/h3-utils.js +0 -54
  167. package/dist/esm/h3-layers/h3-utils.js.map +0 -1
  168. package/dist/esm/index.js +0 -17
  169. package/dist/esm/index.js.map +0 -1
  170. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js +0 -56
  171. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
  172. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +0 -85
  173. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
  174. package/dist/esm/mesh-layer/mesh-layer.js +0 -178
  175. package/dist/esm/mesh-layer/mesh-layer.js.map +0 -1
  176. package/dist/esm/mvt-layer/coordinate-transform.js +0 -49
  177. package/dist/esm/mvt-layer/coordinate-transform.js.map +0 -1
  178. package/dist/esm/mvt-layer/find-index-binary.js +0 -99
  179. package/dist/esm/mvt-layer/find-index-binary.js.map +0 -1
  180. package/dist/esm/mvt-layer/mvt-layer.js +0 -427
  181. package/dist/esm/mvt-layer/mvt-layer.js.map +0 -1
  182. package/dist/esm/quadkey-layer/quadkey-layer.js +0 -31
  183. package/dist/esm/quadkey-layer/quadkey-layer.js.map +0 -1
  184. package/dist/esm/quadkey-layer/quadkey-utils.js +0 -24
  185. package/dist/esm/quadkey-layer/quadkey-utils.js.map +0 -1
  186. package/dist/esm/s2-layer/s2-geometry.js +0 -126
  187. package/dist/esm/s2-layer/s2-geometry.js.map +0 -1
  188. package/dist/esm/s2-layer/s2-layer.js +0 -26
  189. package/dist/esm/s2-layer/s2-layer.js.map +0 -1
  190. package/dist/esm/s2-layer/s2-utils.js +0 -69
  191. package/dist/esm/s2-layer/s2-utils.js.map +0 -1
  192. package/dist/esm/terrain-layer/terrain-layer.js +0 -292
  193. package/dist/esm/terrain-layer/terrain-layer.js.map +0 -1
  194. package/dist/esm/tile-3d-layer/tile-3d-layer.js +0 -438
  195. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +0 -1
  196. package/dist/esm/tile-layer/tile-layer.js +0 -299
  197. package/dist/esm/tile-layer/tile-layer.js.map +0 -1
  198. package/dist/esm/tileset-2d/index.js +0 -4
  199. package/dist/esm/tileset-2d/index.js.map +0 -1
  200. package/dist/esm/tileset-2d/memoize.js +0 -40
  201. package/dist/esm/tileset-2d/memoize.js.map +0 -1
  202. package/dist/esm/tileset-2d/tile-2d-header.js +0 -179
  203. package/dist/esm/tileset-2d/tile-2d-header.js.map +0 -1
  204. package/dist/esm/tileset-2d/tile-2d-traversal.js +0 -184
  205. package/dist/esm/tileset-2d/tile-2d-traversal.js.map +0 -1
  206. package/dist/esm/tileset-2d/tileset-2d.js +0 -509
  207. package/dist/esm/tileset-2d/tileset-2d.js.map +0 -1
  208. package/dist/esm/tileset-2d/types.js +0 -2
  209. package/dist/esm/tileset-2d/types.js.map +0 -1
  210. package/dist/esm/tileset-2d/utils.js +0 -233
  211. package/dist/esm/tileset-2d/utils.js.map +0 -1
  212. package/dist/esm/trips-layer/trips-layer.js +0 -88
  213. package/dist/esm/trips-layer/trips-layer.js.map +0 -1
  214. package/dist/esm/wms-layer/utils.js +0 -9
  215. package/dist/esm/wms-layer/utils.js.map +0 -1
  216. package/dist/esm/wms-layer/wms-layer.js +0 -231
  217. package/dist/esm/wms-layer/wms-layer.js.map +0 -1
  218. package/typed/geohash-layer/geohash-layer.d.ts.map +0 -1
  219. package/typed/h3-layers/h3-cluster-layer.d.ts.map +0 -1
  220. package/typed/index.d.ts +0 -31
  221. package/typed/index.d.ts.map +0 -1
  222. package/typed/mesh-layer/mesh-layer-fragment.glsl.d.ts +0 -3
  223. package/typed/mvt-layer/find-index-binary.d.ts +0 -12
  224. package/typed/mvt-layer/find-index-binary.d.ts.map +0 -1
  225. package/typed/mvt-layer/mvt-layer.d.ts.map +0 -1
  226. package/typed/quadkey-layer/quadkey-layer.d.ts.map +0 -1
  227. package/typed/s2-layer/s2-layer.d.ts.map +0 -1
  228. package/typed/terrain-layer/terrain-layer.d.ts.map +0 -1
  229. package/typed/tile-layer/tile-layer.d.ts.map +0 -1
  230. package/typed/tileset-2d/index.d.ts +0 -7
  231. package/typed/tileset-2d/index.d.ts.map +0 -1
  232. package/typed/tileset-2d/tile-2d-header.d.ts.map +0 -1
  233. package/typed/tileset-2d/tile-2d-traversal.d.ts +0 -4
  234. package/typed/tileset-2d/tile-2d-traversal.d.ts.map +0 -1
  235. package/typed/tileset-2d/tileset-2d.d.ts.map +0 -1
  236. package/typed/tileset-2d/utils.d.ts.map +0 -1
  237. /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts +0 -0
  238. /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts.map +0 -0
  239. /package/{typed → dist}/geohash-layer/geohash-utils.d.ts +0 -0
  240. /package/{typed → dist}/geohash-layer/geohash-utils.d.ts.map +0 -0
  241. /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts +0 -0
  242. /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts.map +0 -0
  243. /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts +0 -0
  244. /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts.map +0 -0
  245. /package/{typed → dist}/h3-layers/h3-utils.d.ts +0 -0
  246. /package/{typed → dist}/h3-layers/h3-utils.d.ts.map +0 -0
  247. /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts +0 -0
  248. /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +0 -0
  249. /package/{typed → dist}/mesh-layer/mesh-layer.d.ts +0 -0
  250. /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts +0 -0
  251. /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts.map +0 -0
  252. /package/{typed → dist}/s2-layer/s2-geometry.d.ts +0 -0
  253. /package/{typed → dist}/s2-layer/s2-geometry.d.ts.map +0 -0
  254. /package/{typed → dist}/s2-layer/s2-utils.d.ts +0 -0
  255. /package/{typed → dist}/s2-layer/s2-utils.d.ts.map +0 -0
  256. /package/{typed → dist}/tileset-2d/memoize.d.ts +0 -0
  257. /package/{typed → dist}/tileset-2d/memoize.d.ts.map +0 -0
  258. /package/{typed → dist}/tileset-2d/types.d.ts +0 -0
  259. /package/{typed → dist}/tileset-2d/types.d.ts.map +0 -0
  260. /package/{typed → dist}/wms-layer/utils.d.ts +0 -0
  261. /package/{typed → dist}/wms-layer/utils.d.ts.map +0 -0
  262. /package/{typed → dist}/wms-layer/wms-layer.d.ts +0 -0
  263. /package/{typed → dist}/wms-layer/wms-layer.d.ts.map +0 -0
@@ -1,509 +0,0 @@
1
- import { RequestScheduler } from '@loaders.gl/loader-utils';
2
- import { Matrix4, equals } from '@math.gl/core';
3
- import { Tile2DHeader } from './tile-2d-header';
4
- import { getTileIndices, tileToBoundingBox, getCullBounds } from './utils';
5
- import { memoize } from './memoize';
6
- const TILE_STATE_VISITED = 1;
7
- const TILE_STATE_VISIBLE = 2;
8
- export const STRATEGY_NEVER = 'never';
9
- export const STRATEGY_REPLACE = 'no-overlap';
10
- export const STRATEGY_DEFAULT = 'best-available';
11
- const DEFAULT_CACHE_SCALE = 5;
12
- const STRATEGIES = {
13
- [STRATEGY_DEFAULT]: updateTileStateDefault,
14
- [STRATEGY_REPLACE]: updateTileStateReplace,
15
- [STRATEGY_NEVER]: () => {}
16
- };
17
- export const DEFAULT_TILESET2D_PROPS = {
18
- extent: null,
19
- tileSize: 512,
20
- maxZoom: null,
21
- minZoom: null,
22
- maxCacheSize: null,
23
- maxCacheByteSize: null,
24
- refinementStrategy: 'best-available',
25
- zRange: null,
26
- maxRequests: 6,
27
- zoomOffset: 0,
28
- onTileLoad: () => {},
29
- onTileUnload: () => {},
30
- onTileError: () => {}
31
- };
32
- export class Tileset2D {
33
- constructor(opts) {
34
- this.opts = void 0;
35
- this._requestScheduler = void 0;
36
- this._cache = void 0;
37
- this._dirty = void 0;
38
- this._tiles = void 0;
39
- this._cacheByteSize = void 0;
40
- this._viewport = void 0;
41
- this._zRange = void 0;
42
- this._selectedTiles = void 0;
43
- this._frameNumber = void 0;
44
- this._modelMatrix = void 0;
45
- this._modelMatrixInverse = void 0;
46
- this._maxZoom = void 0;
47
- this._minZoom = void 0;
48
- this.onTileLoad = void 0;
49
- this._getCullBounds = memoize(getCullBounds);
50
- this.opts = { ...DEFAULT_TILESET2D_PROPS,
51
- ...opts
52
- };
53
-
54
- this.onTileLoad = tile => {
55
- var _this$opts$onTileLoad, _this$opts;
56
-
57
- (_this$opts$onTileLoad = (_this$opts = this.opts).onTileLoad) === null || _this$opts$onTileLoad === void 0 ? void 0 : _this$opts$onTileLoad.call(_this$opts, tile);
58
-
59
- if (this.opts.maxCacheByteSize) {
60
- this._cacheByteSize += tile.byteLength;
61
-
62
- this._resizeCache();
63
- }
64
- };
65
-
66
- this._requestScheduler = new RequestScheduler({
67
- maxRequests: opts.maxRequests,
68
- throttleRequests: Boolean(opts.maxRequests && opts.maxRequests > 0)
69
- });
70
- this._cache = new Map();
71
- this._tiles = [];
72
- this._dirty = false;
73
- this._cacheByteSize = 0;
74
- this._viewport = null;
75
- this._selectedTiles = null;
76
- this._frameNumber = 0;
77
- this._modelMatrix = new Matrix4();
78
- this._modelMatrixInverse = new Matrix4();
79
- this.setOptions(opts);
80
- }
81
-
82
- get tiles() {
83
- return this._tiles;
84
- }
85
-
86
- get selectedTiles() {
87
- return this._selectedTiles;
88
- }
89
-
90
- get isLoaded() {
91
- return this._selectedTiles !== null && this._selectedTiles.every(tile => tile.isLoaded);
92
- }
93
-
94
- get needsReload() {
95
- return this._selectedTiles !== null && this._selectedTiles.some(tile => tile.needsReload);
96
- }
97
-
98
- setOptions(opts) {
99
- Object.assign(this.opts, opts);
100
-
101
- if (Number.isFinite(opts.maxZoom)) {
102
- this._maxZoom = Math.floor(opts.maxZoom);
103
- }
104
-
105
- if (Number.isFinite(opts.minZoom)) {
106
- this._minZoom = Math.ceil(opts.minZoom);
107
- }
108
- }
109
-
110
- finalize() {
111
- for (const tile of this._cache.values()) {
112
- if (tile.isLoading) {
113
- tile.abort();
114
- }
115
- }
116
-
117
- this._cache.clear();
118
-
119
- this._tiles = [];
120
- this._selectedTiles = null;
121
- }
122
-
123
- reloadAll() {
124
- for (const id of this._cache.keys()) {
125
- const tile = this._cache.get(id);
126
-
127
- if (!this._selectedTiles || !this._selectedTiles.includes(tile)) {
128
- this._cache.delete(id);
129
- } else {
130
- tile.setNeedsReload();
131
- }
132
- }
133
- }
134
-
135
- update(viewport, {
136
- zRange,
137
- modelMatrix
138
- } = {}) {
139
- const modelMatrixAsMatrix4 = modelMatrix ? new Matrix4(modelMatrix) : new Matrix4();
140
- const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);
141
-
142
- if (!this._viewport || !viewport.equals(this._viewport) || !equals(this._zRange, zRange) || isModelMatrixNew) {
143
- if (isModelMatrixNew) {
144
- this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();
145
- this._modelMatrix = modelMatrixAsMatrix4;
146
- }
147
-
148
- this._viewport = viewport;
149
- this._zRange = zRange;
150
- const tileIndices = this.getTileIndices({
151
- viewport,
152
- maxZoom: this._maxZoom,
153
- minZoom: this._minZoom,
154
- zRange,
155
- modelMatrix: this._modelMatrix,
156
- modelMatrixInverse: this._modelMatrixInverse
157
- });
158
- this._selectedTiles = tileIndices.map(index => this._getTile(index, true));
159
-
160
- if (this._dirty) {
161
- this._rebuildTree();
162
- }
163
- } else if (this.needsReload) {
164
- this._selectedTiles = this._selectedTiles.map(tile => this._getTile(tile.index, true));
165
- }
166
-
167
- const changed = this.updateTileStates();
168
-
169
- this._pruneRequests();
170
-
171
- if (this._dirty) {
172
- this._resizeCache();
173
- }
174
-
175
- if (changed) {
176
- this._frameNumber++;
177
- }
178
-
179
- return this._frameNumber;
180
- }
181
-
182
- isTileVisible(tile, cullRect) {
183
- if (!tile.isVisible) {
184
- return false;
185
- }
186
-
187
- if (cullRect && this._viewport) {
188
- const boundsArr = this._getCullBounds({
189
- viewport: this._viewport,
190
- z: this._zRange,
191
- cullRect
192
- });
193
-
194
- const {
195
- bbox
196
- } = tile;
197
-
198
- for (const [minX, minY, maxX, maxY] of boundsArr) {
199
- let overlaps;
200
-
201
- if ('west' in bbox) {
202
- overlaps = bbox.west < maxX && bbox.east > minX && bbox.south < maxY && bbox.north > minY;
203
- } else {
204
- const y0 = Math.min(bbox.top, bbox.bottom);
205
- const y1 = Math.max(bbox.top, bbox.bottom);
206
- overlaps = bbox.left < maxX && bbox.right > minX && y0 < maxY && y1 > minY;
207
- }
208
-
209
- if (overlaps) {
210
- return true;
211
- }
212
- }
213
-
214
- return false;
215
- }
216
-
217
- return true;
218
- }
219
-
220
- getTileIndices({
221
- viewport,
222
- maxZoom,
223
- minZoom,
224
- zRange,
225
- modelMatrix,
226
- modelMatrixInverse
227
- }) {
228
- const {
229
- tileSize,
230
- extent,
231
- zoomOffset
232
- } = this.opts;
233
- return getTileIndices({
234
- viewport,
235
- maxZoom,
236
- minZoom,
237
- zRange,
238
- tileSize,
239
- extent: extent,
240
- modelMatrix,
241
- modelMatrixInverse,
242
- zoomOffset
243
- });
244
- }
245
-
246
- getTileId(index) {
247
- return `${index.x}-${index.y}-${index.z}`;
248
- }
249
-
250
- getTileZoom(index) {
251
- return index.z;
252
- }
253
-
254
- getTileMetadata(index) {
255
- const {
256
- tileSize
257
- } = this.opts;
258
- return {
259
- bbox: tileToBoundingBox(this._viewport, index.x, index.y, index.z, tileSize)
260
- };
261
- }
262
-
263
- getParentIndex(index) {
264
- const x = Math.floor(index.x / 2);
265
- const y = Math.floor(index.y / 2);
266
- const z = index.z - 1;
267
- return {
268
- x,
269
- y,
270
- z
271
- };
272
- }
273
-
274
- updateTileStates() {
275
- const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;
276
- const visibilities = new Array(this._cache.size);
277
- let i = 0;
278
-
279
- for (const tile of this._cache.values()) {
280
- visibilities[i++] = tile.isVisible;
281
- tile.isSelected = false;
282
- tile.isVisible = false;
283
- }
284
-
285
- for (const tile of this._selectedTiles) {
286
- tile.isSelected = true;
287
- tile.isVisible = true;
288
- }
289
-
290
- (typeof refinementStrategy === 'function' ? refinementStrategy : STRATEGIES[refinementStrategy])(Array.from(this._cache.values()));
291
- i = 0;
292
-
293
- for (const tile of this._cache.values()) {
294
- if (visibilities[i++] !== tile.isVisible) {
295
- return true;
296
- }
297
- }
298
-
299
- return false;
300
- }
301
-
302
- _pruneRequests() {
303
- const {
304
- maxRequests = 0
305
- } = this.opts;
306
- const abortCandidates = [];
307
- let ongoingRequestCount = 0;
308
-
309
- for (const tile of this._cache.values()) {
310
- if (tile.isLoading) {
311
- ongoingRequestCount++;
312
-
313
- if (!tile.isSelected && !tile.isVisible) {
314
- abortCandidates.push(tile);
315
- }
316
- }
317
- }
318
-
319
- while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {
320
- const tile = abortCandidates.shift();
321
- tile.abort();
322
- ongoingRequestCount--;
323
- }
324
- }
325
-
326
- _rebuildTree() {
327
- const {
328
- _cache
329
- } = this;
330
-
331
- for (const tile of _cache.values()) {
332
- tile.parent = null;
333
-
334
- if (tile.children) {
335
- tile.children.length = 0;
336
- }
337
- }
338
-
339
- for (const tile of _cache.values()) {
340
- const parent = this._getNearestAncestor(tile);
341
-
342
- tile.parent = parent;
343
-
344
- if (parent !== null && parent !== void 0 && parent.children) {
345
- parent.children.push(tile);
346
- }
347
- }
348
- }
349
-
350
- _resizeCache() {
351
- const {
352
- _cache,
353
- opts
354
- } = this;
355
- const maxCacheSize = opts.maxCacheSize || (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);
356
- const maxCacheByteSize = opts.maxCacheByteSize || Infinity;
357
- const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;
358
-
359
- if (overflown) {
360
- for (const [id, tile] of _cache) {
361
- if (!tile.isVisible && !tile.isSelected) {
362
- var _this$opts$onTileUnlo, _this$opts2;
363
-
364
- this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;
365
-
366
- _cache.delete(id);
367
-
368
- (_this$opts$onTileUnlo = (_this$opts2 = this.opts).onTileUnload) === null || _this$opts$onTileUnlo === void 0 ? void 0 : _this$opts$onTileUnlo.call(_this$opts2, tile);
369
- }
370
-
371
- if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {
372
- break;
373
- }
374
- }
375
-
376
- this._rebuildTree();
377
-
378
- this._dirty = true;
379
- }
380
-
381
- if (this._dirty) {
382
- this._tiles = Array.from(this._cache.values()).sort((t1, t2) => t1.zoom - t2.zoom);
383
- this._dirty = false;
384
- }
385
- }
386
-
387
- _getTile(index, create) {
388
- const id = this.getTileId(index);
389
-
390
- let tile = this._cache.get(id);
391
-
392
- let needsReload = false;
393
-
394
- if (!tile && create) {
395
- tile = new Tile2DHeader(index);
396
- Object.assign(tile, this.getTileMetadata(tile.index));
397
- Object.assign(tile, {
398
- id,
399
- zoom: this.getTileZoom(tile.index)
400
- });
401
- needsReload = true;
402
-
403
- this._cache.set(id, tile);
404
-
405
- this._dirty = true;
406
- } else if (tile && tile.needsReload) {
407
- needsReload = true;
408
- }
409
-
410
- if (tile && needsReload) {
411
- tile.loadData({
412
- getData: this.opts.getTileData,
413
- requestScheduler: this._requestScheduler,
414
- onLoad: this.onTileLoad,
415
- onError: this.opts.onTileError
416
- });
417
- }
418
-
419
- return tile;
420
- }
421
-
422
- _getNearestAncestor(tile) {
423
- const {
424
- _minZoom = 0
425
- } = this;
426
- let index = tile.index;
427
-
428
- while (this.getTileZoom(index) > _minZoom) {
429
- index = this.getParentIndex(index);
430
-
431
- const parent = this._getTile(index);
432
-
433
- if (parent) {
434
- return parent;
435
- }
436
- }
437
-
438
- return null;
439
- }
440
-
441
- }
442
-
443
- function updateTileStateDefault(allTiles) {
444
- for (const tile of allTiles) {
445
- tile.state = 0;
446
- }
447
-
448
- for (const tile of allTiles) {
449
- if (tile.isSelected && !getPlaceholderInAncestors(tile)) {
450
- getPlaceholderInChildren(tile);
451
- }
452
- }
453
-
454
- for (const tile of allTiles) {
455
- tile.isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);
456
- }
457
- }
458
-
459
- function updateTileStateReplace(allTiles) {
460
- for (const tile of allTiles) {
461
- tile.state = 0;
462
- }
463
-
464
- for (const tile of allTiles) {
465
- if (tile.isSelected) {
466
- getPlaceholderInAncestors(tile);
467
- }
468
- }
469
-
470
- const sortedTiles = Array.from(allTiles).sort((t1, t2) => t1.zoom - t2.zoom);
471
-
472
- for (const tile of sortedTiles) {
473
- tile.isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);
474
-
475
- if (tile.children && (tile.isVisible || tile.state & TILE_STATE_VISITED)) {
476
- for (const child of tile.children) {
477
- child.state = TILE_STATE_VISITED;
478
- }
479
- } else if (tile.isSelected) {
480
- getPlaceholderInChildren(tile);
481
- }
482
- }
483
- }
484
-
485
- function getPlaceholderInAncestors(startTile) {
486
- let tile = startTile;
487
-
488
- while (tile) {
489
- if (tile.isLoaded || tile.content) {
490
- tile.state |= TILE_STATE_VISIBLE;
491
- return true;
492
- }
493
-
494
- tile = tile.parent;
495
- }
496
-
497
- return false;
498
- }
499
-
500
- function getPlaceholderInChildren(tile) {
501
- for (const child of tile.children) {
502
- if (child.isLoaded || child.content) {
503
- child.state |= TILE_STATE_VISIBLE;
504
- } else {
505
- getPlaceholderInChildren(child);
506
- }
507
- }
508
- }
509
- //# sourceMappingURL=tileset-2d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/tileset-2d/tileset-2d.ts"],"names":["RequestScheduler","Matrix4","equals","Tile2DHeader","getTileIndices","tileToBoundingBox","getCullBounds","memoize","TILE_STATE_VISITED","TILE_STATE_VISIBLE","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","STRATEGIES","updateTileStateDefault","updateTileStateReplace","DEFAULT_TILESET2D_PROPS","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","zRange","maxRequests","zoomOffset","onTileLoad","onTileUnload","onTileError","Tileset2D","constructor","opts","_requestScheduler","_cache","_dirty","_tiles","_cacheByteSize","_viewport","_zRange","_selectedTiles","_frameNumber","_modelMatrix","_modelMatrixInverse","_maxZoom","_minZoom","_getCullBounds","tile","byteLength","_resizeCache","throttleRequests","Boolean","Map","setOptions","tiles","selectedTiles","isLoaded","every","needsReload","some","Object","assign","Number","isFinite","Math","floor","ceil","finalize","values","isLoading","abort","clear","reloadAll","id","keys","get","includes","delete","setNeedsReload","update","viewport","modelMatrix","modelMatrixAsMatrix4","isModelMatrixNew","clone","invert","tileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","changed","updateTileStates","_pruneRequests","isTileVisible","cullRect","isVisible","boundsArr","z","bbox","minX","minY","maxX","maxY","overlaps","west","east","south","north","y0","min","top","bottom","y1","max","left","right","getTileId","x","y","getTileZoom","getTileMetadata","getParentIndex","visibilities","Array","size","i","isSelected","from","abortCandidates","ongoingRequestCount","push","length","shift","parent","children","_getNearestAncestor","Infinity","overflown","sort","t1","t2","zoom","create","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","allTiles","state","getPlaceholderInAncestors","getPlaceholderInChildren","sortedTiles","child","startTile","content"],"mappings":"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","sourcesContent":["import {Viewport} from '@deck.gl/core';\n\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {Matrix4, equals, NumericArray} from '@math.gl/core';\n\nimport {Tile2DHeader} from './tile-2d-header';\n\nimport {getTileIndices, tileToBoundingBox, getCullBounds} from './utils';\nimport {Bounds, TileIndex, ZRange} from './types';\nimport {TileLoadProps} from './types';\nimport {memoize} from './memoize';\n\n// bit masks\nconst TILE_STATE_VISITED = 1;\nconst TILE_STATE_VISIBLE = 2;\n/*\n show cached parent tile if children are loading\n +-----------+ +-----+ +-----+-----+\n | | | | | | |\n | | | | | | |\n | | --> +-----+-----+ -> +-----+-----+\n | | | | | | |\n | | | | | | |\n +-----------+ +-----+ +-----+-----+\n\n show cached children tiles when parent is loading\n +-------+---- +------------\n | | |\n | | |\n | | |\n +-------+---- --> |\n | | |\n */\n\nexport const STRATEGY_NEVER = 'never';\nexport const STRATEGY_REPLACE = 'no-overlap';\nexport const STRATEGY_DEFAULT = 'best-available';\n\nexport type RefinementStrategyFunction = (tiles: Tile2DHeader[]) => void;\nexport type RefinementStrategy =\n | 'never'\n | 'no-overlap'\n | 'best-available'\n | RefinementStrategyFunction;\n\nconst DEFAULT_CACHE_SCALE = 5;\n\nconst STRATEGIES = {\n [STRATEGY_DEFAULT]: updateTileStateDefault,\n [STRATEGY_REPLACE]: updateTileStateReplace,\n [STRATEGY_NEVER]: () => {}\n};\n\nexport type Tileset2DProps<DataT = any> = {\n /** `getTileData` is called to retrieve the data of each tile. */\n getTileData: (props: TileLoadProps) => Promise<DataT> | DataT;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n /** The max zoom level of the layer's data. @default null */\n maxZoom?: number | null;\n /** The min zoom level of the layer's data. @default 0 */\n minZoom?: number | null;\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n /** The maximum memory used for caching tiles. @default null */\n maxCacheByteSize?: number | null;\n /** How the tile layer refines the visibility of tiles. @default 'best-available' */\n refinementStrategy?: RefinementStrategy;\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n /** The maximum number of concurrent getTileData calls. @default 6 */\n maxRequests?: number;\n /** Changes the zoom level at which the tiles are fetched. Needs to be an integer. @default 0 */\n zoomOffset?: number;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader<DataT>) => void;\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader<DataT>) => void;\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile: Tile2DHeader<DataT>) => void;\n\n // onTileLoad: (tile: Tile2DHeader) => void;\n // onTileUnload: (tile: Tile2DHeader) => void;\n // onTileError: (error: any, tile: Tile2DHeader) => void;\n /** Called when all tiles in the current viewport are loaded. */\n // sonViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;\n};\n\nexport const DEFAULT_TILESET2D_PROPS: Omit<Required<Tileset2DProps>, 'getTileData'> = {\n extent: null,\n tileSize: 512,\n\n maxZoom: null,\n minZoom: null,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: 'best-available',\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0,\n\n // onTileLoad: (tile: Tile2DHeader) => void, // onTileUnload: (tile: Tile2DHeader) => void, // onTileError: (error: any, tile: Tile2DHeader) => void, /** Called when all tiles in the current viewport are loaded. */\n // onViewportLoad: ((tiles: Tile2DHeader<DataT>[]) => void) | null,\n onTileLoad: () => {},\n onTileUnload: () => {},\n onTileError: () => {}\n};\n\n/**\n * Manages loading and purging of tile data. This class caches recently visited tiles\n * and only creates new tiles if they are present.\n */\nexport class Tileset2D {\n private opts: Required<Tileset2DProps>;\n private _requestScheduler: RequestScheduler;\n private _cache: Map<string, Tile2DHeader>;\n private _dirty: boolean;\n private _tiles: Tile2DHeader[];\n\n private _cacheByteSize: number;\n private _viewport: Viewport | null;\n private _zRange?: ZRange | null;\n private _selectedTiles: Tile2DHeader[] | null;\n private _frameNumber: number;\n private _modelMatrix: Matrix4;\n private _modelMatrixInverse: Matrix4;\n\n private _maxZoom?: number;\n private _minZoom?: number;\n\n private onTileLoad: (tile: Tile2DHeader) => void;\n\n /**\n * Takes in a function that returns tile data, a cache size, and a max and a min zoom level.\n * Cache size defaults to 5 * number of tiles in the current viewport\n */\n constructor(opts: Tileset2DProps) {\n this.opts = {...DEFAULT_TILESET2D_PROPS, ...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: Boolean(opts.maxRequests && opts.maxRequests > 0)\n });\n\n // Maps tile id in string {z}-{x}-{y} to a Tile object\n this._cache = new Map();\n this._tiles = [];\n this._dirty = false;\n this._cacheByteSize = 0;\n\n // Cache the last processed viewport\n this._viewport = null;\n this._selectedTiles = null;\n this._frameNumber = 0;\n\n this._modelMatrix = new Matrix4();\n this._modelMatrixInverse = new Matrix4();\n\n this.setOptions(opts);\n }\n\n /* Public API */\n get tiles() {\n return this._tiles;\n }\n\n get selectedTiles(): Tile2DHeader[] | null {\n return this._selectedTiles;\n }\n\n get isLoaded(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.every(tile => tile.isLoaded);\n }\n\n get needsReload(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.some(tile => tile.needsReload);\n }\n\n setOptions(opts: Tileset2DProps): void {\n Object.assign(this.opts, opts);\n if (Number.isFinite(opts.maxZoom)) {\n this._maxZoom = Math.floor(opts.maxZoom as number);\n }\n if (Number.isFinite(opts.minZoom)) {\n this._minZoom = Math.ceil(opts.minZoom as number);\n }\n }\n\n // Clean up any outstanding tile requests.\n finalize(): void {\n for (const tile of this._cache.values()) {\n if (tile.isLoading) {\n tile.abort();\n }\n }\n this._cache.clear();\n this._tiles = [];\n this._selectedTiles = null;\n }\n\n reloadAll(): void {\n for (const id of this._cache.keys()) {\n const tile = this._cache.get(id) as Tile2DHeader;\n if (!this._selectedTiles || !this._selectedTiles.includes(tile)) {\n this._cache.delete(id);\n } else {\n tile.setNeedsReload();\n }\n }\n }\n\n /**\n * Update the cache with the given viewport and model matrix and triggers callback onUpdate.\n */\n update(\n viewport: Viewport,\n {zRange, modelMatrix}: {zRange?: ZRange | null; modelMatrix?: NumericArray | null} = {}\n ): number {\n const modelMatrixAsMatrix4 = modelMatrix ? new Matrix4(modelMatrix) : new Matrix4();\n const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);\n if (\n !this._viewport ||\n !viewport.equals(this._viewport) ||\n !equals(this._zRange, zRange) ||\n isModelMatrixNew\n ) {\n if (isModelMatrixNew) {\n this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();\n this._modelMatrix = modelMatrixAsMatrix4;\n }\n this._viewport = viewport;\n this._zRange = zRange;\n const tileIndices = this.getTileIndices({\n viewport,\n maxZoom: this._maxZoom,\n minZoom: this._minZoom,\n zRange,\n modelMatrix: this._modelMatrix,\n modelMatrixInverse: this._modelMatrixInverse\n });\n this._selectedTiles = tileIndices.map(index => this._getTile(index, true));\n\n if (this._dirty) {\n // Some new tiles are added\n this._rebuildTree();\n }\n // Check for needed reloads explicitly even if the view/matrix has not changed.\n } else if (this.needsReload) {\n this._selectedTiles = this._selectedTiles!.map(tile => this._getTile(tile.index, true));\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 // eslint-disable-next-line complexity\n isTileVisible(\n tile: Tile2DHeader,\n cullRect?: {x: number; y: number; width: number; height: number}\n ): boolean {\n if (!tile.isVisible) {\n return false;\n }\n\n if (cullRect && this._viewport) {\n const boundsArr = this._getCullBounds({\n viewport: this._viewport,\n z: this._zRange,\n cullRect\n });\n const {bbox} = tile;\n for (const [minX, minY, maxX, maxY] of boundsArr) {\n let overlaps;\n if ('west' in bbox) {\n overlaps = bbox.west < maxX && bbox.east > minX && bbox.south < maxY && bbox.north > minY;\n } else {\n // top/bottom could be swapped depending on the indexing system\n const y0 = Math.min(bbox.top, bbox.bottom);\n const y1 = Math.max(bbox.top, bbox.bottom);\n overlaps = bbox.left < maxX && bbox.right > minX && y0 < maxY && y1 > minY;\n }\n if (overlaps) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n\n /* Public interface for subclassing */\n\n /** Returns array of tile indices in the current viewport */\n getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n modelMatrix,\n modelMatrixInverse\n }: {\n viewport: Viewport;\n maxZoom?: number;\n minZoom?: number;\n zRange?: ZRange | null;\n tileSize?: number;\n modelMatrix?: Matrix4;\n modelMatrixInverse?: Matrix4;\n zoomOffset?: number;\n }): TileIndex[] {\n const {tileSize, extent, zoomOffset} = this.opts;\n return getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n tileSize,\n extent: extent as Bounds | undefined,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset\n });\n }\n\n /** Returns unique string key for a tile index */\n getTileId(index: TileIndex) {\n return `${index.x}-${index.y}-${index.z}`;\n }\n\n /** Returns a zoom level for a tile index */\n getTileZoom(index: TileIndex) {\n return index.z;\n }\n\n /** Returns additional metadata to add to tile, bbox by default */\n getTileMetadata(index: TileIndex): Record<string, any> {\n const {tileSize} = this.opts;\n return {bbox: tileToBoundingBox(this._viewport!, index.x, index.y, index.z, tileSize)};\n }\n\n /** Returns index of the parent tile */\n getParentIndex(index: TileIndex) {\n const x = Math.floor(index.x / 2);\n const y = Math.floor(index.y / 2);\n const z = index.z - 1;\n return {x, y, z};\n }\n\n // Returns true if any tile's visibility changed\n private 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 // @ts-expect-error called only when _selectedTiles is already defined\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 private _getCullBounds = memoize(getCullBounds);\n\n private _pruneRequests(): void {\n const {maxRequests = 0} = this.opts;\n\n const abortCandidates: Tile2DHeader[] = [];\n let ongoingRequestCount = 0;\n for (const tile of this._cache.values()) {\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected && !tile.isVisible) {\n abortCandidates.push(tile);\n }\n }\n }\n\n while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {\n // There are too many ongoing requests, so abort some that are unselected\n const tile = abortCandidates.shift()!;\n tile.abort();\n ongoingRequestCount--;\n }\n }\n\n // This needs to be called every time some tiles have been added/removed from cache\n private _rebuildTree() {\n const {_cache} = this;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.parent = null;\n if (tile.children) {\n tile.children.length = 0;\n }\n }\n\n // Rebuild tree\n for (const tile of _cache.values()) {\n const parent = this._getNearestAncestor(tile);\n tile.parent = parent;\n if (parent?.children) {\n parent.children.push(tile);\n }\n }\n }\n\n /**\n * Clear tiles that are not visible when the cache is full\n */\n /* eslint-disable complexity */\n private _resizeCache() {\n const {_cache, opts} = this;\n\n const maxCacheSize =\n opts.maxCacheSize ||\n // @ts-expect-error called only when selectedTiles is initialized\n (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);\n const maxCacheByteSize = opts.maxCacheByteSize || Infinity;\n\n const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;\n\n if (overflown) {\n for (const [id, tile] of _cache) {\n if (!tile.isVisible && !tile.isSelected) {\n // delete tile\n this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;\n _cache.delete(id);\n this.opts.onTileUnload?.(tile);\n }\n if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {\n break;\n }\n }\n this._rebuildTree();\n this._dirty = true;\n }\n if (this._dirty) {\n // sort by zoom level so that smaller tiles are displayed on top\n this._tiles = Array.from(this._cache.values()).sort((t1, t2) => t1.zoom - t2.zoom);\n\n this._dirty = false;\n }\n }\n /* eslint-enable complexity */\n\n private _getTile(index: TileIndex, create: true): Tile2DHeader;\n private _getTile(index: TileIndex, create?: false): Tile2DHeader | undefined;\n private _getTile(index: TileIndex, create?: boolean): Tile2DHeader | undefined {\n const id = this.getTileId(index);\n let tile = this._cache.get(id);\n let needsReload = false;\n\n if (!tile && create) {\n tile = new Tile2DHeader(index);\n Object.assign(tile, this.getTileMetadata(tile.index));\n Object.assign(tile, {id, zoom: this.getTileZoom(tile.index)});\n needsReload = true;\n this._cache.set(id, tile);\n this._dirty = true;\n } else if (tile && tile.needsReload) {\n needsReload = true;\n }\n if (tile && needsReload) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tile.loadData({\n getData: this.opts.getTileData,\n requestScheduler: this._requestScheduler,\n onLoad: this.onTileLoad,\n onError: this.opts.onTileError\n });\n }\n\n return tile;\n }\n\n _getNearestAncestor(tile: Tile2DHeader): Tile2DHeader | null {\n const {_minZoom = 0} = this;\n\n let index = tile.index;\n while (this.getTileZoom(index) > _minZoom) {\n index = this.getParentIndex(index);\n const parent = this._getTile(index);\n if (parent) {\n return parent;\n }\n }\n return null;\n }\n}\n\n/* -- Refinement strategies --*/\n/* eslint-disable max-depth */\n\n// For all the selected && pending tiles:\n// - pick the closest ancestor as placeholder\n// - if no ancestor is visible, pick the closest children as placeholder\nfunction updateTileStateDefault(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected && !getPlaceholderInAncestors(tile)) {\n getPlaceholderInChildren(tile);\n }\n }\n for (const tile of allTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n }\n}\n\n// Until a selected tile and all its selected siblings are loaded, use the closest ancestor as placeholder\nfunction updateTileStateReplace(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected) {\n getPlaceholderInAncestors(tile);\n }\n }\n // Always process parents first\n const sortedTiles = Array.from(allTiles).sort((t1, t2) => t1.zoom - t2.zoom);\n for (const tile of sortedTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n\n if (tile.children && (tile.isVisible || tile.state! & TILE_STATE_VISITED)) {\n // If the tile is rendered, or if the tile has been explicitly hidden, hide all of its children\n for (const child of tile.children) {\n child.state = TILE_STATE_VISITED;\n }\n } else if (tile.isSelected) {\n getPlaceholderInChildren(tile);\n }\n }\n}\n\n// Walk up the tree until we find one ancestor that is loaded. Returns true if successful.\nfunction getPlaceholderInAncestors(startTile: Tile2DHeader) {\n let tile: Tile2DHeader | null = startTile;\n while (tile) {\n if (tile.isLoaded || tile.content) {\n tile.state! |= TILE_STATE_VISIBLE;\n return true;\n }\n tile = tile.parent;\n }\n return false;\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n if (child.isLoaded || child.content) {\n child.state |= TILE_STATE_VISIBLE;\n } else {\n getPlaceholderInChildren(child);\n }\n }\n}\n"],"file":"tileset-2d.js"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}