@deck.gl/geo-layers 9.0.0-beta.1 → 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 (262) hide show
  1. package/dist/dist.dev.js +2574 -5077
  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-layer/tile-layer.ts +30 -14
  83. package/src/tileset-2d/tile-2d-header.ts +2 -1
  84. package/src/tileset-2d/tile-2d-traversal.ts +1 -1
  85. package/src/tileset-2d/tileset-2d.ts +14 -7
  86. package/src/tileset-2d/utils.ts +2 -2
  87. package/src/trips-layer/trips-layer.ts +1 -1
  88. package/src/wms-layer/wms-layer.ts +1 -1
  89. package/dist/es5/geo-cell-layer/GeoCellLayer.js +0 -118
  90. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +0 -1
  91. package/dist/es5/geohash-layer/geohash-layer.js +0 -67
  92. package/dist/es5/geohash-layer/geohash-layer.js.map +0 -1
  93. package/dist/es5/geohash-layer/geohash-utils.js +0 -77
  94. package/dist/es5/geohash-layer/geohash-utils.js.map +0 -1
  95. package/dist/es5/great-circle-layer/great-circle-layer.js +0 -48
  96. package/dist/es5/great-circle-layer/great-circle-layer.js.map +0 -1
  97. package/dist/es5/h3-layers/h3-cluster-layer.js +0 -162
  98. package/dist/es5/h3-layers/h3-cluster-layer.js.map +0 -1
  99. package/dist/es5/h3-layers/h3-hexagon-layer.js +0 -351
  100. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +0 -1
  101. package/dist/es5/h3-layers/h3-utils.js +0 -111
  102. package/dist/es5/h3-layers/h3-utils.js.map +0 -1
  103. package/dist/es5/index.js +0 -132
  104. package/dist/es5/index.js.map +0 -1
  105. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js +0 -9
  106. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
  107. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +0 -9
  108. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
  109. package/dist/es5/mesh-layer/mesh-layer.js +0 -217
  110. package/dist/es5/mesh-layer/mesh-layer.js.map +0 -1
  111. package/dist/es5/mvt-layer/coordinate-transform.js +0 -83
  112. package/dist/es5/mvt-layer/coordinate-transform.js.map +0 -1
  113. package/dist/es5/mvt-layer/find-index-binary.js +0 -127
  114. package/dist/es5/mvt-layer/find-index-binary.js.map +0 -1
  115. package/dist/es5/mvt-layer/mvt-layer.js +0 -533
  116. package/dist/es5/mvt-layer/mvt-layer.js.map +0 -1
  117. package/dist/es5/quadkey-layer/quadkey-layer.js +0 -72
  118. package/dist/es5/quadkey-layer/quadkey-layer.js.map +0 -1
  119. package/dist/es5/quadkey-layer/quadkey-utils.js +0 -53
  120. package/dist/es5/quadkey-layer/quadkey-utils.js.map +0 -1
  121. package/dist/es5/s2-layer/s2-geometry.js +0 -158
  122. package/dist/es5/s2-layer/s2-geometry.js.map +0 -1
  123. package/dist/es5/s2-layer/s2-layer.js +0 -67
  124. package/dist/es5/s2-layer/s2-layer.js.map +0 -1
  125. package/dist/es5/s2-layer/s2-utils.js +0 -80
  126. package/dist/es5/s2-layer/s2-utils.js.map +0 -1
  127. package/dist/es5/terrain-layer/terrain-layer.js +0 -347
  128. package/dist/es5/terrain-layer/terrain-layer.js.map +0 -1
  129. package/dist/es5/tile-3d-layer/tile-3d-layer.js +0 -511
  130. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +0 -1
  131. package/dist/es5/tile-layer/tile-layer.js +0 -363
  132. package/dist/es5/tile-layer/tile-layer.js.map +0 -1
  133. package/dist/es5/tileset-2d/index.js +0 -66
  134. package/dist/es5/tileset-2d/index.js.map +0 -1
  135. package/dist/es5/tileset-2d/memoize.js +0 -47
  136. package/dist/es5/tileset-2d/memoize.js.map +0 -1
  137. package/dist/es5/tileset-2d/tile-2d-header.js +0 -250
  138. package/dist/es5/tileset-2d/tile-2d-header.js.map +0 -1
  139. package/dist/es5/tileset-2d/tile-2d-traversal.js +0 -256
  140. package/dist/es5/tileset-2d/tile-2d-traversal.js.map +0 -1
  141. package/dist/es5/tileset-2d/tileset-2d.js +0 -757
  142. package/dist/es5/tileset-2d/tileset-2d.js.map +0 -1
  143. package/dist/es5/tileset-2d/types.js +0 -2
  144. package/dist/es5/tileset-2d/types.js.map +0 -1
  145. package/dist/es5/tileset-2d/utils.js +0 -302
  146. package/dist/es5/tileset-2d/utils.js.map +0 -1
  147. package/dist/es5/trips-layer/trips-layer.js +0 -114
  148. package/dist/es5/trips-layer/trips-layer.js.map +0 -1
  149. package/dist/es5/wms-layer/utils.js +0 -18
  150. package/dist/es5/wms-layer/utils.js.map +0 -1
  151. package/dist/es5/wms-layer/wms-layer.js +0 -376
  152. package/dist/es5/wms-layer/wms-layer.js.map +0 -1
  153. package/dist/esm/geo-cell-layer/GeoCellLayer.js +0 -72
  154. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +0 -1
  155. package/dist/esm/geohash-layer/geohash-layer.js +0 -26
  156. package/dist/esm/geohash-layer/geohash-layer.js.map +0 -1
  157. package/dist/esm/geohash-layer/geohash-utils.js +0 -56
  158. package/dist/esm/geohash-layer/geohash-utils.js.map +0 -1
  159. package/dist/esm/great-circle-layer/great-circle-layer.js +0 -12
  160. package/dist/esm/great-circle-layer/great-circle-layer.js.map +0 -1
  161. package/dist/esm/h3-layers/h3-cluster-layer.js +0 -79
  162. package/dist/esm/h3-layers/h3-cluster-layer.js.map +0 -1
  163. package/dist/esm/h3-layers/h3-hexagon-layer.js +0 -280
  164. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +0 -1
  165. package/dist/esm/h3-layers/h3-utils.js +0 -54
  166. package/dist/esm/h3-layers/h3-utils.js.map +0 -1
  167. package/dist/esm/index.js +0 -17
  168. package/dist/esm/index.js.map +0 -1
  169. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js +0 -56
  170. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
  171. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +0 -85
  172. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
  173. package/dist/esm/mesh-layer/mesh-layer.js +0 -178
  174. package/dist/esm/mesh-layer/mesh-layer.js.map +0 -1
  175. package/dist/esm/mvt-layer/coordinate-transform.js +0 -49
  176. package/dist/esm/mvt-layer/coordinate-transform.js.map +0 -1
  177. package/dist/esm/mvt-layer/find-index-binary.js +0 -99
  178. package/dist/esm/mvt-layer/find-index-binary.js.map +0 -1
  179. package/dist/esm/mvt-layer/mvt-layer.js +0 -427
  180. package/dist/esm/mvt-layer/mvt-layer.js.map +0 -1
  181. package/dist/esm/quadkey-layer/quadkey-layer.js +0 -31
  182. package/dist/esm/quadkey-layer/quadkey-layer.js.map +0 -1
  183. package/dist/esm/quadkey-layer/quadkey-utils.js +0 -24
  184. package/dist/esm/quadkey-layer/quadkey-utils.js.map +0 -1
  185. package/dist/esm/s2-layer/s2-geometry.js +0 -126
  186. package/dist/esm/s2-layer/s2-geometry.js.map +0 -1
  187. package/dist/esm/s2-layer/s2-layer.js +0 -26
  188. package/dist/esm/s2-layer/s2-layer.js.map +0 -1
  189. package/dist/esm/s2-layer/s2-utils.js +0 -69
  190. package/dist/esm/s2-layer/s2-utils.js.map +0 -1
  191. package/dist/esm/terrain-layer/terrain-layer.js +0 -292
  192. package/dist/esm/terrain-layer/terrain-layer.js.map +0 -1
  193. package/dist/esm/tile-3d-layer/tile-3d-layer.js +0 -438
  194. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +0 -1
  195. package/dist/esm/tile-layer/tile-layer.js +0 -299
  196. package/dist/esm/tile-layer/tile-layer.js.map +0 -1
  197. package/dist/esm/tileset-2d/index.js +0 -4
  198. package/dist/esm/tileset-2d/index.js.map +0 -1
  199. package/dist/esm/tileset-2d/memoize.js +0 -40
  200. package/dist/esm/tileset-2d/memoize.js.map +0 -1
  201. package/dist/esm/tileset-2d/tile-2d-header.js +0 -179
  202. package/dist/esm/tileset-2d/tile-2d-header.js.map +0 -1
  203. package/dist/esm/tileset-2d/tile-2d-traversal.js +0 -184
  204. package/dist/esm/tileset-2d/tile-2d-traversal.js.map +0 -1
  205. package/dist/esm/tileset-2d/tileset-2d.js +0 -509
  206. package/dist/esm/tileset-2d/tileset-2d.js.map +0 -1
  207. package/dist/esm/tileset-2d/types.js +0 -2
  208. package/dist/esm/tileset-2d/types.js.map +0 -1
  209. package/dist/esm/tileset-2d/utils.js +0 -233
  210. package/dist/esm/tileset-2d/utils.js.map +0 -1
  211. package/dist/esm/trips-layer/trips-layer.js +0 -88
  212. package/dist/esm/trips-layer/trips-layer.js.map +0 -1
  213. package/dist/esm/wms-layer/utils.js +0 -9
  214. package/dist/esm/wms-layer/utils.js.map +0 -1
  215. package/dist/esm/wms-layer/wms-layer.js +0 -231
  216. package/dist/esm/wms-layer/wms-layer.js.map +0 -1
  217. package/typed/geohash-layer/geohash-layer.d.ts.map +0 -1
  218. package/typed/h3-layers/h3-cluster-layer.d.ts.map +0 -1
  219. package/typed/index.d.ts +0 -31
  220. package/typed/index.d.ts.map +0 -1
  221. package/typed/mesh-layer/mesh-layer-fragment.glsl.d.ts +0 -3
  222. package/typed/mvt-layer/find-index-binary.d.ts +0 -12
  223. package/typed/mvt-layer/find-index-binary.d.ts.map +0 -1
  224. package/typed/mvt-layer/mvt-layer.d.ts.map +0 -1
  225. package/typed/quadkey-layer/quadkey-layer.d.ts.map +0 -1
  226. package/typed/s2-layer/s2-layer.d.ts.map +0 -1
  227. package/typed/terrain-layer/terrain-layer.d.ts.map +0 -1
  228. package/typed/tile-layer/tile-layer.d.ts.map +0 -1
  229. package/typed/tileset-2d/index.d.ts +0 -7
  230. package/typed/tileset-2d/index.d.ts.map +0 -1
  231. package/typed/tileset-2d/tile-2d-header.d.ts.map +0 -1
  232. package/typed/tileset-2d/tile-2d-traversal.d.ts +0 -4
  233. package/typed/tileset-2d/tile-2d-traversal.d.ts.map +0 -1
  234. package/typed/tileset-2d/tileset-2d.d.ts.map +0 -1
  235. package/typed/tileset-2d/utils.d.ts.map +0 -1
  236. /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts +0 -0
  237. /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts.map +0 -0
  238. /package/{typed → dist}/geohash-layer/geohash-utils.d.ts +0 -0
  239. /package/{typed → dist}/geohash-layer/geohash-utils.d.ts.map +0 -0
  240. /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts +0 -0
  241. /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts.map +0 -0
  242. /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts +0 -0
  243. /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts.map +0 -0
  244. /package/{typed → dist}/h3-layers/h3-utils.d.ts +0 -0
  245. /package/{typed → dist}/h3-layers/h3-utils.d.ts.map +0 -0
  246. /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts +0 -0
  247. /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +0 -0
  248. /package/{typed → dist}/mesh-layer/mesh-layer.d.ts +0 -0
  249. /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts +0 -0
  250. /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts.map +0 -0
  251. /package/{typed → dist}/s2-layer/s2-geometry.d.ts +0 -0
  252. /package/{typed → dist}/s2-layer/s2-geometry.d.ts.map +0 -0
  253. /package/{typed → dist}/s2-layer/s2-utils.d.ts +0 -0
  254. /package/{typed → dist}/s2-layer/s2-utils.d.ts.map +0 -0
  255. /package/{typed → dist}/tileset-2d/memoize.d.ts +0 -0
  256. /package/{typed → dist}/tileset-2d/memoize.d.ts.map +0 -0
  257. /package/{typed → dist}/tileset-2d/types.d.ts +0 -0
  258. /package/{typed → dist}/tileset-2d/types.d.ts.map +0 -0
  259. /package/{typed → dist}/wms-layer/utils.d.ts +0 -0
  260. /package/{typed → dist}/wms-layer/utils.d.ts.map +0 -0
  261. /package/{typed → dist}/wms-layer/wms-layer.d.ts +0 -0
  262. /package/{typed → dist}/wms-layer/wms-layer.d.ts.map +0 -0
@@ -1,250 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.Tile2DHeader = void 0;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
- var Tile2DHeader = function () {
19
- function Tile2DHeader(index) {
20
- (0, _classCallCheck2.default)(this, Tile2DHeader);
21
- this.index = void 0;
22
- this.isVisible = void 0;
23
- this.isSelected = void 0;
24
- this.parent = void 0;
25
- this.children = void 0;
26
- this.content = void 0;
27
- this.state = void 0;
28
- this.layers = void 0;
29
- this.id = void 0;
30
- this.zoom = void 0;
31
- this.userData = void 0;
32
- this.boundingBox = void 0;
33
- this._abortController = void 0;
34
- this._loader = void 0;
35
- this._loaderId = void 0;
36
- this._isLoaded = void 0;
37
- this._isCancelled = void 0;
38
- this._needsReload = void 0;
39
- this._bbox = void 0;
40
- this.index = index;
41
- this.isVisible = false;
42
- this.isSelected = false;
43
- this.parent = null;
44
- this.children = [];
45
- this.content = null;
46
- this._loader = undefined;
47
- this._abortController = null;
48
- this._loaderId = 0;
49
- this._isLoaded = false;
50
- this._isCancelled = false;
51
- this._needsReload = false;
52
- }
53
-
54
- var _proto = Tile2DHeader.prototype;
55
-
56
- _proto._loadData = function () {
57
- var _loadData2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(_ref) {
58
- var getData, requestScheduler, onLoad, onError, index, id, bbox, userData, zoom, loaderId, signal, requestToken, tileData, error;
59
- return _regenerator.default.wrap(function _callee$(_context) {
60
- while (1) {
61
- switch (_context.prev = _context.next) {
62
- case 0:
63
- getData = _ref.getData, requestScheduler = _ref.requestScheduler, onLoad = _ref.onLoad, onError = _ref.onError;
64
- index = this.index, id = this.id, bbox = this.bbox, userData = this.userData, zoom = this.zoom;
65
- loaderId = this._loaderId;
66
- this._abortController = new AbortController();
67
- signal = this._abortController.signal;
68
- _context.next = 7;
69
- return requestScheduler.scheduleRequest(this, function (tile) {
70
- return tile.isSelected ? 1 : -1;
71
- });
72
-
73
- case 7:
74
- requestToken = _context.sent;
75
-
76
- if (requestToken) {
77
- _context.next = 11;
78
- break;
79
- }
80
-
81
- this._isCancelled = true;
82
- return _context.abrupt("return");
83
-
84
- case 11:
85
- if (!this._isCancelled) {
86
- _context.next = 14;
87
- break;
88
- }
89
-
90
- requestToken.done();
91
- return _context.abrupt("return");
92
-
93
- case 14:
94
- tileData = null;
95
- _context.prev = 15;
96
- _context.next = 18;
97
- return getData({
98
- index: index,
99
- id: id,
100
- bbox: bbox,
101
- userData: userData,
102
- zoom: zoom,
103
- signal: signal
104
- });
105
-
106
- case 18:
107
- tileData = _context.sent;
108
- _context.next = 24;
109
- break;
110
-
111
- case 21:
112
- _context.prev = 21;
113
- _context.t0 = _context["catch"](15);
114
- error = _context.t0 || true;
115
-
116
- case 24:
117
- _context.prev = 24;
118
- requestToken.done();
119
- return _context.finish(24);
120
-
121
- case 27:
122
- if (!(loaderId !== this._loaderId)) {
123
- _context.next = 29;
124
- break;
125
- }
126
-
127
- return _context.abrupt("return");
128
-
129
- case 29:
130
- this._loader = undefined;
131
- this.content = tileData;
132
-
133
- if (!(this._isCancelled && !tileData)) {
134
- _context.next = 34;
135
- break;
136
- }
137
-
138
- this._isLoaded = false;
139
- return _context.abrupt("return");
140
-
141
- case 34:
142
- this._isLoaded = true;
143
- this._isCancelled = false;
144
-
145
- if (error) {
146
- onError(error, this);
147
- } else {
148
- onLoad(this);
149
- }
150
-
151
- case 37:
152
- case "end":
153
- return _context.stop();
154
- }
155
- }
156
- }, _callee, this, [[15, 21, 24, 27]]);
157
- }));
158
-
159
- function _loadData(_x) {
160
- return _loadData2.apply(this, arguments);
161
- }
162
-
163
- return _loadData;
164
- }();
165
-
166
- _proto.loadData = function loadData(opts) {
167
- this._isLoaded = false;
168
- this._isCancelled = false;
169
- this._needsReload = false;
170
- this._loaderId++;
171
- this._loader = this._loadData(opts);
172
- return this._loader;
173
- };
174
-
175
- _proto.setNeedsReload = function setNeedsReload() {
176
- if (this.isLoading) {
177
- this.abort();
178
- this._loader = undefined;
179
- }
180
-
181
- this._needsReload = true;
182
- };
183
-
184
- _proto.abort = function abort() {
185
- var _this$_abortControlle;
186
-
187
- if (this.isLoaded) {
188
- return;
189
- }
190
-
191
- this._isCancelled = true;
192
- (_this$_abortControlle = this._abortController) === null || _this$_abortControlle === void 0 ? void 0 : _this$_abortControlle.abort();
193
- };
194
-
195
- (0, _createClass2.default)(Tile2DHeader, [{
196
- key: "bbox",
197
- get: function get() {
198
- return this._bbox;
199
- },
200
- set: function set(value) {
201
- if (this._bbox) return;
202
- this._bbox = value;
203
-
204
- if ('west' in value) {
205
- this.boundingBox = [[value.west, value.south], [value.east, value.north]];
206
- } else {
207
- this.boundingBox = [[value.left, value.top], [value.right, value.bottom]];
208
- }
209
- }
210
- }, {
211
- key: "data",
212
- get: function get() {
213
- var _this = this;
214
-
215
- return this.isLoading && this._loader ? this._loader.then(function () {
216
- return _this.data;
217
- }) : this.content;
218
- }
219
- }, {
220
- key: "isLoaded",
221
- get: function get() {
222
- return this._isLoaded && !this._needsReload;
223
- }
224
- }, {
225
- key: "isLoading",
226
- get: function get() {
227
- return Boolean(this._loader) && !this._isCancelled;
228
- }
229
- }, {
230
- key: "needsReload",
231
- get: function get() {
232
- return this._needsReload || this._isCancelled;
233
- }
234
- }, {
235
- key: "byteLength",
236
- get: function get() {
237
- var result = this.content ? this.content.byteLength : 0;
238
-
239
- if (!Number.isFinite(result)) {
240
- console.error('byteLength not defined in tile data');
241
- }
242
-
243
- return result;
244
- }
245
- }]);
246
- return Tile2DHeader;
247
- }();
248
-
249
- exports.Tile2DHeader = Tile2DHeader;
250
- //# sourceMappingURL=tile-2d-header.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/tileset-2d/tile-2d-header.ts"],"names":["Tile2DHeader","index","isVisible","isSelected","parent","children","content","state","layers","id","zoom","userData","boundingBox","_abortController","_loader","_loaderId","_isLoaded","_isCancelled","_needsReload","_bbox","undefined","_loadData","getData","requestScheduler","onLoad","onError","bbox","loaderId","AbortController","signal","scheduleRequest","tile","requestToken","done","tileData","error","loadData","opts","setNeedsReload","isLoading","abort","isLoaded","value","west","south","east","north","left","top","right","bottom","then","data","Boolean","result","byteLength","Number","isFinite","console"],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {TileBoundingBox, TileIndex, TileLoadProps} from './types';\n\nexport type TileLoadDataProps<DataT = any> = {\n requestScheduler: RequestScheduler;\n getData: (props: TileLoadProps) => Promise<DataT>;\n onLoad: (tile: Tile2DHeader<DataT>) => void;\n onError: (error: any, tile: Tile2DHeader<DataT>) => void;\n};\n\nexport class Tile2DHeader<DataT = any> {\n index: TileIndex;\n isVisible: boolean;\n isSelected: boolean;\n parent: Tile2DHeader | null;\n children: Tile2DHeader[] | null;\n content: DataT | null;\n state?: number;\n layers?: any[] | null; // Layer[] | null\n\n id!: string; // assigned _always_ with result of `getTileId`\n zoom!: number; // assigned _always_ with result of `getTileZoom`\n userData?: Record<string, any>; // _may be_ assigned with result of `getTileMetadata`\n boundingBox!: [min: number[], max: number[]]; // assigned _always_ with bbox from `getTileMetadata`\n\n private _abortController: AbortController | null;\n private _loader: Promise<void> | undefined;\n private _loaderId: number;\n private _isLoaded: boolean;\n private _isCancelled: boolean;\n private _needsReload: boolean;\n private _bbox!: TileBoundingBox;\n\n constructor(index: TileIndex) {\n this.index = index;\n this.isVisible = false;\n this.isSelected = false;\n this.parent = null;\n this.children = [];\n\n this.content = null;\n\n this._loader = undefined;\n this._abortController = null;\n this._loaderId = 0;\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n }\n\n /** @deprecated use `boundingBox` instead */\n get bbox(): TileBoundingBox {\n return this._bbox;\n }\n\n // TODO - remove in v9\n set bbox(value: TileBoundingBox) {\n // Only set once from `Tileset2D.getTileMetadata`\n if (this._bbox) return;\n\n this._bbox = value;\n if ('west' in value) {\n this.boundingBox = [\n [value.west, value.south],\n [value.east, value.north]\n ];\n } else {\n this.boundingBox = [\n [value.left, value.top],\n [value.right, value.bottom]\n ];\n }\n }\n\n get data(): Promise<DataT | null> | DataT | null {\n return this.isLoading && this._loader ? this._loader.then(() => this.data) : this.content;\n }\n\n get isLoaded(): boolean {\n return this._isLoaded && !this._needsReload;\n }\n\n get isLoading(): boolean {\n return Boolean(this._loader) && !this._isCancelled;\n }\n\n get needsReload(): boolean {\n return this._needsReload || this._isCancelled;\n }\n\n get byteLength(): number {\n const result = this.content ? (this.content as any).byteLength : 0;\n if (!Number.isFinite(result)) {\n // eslint-disable-next-line no-console\n console.error('byteLength not defined in tile data');\n }\n return result;\n }\n\n /* eslint-disable max-statements */\n private async _loadData({\n getData,\n requestScheduler,\n onLoad,\n onError\n }: TileLoadDataProps<DataT>): Promise<void> {\n const {index, id, bbox, userData, zoom} = this;\n const loaderId = this._loaderId;\n\n this._abortController = new AbortController();\n const {signal} = this._abortController;\n\n // @ts-expect-error (2345) Argument of type '(tile: any) => 1 | -1' is not assignable ...\n const requestToken = await requestScheduler.scheduleRequest(this, tile => {\n return tile.isSelected ? 1 : -1;\n });\n\n if (!requestToken) {\n this._isCancelled = true;\n return;\n }\n // A tile can be cancelled while being scheduled\n if (this._isCancelled) {\n requestToken.done();\n return;\n }\n\n let tileData: DataT | null = null;\n let error;\n try {\n tileData = await getData({index, id, bbox, userData, zoom, signal});\n } catch (err) {\n error = err || true;\n } finally {\n requestToken.done();\n }\n\n // If loadData has been called with a newer version, discard the result from this operation\n if (loaderId !== this._loaderId) {\n return;\n }\n // Clear the `isLoading` flag\n this._loader = undefined;\n // Rewrite tile content with the result of getTileData if successful, or `null` in case of\n // error or cancellation\n this.content = tileData;\n // If cancelled, do not invoke the callbacks\n // Consider it loaded if we tried to cancel but `getTileData` still returned data\n if (this._isCancelled && !tileData) {\n this._isLoaded = false;\n return;\n }\n this._isLoaded = true;\n this._isCancelled = false;\n\n if (error) {\n onError(error, this);\n } else {\n onLoad(this);\n }\n }\n\n loadData(opts: TileLoadDataProps): Promise<void> {\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n this._loaderId++;\n this._loader = this._loadData(opts);\n return this._loader;\n }\n\n setNeedsReload(): void {\n if (this.isLoading) {\n this.abort();\n this._loader = undefined;\n }\n this._needsReload = true;\n }\n\n abort(): void {\n if (this.isLoaded) {\n return;\n }\n\n this._isCancelled = true;\n this._abortController?.abort();\n }\n}\n"],"file":"tile-2d-header.js"}
@@ -1,256 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.getOSMTileIndices = getOSMTileIndices;
9
-
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _core = require("@deck.gl/core");
17
-
18
- var _culling = require("@math.gl/culling");
19
-
20
- var _webMercator = require("@math.gl/web-mercator");
21
-
22
- var _utils = require("./utils");
23
-
24
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
25
-
26
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
27
-
28
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
29
-
30
- var TILE_SIZE = 512;
31
- var MAX_MAPS = 3;
32
- var REF_POINTS_5 = [[0.5, 0.5], [0, 0], [0, 1], [1, 0], [1, 1]];
33
- var REF_POINTS_9 = REF_POINTS_5.concat([[0, 0.5], [0.5, 0], [1, 0.5], [0.5, 1]]);
34
- var REF_POINTS_11 = REF_POINTS_9.concat([[0.25, 0.5], [0.75, 0.5]]);
35
-
36
- var OSMNode = function () {
37
- function OSMNode(x, y, z) {
38
- (0, _classCallCheck2.default)(this, OSMNode);
39
- this.x = void 0;
40
- this.y = void 0;
41
- this.z = void 0;
42
- this.childVisible = void 0;
43
- this.selected = void 0;
44
- this._children = void 0;
45
- this.x = x;
46
- this.y = y;
47
- this.z = z;
48
- }
49
-
50
- var _proto = OSMNode.prototype;
51
-
52
- _proto.update = function update(params) {
53
- var viewport = params.viewport,
54
- cullingVolume = params.cullingVolume,
55
- elevationBounds = params.elevationBounds,
56
- minZ = params.minZ,
57
- maxZ = params.maxZ,
58
- bounds = params.bounds,
59
- offset = params.offset,
60
- project = params.project;
61
- var boundingVolume = this.getBoundingVolume(elevationBounds, offset, project);
62
-
63
- if (bounds && !this.insideBounds(bounds)) {
64
- return false;
65
- }
66
-
67
- var isInside = cullingVolume.computeVisibility(boundingVolume);
68
-
69
- if (isInside < 0) {
70
- return false;
71
- }
72
-
73
- if (!this.childVisible) {
74
- var z = this.z;
75
-
76
- if (z < maxZ && z >= minZ) {
77
- var distance = boundingVolume.distanceTo(viewport.cameraPosition) * viewport.scale / viewport.height;
78
- z += Math.floor(Math.log2(distance));
79
- }
80
-
81
- if (z >= maxZ) {
82
- this.selected = true;
83
- return true;
84
- }
85
- }
86
-
87
- this.selected = false;
88
- this.childVisible = true;
89
-
90
- var _iterator = _createForOfIteratorHelper(this.children),
91
- _step;
92
-
93
- try {
94
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
95
- var child = _step.value;
96
- child.update(params);
97
- }
98
- } catch (err) {
99
- _iterator.e(err);
100
- } finally {
101
- _iterator.f();
102
- }
103
-
104
- return true;
105
- };
106
-
107
- _proto.getSelected = function getSelected() {
108
- var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
109
-
110
- if (this.selected) {
111
- result.push(this);
112
- }
113
-
114
- if (this._children) {
115
- var _iterator2 = _createForOfIteratorHelper(this._children),
116
- _step2;
117
-
118
- try {
119
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
120
- var node = _step2.value;
121
- node.getSelected(result);
122
- }
123
- } catch (err) {
124
- _iterator2.e(err);
125
- } finally {
126
- _iterator2.f();
127
- }
128
- }
129
-
130
- return result;
131
- };
132
-
133
- _proto.insideBounds = function insideBounds(_ref) {
134
- var _ref2 = (0, _slicedToArray2.default)(_ref, 4),
135
- minX = _ref2[0],
136
- minY = _ref2[1],
137
- maxX = _ref2[2],
138
- maxY = _ref2[3];
139
-
140
- var scale = Math.pow(2, this.z);
141
- var extent = TILE_SIZE / scale;
142
- return this.x * extent < maxX && this.y * extent < maxY && (this.x + 1) * extent > minX && (this.y + 1) * extent > minY;
143
- };
144
-
145
- _proto.getBoundingVolume = function getBoundingVolume(zRange, worldOffset, project) {
146
- if (project) {
147
- var refPoints = this.z < 1 ? REF_POINTS_11 : this.z < 2 ? REF_POINTS_9 : REF_POINTS_5;
148
- var refPointPositions = [];
149
-
150
- var _iterator3 = _createForOfIteratorHelper(refPoints),
151
- _step3;
152
-
153
- try {
154
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
155
- var p = _step3.value;
156
- var lngLat = (0, _utils.osmTile2lngLat)(this.x + p[0], this.y + p[1], this.z);
157
- lngLat[2] = zRange[0];
158
- refPointPositions.push(project(lngLat));
159
-
160
- if (zRange[0] !== zRange[1]) {
161
- lngLat[2] = zRange[1];
162
- refPointPositions.push(project(lngLat));
163
- }
164
- }
165
- } catch (err) {
166
- _iterator3.e(err);
167
- } finally {
168
- _iterator3.f();
169
- }
170
-
171
- return (0, _culling.makeOrientedBoundingBoxFromPoints)(refPointPositions);
172
- }
173
-
174
- var scale = Math.pow(2, this.z);
175
- var extent = TILE_SIZE / scale;
176
- var originX = this.x * extent + worldOffset * TILE_SIZE;
177
- var originY = TILE_SIZE - (this.y + 1) * extent;
178
- return new _culling.AxisAlignedBoundingBox([originX, originY, zRange[0]], [originX + extent, originY + extent, zRange[1]]);
179
- };
180
-
181
- (0, _createClass2.default)(OSMNode, [{
182
- key: "children",
183
- get: function get() {
184
- if (!this._children) {
185
- var x = this.x * 2;
186
- var y = this.y * 2;
187
- var z = this.z + 1;
188
- this._children = [new OSMNode(x, y, z), new OSMNode(x, y + 1, z), new OSMNode(x + 1, y, z), new OSMNode(x + 1, y + 1, z)];
189
- }
190
-
191
- return this._children;
192
- }
193
- }]);
194
- return OSMNode;
195
- }();
196
-
197
- function getOSMTileIndices(viewport, maxZ, zRange, bounds) {
198
- var project = viewport instanceof _core._GlobeViewport && viewport.resolution ? viewport.projectPosition : null;
199
- var planes = Object.values(viewport.getFrustumPlanes()).map(function (_ref3) {
200
- var normal = _ref3.normal,
201
- distance = _ref3.distance;
202
- return new _culling.Plane(normal.clone().negate(), distance);
203
- });
204
- var cullingVolume = new _culling.CullingVolume(planes);
205
- var unitsPerMeter = viewport.distanceScales.unitsPerMeter[2];
206
- var elevationMin = zRange && zRange[0] * unitsPerMeter || 0;
207
- var elevationMax = zRange && zRange[1] * unitsPerMeter || 0;
208
- var minZ = viewport instanceof _core.WebMercatorViewport && viewport.pitch <= 60 ? maxZ : 0;
209
-
210
- if (bounds) {
211
- var _bounds = bounds,
212
- _bounds2 = (0, _slicedToArray2.default)(_bounds, 4),
213
- minLng = _bounds2[0],
214
- minLat = _bounds2[1],
215
- maxLng = _bounds2[2],
216
- maxLat = _bounds2[3];
217
-
218
- var topLeft = (0, _webMercator.lngLatToWorld)([minLng, maxLat]);
219
- var bottomRight = (0, _webMercator.lngLatToWorld)([maxLng, minLat]);
220
- bounds = [topLeft[0], TILE_SIZE - topLeft[1], bottomRight[0], TILE_SIZE - bottomRight[1]];
221
- }
222
-
223
- var root = new OSMNode(0, 0, 0);
224
- var traversalParams = {
225
- viewport: viewport,
226
- project: project,
227
- cullingVolume: cullingVolume,
228
- elevationBounds: [elevationMin, elevationMax],
229
- minZ: minZ,
230
- maxZ: maxZ,
231
- bounds: bounds,
232
- offset: 0
233
- };
234
- root.update(traversalParams);
235
-
236
- if (viewport instanceof _core.WebMercatorViewport && viewport.subViewports && viewport.subViewports.length > 1) {
237
- traversalParams.offset = -1;
238
-
239
- while (root.update(traversalParams)) {
240
- if (--traversalParams.offset < -MAX_MAPS) {
241
- break;
242
- }
243
- }
244
-
245
- traversalParams.offset = 1;
246
-
247
- while (root.update(traversalParams)) {
248
- if (++traversalParams.offset > MAX_MAPS) {
249
- break;
250
- }
251
- }
252
- }
253
-
254
- return root.getSelected();
255
- }
256
- //# sourceMappingURL=tile-2d-traversal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/tileset-2d/tile-2d-traversal.ts"],"names":["TILE_SIZE","MAX_MAPS","REF_POINTS_5","REF_POINTS_9","concat","REF_POINTS_11","OSMNode","x","y","z","childVisible","selected","_children","update","params","viewport","cullingVolume","elevationBounds","minZ","maxZ","bounds","offset","project","boundingVolume","getBoundingVolume","insideBounds","isInside","computeVisibility","distance","distanceTo","cameraPosition","scale","height","Math","floor","log2","children","child","getSelected","result","push","node","minX","minY","maxX","maxY","pow","extent","zRange","worldOffset","refPoints","refPointPositions","p","lngLat","originX","originY","AxisAlignedBoundingBox","getOSMTileIndices","_GlobeViewport","resolution","projectPosition","planes","Object","values","getFrustumPlanes","map","normal","Plane","clone","negate","CullingVolume","unitsPerMeter","distanceScales","elevationMin","elevationMax","WebMercatorViewport","pitch","minLng","minLat","maxLng","maxLat","topLeft","bottomRight","root","traversalParams","subViewports","length"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAEA;;AAMA;;AAEA;;;;;;;;AAEA,IAAMA,SAAS,GAAG,GAAlB;AAEA,IAAMC,QAAQ,GAAG,CAAjB;AAEA,IAAMC,YAAY,GAAG,CACnB,CAAC,GAAD,EAAM,GAAN,CADmB,EAEnB,CAAC,CAAD,EAAI,CAAJ,CAFmB,EAGnB,CAAC,CAAD,EAAI,CAAJ,CAHmB,EAInB,CAAC,CAAD,EAAI,CAAJ,CAJmB,EAKnB,CAAC,CAAD,EAAI,CAAJ,CALmB,CAArB;AAOA,IAAMC,YAAY,GAAGD,YAAY,CAACE,MAAb,CAAoB,CACvC,CAAC,CAAD,EAAI,GAAJ,CADuC,EAEvC,CAAC,GAAD,EAAM,CAAN,CAFuC,EAGvC,CAAC,CAAD,EAAI,GAAJ,CAHuC,EAIvC,CAAC,GAAD,EAAM,CAAN,CAJuC,CAApB,CAArB;AAMA,IAAMC,aAAa,GAAGF,YAAY,CAACC,MAAb,CAAoB,CACxC,CAAC,IAAD,EAAO,GAAP,CADwC,EAExC,CAAC,IAAD,EAAO,GAAP,CAFwC,CAApB,CAAtB;;IAKME,O;AAUJ,mBAAYC,CAAZ,EAAeC,CAAf,EAAkBC,CAAlB,EAAqB;AAAA;AAAA,SATrBF,CASqB;AAAA,SARrBC,CAQqB;AAAA,SAPrBC,CAOqB;AAAA,SALbC,YAKa;AAAA,SAJbC,QAIa;AAAA,SAFbC,SAEa;AACnB,SAAKL,CAAL,GAASA,CAAT;AACA,SAAKC,CAAL,GAASA,CAAT;AACA,SAAKC,CAAL,GAASA,CAAT;AACD;;;;SAkBDI,M,GAAA,gBAAOC,MAAP,EASG;AACD,QAAOC,QAAP,GAAwFD,MAAxF,CAAOC,QAAP;AAAA,QAAiBC,aAAjB,GAAwFF,MAAxF,CAAiBE,aAAjB;AAAA,QAAgCC,eAAhC,GAAwFH,MAAxF,CAAgCG,eAAhC;AAAA,QAAiDC,IAAjD,GAAwFJ,MAAxF,CAAiDI,IAAjD;AAAA,QAAuDC,IAAvD,GAAwFL,MAAxF,CAAuDK,IAAvD;AAAA,QAA6DC,MAA7D,GAAwFN,MAAxF,CAA6DM,MAA7D;AAAA,QAAqEC,MAArE,GAAwFP,MAAxF,CAAqEO,MAArE;AAAA,QAA6EC,OAA7E,GAAwFR,MAAxF,CAA6EQ,OAA7E;AACA,QAAMC,cAAc,GAAG,KAAKC,iBAAL,CAAuBP,eAAvB,EAAwCI,MAAxC,EAAgDC,OAAhD,CAAvB;;AAGA,QAAIF,MAAM,IAAI,CAAC,KAAKK,YAAL,CAAkBL,MAAlB,CAAf,EAA0C;AACxC,aAAO,KAAP;AACD;;AAED,QAAMM,QAAQ,GAAGV,aAAa,CAACW,iBAAd,CAAgCJ,cAAhC,CAAjB;;AACA,QAAIG,QAAQ,GAAG,CAAf,EAAkB;AAChB,aAAO,KAAP;AACD;;AAGD,QAAI,CAAC,KAAKhB,YAAV,EAAwB;AACtB,UAAKD,CAAL,GAAU,IAAV,CAAKA,CAAL;;AACA,UAAIA,CAAC,GAAGU,IAAJ,IAAYV,CAAC,IAAIS,IAArB,EAA2B;AAGzB,YAAMU,QAAQ,GACXL,cAAc,CAACM,UAAf,CAA0Bd,QAAQ,CAACe,cAAnC,IAAqDf,QAAQ,CAACgB,KAA/D,GAAwEhB,QAAQ,CAACiB,MADnF;AAEAvB,QAAAA,CAAC,IAAIwB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,IAAL,CAAUP,QAAV,CAAX,CAAL;AACD;;AACD,UAAInB,CAAC,IAAIU,IAAT,EAAe;AAEb,aAAKR,QAAL,GAAgB,IAAhB;AACA,eAAO,IAAP;AACD;AACF;;AAGD,SAAKA,QAAL,GAAgB,KAAhB;AACA,SAAKD,YAAL,GAAoB,IAApB;;AAjCC,+CAkCmB,KAAK0B,QAlCxB;AAAA;;AAAA;AAkCD,0DAAmC;AAAA,YAAxBC,KAAwB;AACjCA,QAAAA,KAAK,CAACxB,MAAN,CAAaC,MAAb;AACD;AApCA;AAAA;AAAA;AAAA;AAAA;;AAqCD,WAAO,IAAP;AACD,G;;SAEDwB,W,GAAA,uBAA+C;AAAA,QAAnCC,MAAmC,uEAAf,EAAe;;AAC7C,QAAI,KAAK5B,QAAT,EAAmB;AACjB4B,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAZ;AACD;;AACD,QAAI,KAAK5B,SAAT,EAAoB;AAAA,kDACC,KAAKA,SADN;AAAA;;AAAA;AAClB,+DAAmC;AAAA,cAAxB6B,IAAwB;AACjCA,UAAAA,IAAI,CAACH,WAAL,CAAiBC,MAAjB;AACD;AAHiB;AAAA;AAAA;AAAA;AAAA;AAInB;;AACD,WAAOA,MAAP;AACD,G;;SAEDd,Y,GAAA,4BAAwD;AAAA;AAAA,QAA1CiB,IAA0C;AAAA,QAApCC,IAAoC;AAAA,QAA9BC,IAA8B;AAAA,QAAxBC,IAAwB;;AACtD,QAAMd,KAAK,GAAGE,IAAI,CAACa,GAAL,CAAS,CAAT,EAAY,KAAKrC,CAAjB,CAAd;AACA,QAAMsC,MAAM,GAAG/C,SAAS,GAAG+B,KAA3B;AAEA,WACE,KAAKxB,CAAL,GAASwC,MAAT,GAAkBH,IAAlB,IACA,KAAKpC,CAAL,GAASuC,MAAT,GAAkBF,IADlB,IAEA,CAAC,KAAKtC,CAAL,GAAS,CAAV,IAAewC,MAAf,GAAwBL,IAFxB,IAGA,CAAC,KAAKlC,CAAL,GAAS,CAAV,IAAeuC,MAAf,GAAwBJ,IAJ1B;AAMD,G;;SAEDnB,iB,GAAA,2BACEwB,MADF,EAEEC,WAFF,EAGE3B,OAHF,EAIE;AACA,QAAIA,OAAJ,EAAa;AAIX,UAAM4B,SAAS,GAAG,KAAKzC,CAAL,GAAS,CAAT,GAAaJ,aAAb,GAA6B,KAAKI,CAAL,GAAS,CAAT,GAAaN,YAAb,GAA4BD,YAA3E;AAGA,UAAMiD,iBAA6B,GAAG,EAAtC;;AAPW,kDAQKD,SARL;AAAA;;AAAA;AAQX,+DAA2B;AAAA,cAAhBE,CAAgB;AACzB,cAAMC,MAAgB,GAAG,2BAAe,KAAK9C,CAAL,GAAS6C,CAAC,CAAC,CAAD,CAAzB,EAA8B,KAAK5C,CAAL,GAAS4C,CAAC,CAAC,CAAD,CAAxC,EAA6C,KAAK3C,CAAlD,CAAzB;AACA4C,UAAAA,MAAM,CAAC,CAAD,CAAN,GAAYL,MAAM,CAAC,CAAD,CAAlB;AACAG,UAAAA,iBAAiB,CAACX,IAAlB,CAAuBlB,OAAO,CAAC+B,MAAD,CAA9B;;AAEA,cAAIL,MAAM,CAAC,CAAD,CAAN,KAAcA,MAAM,CAAC,CAAD,CAAxB,EAA6B;AAE3BK,YAAAA,MAAM,CAAC,CAAD,CAAN,GAAYL,MAAM,CAAC,CAAD,CAAlB;AACAG,YAAAA,iBAAiB,CAACX,IAAlB,CAAuBlB,OAAO,CAAC+B,MAAD,CAA9B;AACD;AACF;AAlBU;AAAA;AAAA;AAAA;AAAA;;AAoBX,aAAO,gDAAkCF,iBAAlC,CAAP;AACD;;AAGD,QAAMpB,KAAK,GAAGE,IAAI,CAACa,GAAL,CAAS,CAAT,EAAY,KAAKrC,CAAjB,CAAd;AACA,QAAMsC,MAAM,GAAG/C,SAAS,GAAG+B,KAA3B;AACA,QAAMuB,OAAO,GAAG,KAAK/C,CAAL,GAASwC,MAAT,GAAkBE,WAAW,GAAGjD,SAAhD;AAEA,QAAMuD,OAAO,GAAGvD,SAAS,GAAG,CAAC,KAAKQ,CAAL,GAAS,CAAV,IAAeuC,MAA3C;AAEA,WAAO,IAAIS,+BAAJ,CACL,CAACF,OAAD,EAAUC,OAAV,EAAmBP,MAAM,CAAC,CAAD,CAAzB,CADK,EAEL,CAACM,OAAO,GAAGP,MAAX,EAAmBQ,OAAO,GAAGR,MAA7B,EAAqCC,MAAM,CAAC,CAAD,CAA3C,CAFK,CAAP;AAID,G;;;;SAhID,eAAe;AACb,UAAI,CAAC,KAAKpC,SAAV,EAAqB;AACnB,YAAML,CAAC,GAAG,KAAKA,CAAL,GAAS,CAAnB;AACA,YAAMC,CAAC,GAAG,KAAKA,CAAL,GAAS,CAAnB;AACA,YAAMC,CAAC,GAAG,KAAKA,CAAL,GAAS,CAAnB;AACA,aAAKG,SAAL,GAAiB,CACf,IAAIN,OAAJ,CAAYC,CAAZ,EAAeC,CAAf,EAAkBC,CAAlB,CADe,EAEf,IAAIH,OAAJ,CAAYC,CAAZ,EAAeC,CAAC,GAAG,CAAnB,EAAsBC,CAAtB,CAFe,EAGf,IAAIH,OAAJ,CAAYC,CAAC,GAAG,CAAhB,EAAmBC,CAAnB,EAAsBC,CAAtB,CAHe,EAIf,IAAIH,OAAJ,CAAYC,CAAC,GAAG,CAAhB,EAAmBC,CAAC,GAAG,CAAvB,EAA0BC,CAA1B,CAJe,CAAjB;AAMD;;AACD,aAAO,KAAKG,SAAZ;AACD;;;;;AAuHI,SAAS6C,iBAAT,CACL1C,QADK,EAELI,IAFK,EAGL6B,MAHK,EAIL5B,MAJK,EAKQ;AACb,MAAME,OAA6C,GACjDP,QAAQ,YAAY2C,oBAApB,IAAsC3C,QAAQ,CAAC4C,UAA/C,GAEI5C,QAAQ,CAAC6C,eAFb,GAGI,IAJN;AAOA,MAAMC,MAAe,GAAGC,MAAM,CAACC,MAAP,CAAchD,QAAQ,CAACiD,gBAAT,EAAd,EAA2CC,GAA3C,CACtB;AAAA,QAAEC,MAAF,SAAEA,MAAF;AAAA,QAAUtC,QAAV,SAAUA,QAAV;AAAA,WAAwB,IAAIuC,cAAJ,CAAUD,MAAM,CAACE,KAAP,GAAeC,MAAf,EAAV,EAAmCzC,QAAnC,CAAxB;AAAA,GADsB,CAAxB;AAGA,MAAMZ,aAAa,GAAG,IAAIsD,sBAAJ,CAAkBT,MAAlB,CAAtB;AAGA,MAAMU,aAAa,GAAGxD,QAAQ,CAACyD,cAAT,CAAwBD,aAAxB,CAAsC,CAAtC,CAAtB;AACA,MAAME,YAAY,GAAIzB,MAAM,IAAIA,MAAM,CAAC,CAAD,CAAN,GAAYuB,aAAvB,IAAyC,CAA9D;AACA,MAAMG,YAAY,GAAI1B,MAAM,IAAIA,MAAM,CAAC,CAAD,CAAN,GAAYuB,aAAvB,IAAyC,CAA9D;AAGA,MAAMrD,IAAI,GAAGH,QAAQ,YAAY4D,yBAApB,IAA2C5D,QAAQ,CAAC6D,KAAT,IAAkB,EAA7D,GAAkEzD,IAAlE,GAAyE,CAAtF;;AAGA,MAAIC,MAAJ,EAAY;AACV,kBAAyCA,MAAzC;AAAA;AAAA,QAAOyD,MAAP;AAAA,QAAeC,MAAf;AAAA,QAAuBC,MAAvB;AAAA,QAA+BC,MAA/B;;AACA,QAAMC,OAAO,GAAG,gCAAc,CAACJ,MAAD,EAASG,MAAT,CAAd,CAAhB;AACA,QAAME,WAAW,GAAG,gCAAc,CAACH,MAAD,EAASD,MAAT,CAAd,CAApB;AACA1D,IAAAA,MAAM,GAAG,CAAC6D,OAAO,CAAC,CAAD,CAAR,EAAajF,SAAS,GAAGiF,OAAO,CAAC,CAAD,CAAhC,EAAqCC,WAAW,CAAC,CAAD,CAAhD,EAAqDlF,SAAS,GAAGkF,WAAW,CAAC,CAAD,CAA5E,CAAT;AACD;;AAED,MAAMC,IAAI,GAAG,IAAI7E,OAAJ,CAAY,CAAZ,EAAe,CAAf,EAAkB,CAAlB,CAAb;AACA,MAAM8E,eAAe,GAAG;AACtBrE,IAAAA,QAAQ,EAARA,QADsB;AAEtBO,IAAAA,OAAO,EAAPA,OAFsB;AAGtBN,IAAAA,aAAa,EAAbA,aAHsB;AAItBC,IAAAA,eAAe,EAAE,CAACwD,YAAD,EAAeC,YAAf,CAJK;AAKtBxD,IAAAA,IAAI,EAAJA,IALsB;AAMtBC,IAAAA,IAAI,EAAJA,IANsB;AAOtBC,IAAAA,MAAM,EAANA,MAPsB;AAStBC,IAAAA,MAAM,EAAE;AATc,GAAxB;AAYA8D,EAAAA,IAAI,CAACtE,MAAL,CAAYuE,eAAZ;;AAEA,MACErE,QAAQ,YAAY4D,yBAApB,IACA5D,QAAQ,CAACsE,YADT,IAEAtE,QAAQ,CAACsE,YAAT,CAAsBC,MAAtB,GAA+B,CAHjC,EAIE;AAEAF,IAAAA,eAAe,CAAC/D,MAAhB,GAAyB,CAAC,CAA1B;;AACA,WAAO8D,IAAI,CAACtE,MAAL,CAAYuE,eAAZ,CAAP,EAAqC;AACnC,UAAI,EAAEA,eAAe,CAAC/D,MAAlB,GAA2B,CAACpB,QAAhC,EAA0C;AACxC;AACD;AACF;;AACDmF,IAAAA,eAAe,CAAC/D,MAAhB,GAAyB,CAAzB;;AACA,WAAO8D,IAAI,CAACtE,MAAL,CAAYuE,eAAZ,CAAP,EAAqC;AACnC,UAAI,EAAEA,eAAe,CAAC/D,MAAlB,GAA2BpB,QAA/B,EAAyC;AACvC;AACD;AACF;AACF;;AAED,SAAOkF,IAAI,CAAC7C,WAAL,EAAP;AACD","sourcesContent":["import {Viewport, WebMercatorViewport, _GlobeViewport} from '@deck.gl/core';\n\nimport {\n CullingVolume,\n Plane,\n AxisAlignedBoundingBox,\n makeOrientedBoundingBoxFromPoints\n} from '@math.gl/culling';\nimport {lngLatToWorld} from '@math.gl/web-mercator';\nimport {Bounds, TileIndex, ZRange} from './types';\nimport {osmTile2lngLat} from './utils';\n\nconst TILE_SIZE = 512;\n// number of world copies to check\nconst MAX_MAPS = 3;\n// for calculating bounding volume of a tile in a non-web-mercator viewport\nconst REF_POINTS_5 = [\n [0.5, 0.5],\n [0, 0],\n [0, 1],\n [1, 0],\n [1, 1]\n]; // 4 corners and center\nconst REF_POINTS_9 = REF_POINTS_5.concat([\n [0, 0.5],\n [0.5, 0],\n [1, 0.5],\n [0.5, 1]\n]); // 4 corners, center and 4 mid points\nconst REF_POINTS_11 = REF_POINTS_9.concat([\n [0.25, 0.5],\n [0.75, 0.5]\n]); // 2 additional points on equator for top tile\n\nclass OSMNode {\n x: number;\n y: number;\n z: number;\n\n private childVisible?: boolean;\n private selected?: boolean;\n\n private _children?: OSMNode[];\n\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n get children() {\n if (!this._children) {\n const x = this.x * 2;\n const y = this.y * 2;\n const z = this.z + 1;\n this._children = [\n new OSMNode(x, y, z),\n new OSMNode(x, y + 1, z),\n new OSMNode(x + 1, y, z),\n new OSMNode(x + 1, y + 1, z)\n ];\n }\n return this._children;\n }\n\n // eslint-disable-next-line complexity\n update(params: {\n viewport: Viewport;\n project: ((xyz: number[]) => number[]) | null;\n cullingVolume: CullingVolume;\n elevationBounds: ZRange;\n minZ: number;\n maxZ: number;\n bounds?: Bounds;\n offset: number;\n }) {\n const {viewport, cullingVolume, elevationBounds, minZ, maxZ, bounds, offset, project} = params;\n const boundingVolume = this.getBoundingVolume(elevationBounds, offset, project);\n\n // First, check if this tile is visible\n if (bounds && !this.insideBounds(bounds)) {\n return false;\n }\n\n const isInside = cullingVolume.computeVisibility(boundingVolume);\n if (isInside < 0) {\n return false;\n }\n\n // Avoid loading overlapping tiles - if a descendant is requested, do not request the ancester\n if (!this.childVisible) {\n let {z} = this;\n if (z < maxZ && z >= minZ) {\n // Adjust LOD\n // If the tile is far enough from the camera, accept a lower zoom level\n const distance =\n (boundingVolume.distanceTo(viewport.cameraPosition) * viewport.scale) / viewport.height;\n z += Math.floor(Math.log2(distance));\n }\n if (z >= maxZ) {\n // LOD is acceptable\n this.selected = true;\n return true;\n }\n }\n\n // LOD is not enough, recursively test child tiles\n this.selected = false;\n this.childVisible = true;\n for (const child of this.children) {\n child.update(params);\n }\n return true;\n }\n\n getSelected(result: OSMNode[] = []): OSMNode[] {\n if (this.selected) {\n result.push(this);\n }\n if (this._children) {\n for (const node of this._children) {\n node.getSelected(result);\n }\n }\n return result;\n }\n\n insideBounds([minX, minY, maxX, maxY]: Bounds): boolean {\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n\n return (\n this.x * extent < maxX &&\n this.y * extent < maxY &&\n (this.x + 1) * extent > minX &&\n (this.y + 1) * extent > minY\n );\n }\n\n getBoundingVolume(\n zRange: ZRange,\n worldOffset: number,\n project: ((xyz: number[]) => number[]) | null\n ) {\n if (project) {\n // Custom projection\n // Estimate bounding box from sample points\n // At low zoom level we need more samples to calculate the bounding volume correctly\n const refPoints = this.z < 1 ? REF_POINTS_11 : this.z < 2 ? REF_POINTS_9 : REF_POINTS_5;\n\n // Convert from tile-relative coordinates to common space\n const refPointPositions: number[][] = [];\n for (const p of refPoints) {\n const lngLat: number[] = osmTile2lngLat(this.x + p[0], this.y + p[1], this.z);\n lngLat[2] = zRange[0];\n refPointPositions.push(project(lngLat));\n\n if (zRange[0] !== zRange[1]) {\n // Account for the elevation volume\n lngLat[2] = zRange[1];\n refPointPositions.push(project(lngLat));\n }\n }\n\n return makeOrientedBoundingBoxFromPoints(refPointPositions);\n }\n\n // Use WebMercator projection\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n const originX = this.x * extent + worldOffset * TILE_SIZE;\n // deck's common space is y-flipped\n const originY = TILE_SIZE - (this.y + 1) * extent;\n\n return new AxisAlignedBoundingBox(\n [originX, originY, zRange[0]],\n [originX + extent, originY + extent, zRange[1]]\n );\n }\n}\n\n// eslint-disable-next-line complexity\nexport function getOSMTileIndices(\n viewport: Viewport,\n maxZ: number,\n zRange?: ZRange | null,\n bounds?: Bounds\n): TileIndex[] {\n const project: ((xyz: number[]) => number[]) | null =\n viewport instanceof _GlobeViewport && viewport.resolution\n ? // eslint-disable-next-line @typescript-eslint/unbound-method\n viewport.projectPosition\n : null;\n\n // Get the culling volume of the current camera\n const planes: Plane[] = Object.values(viewport.getFrustumPlanes()).map(\n ({normal, distance}) => new Plane(normal.clone().negate(), distance)\n );\n const cullingVolume = new CullingVolume(planes);\n\n // Project zRange from meters to common space\n const unitsPerMeter = viewport.distanceScales.unitsPerMeter[2];\n const elevationMin = (zRange && zRange[0] * unitsPerMeter) || 0;\n const elevationMax = (zRange && zRange[1] * unitsPerMeter) || 0;\n\n // Always load at the current zoom level if pitch is small\n const minZ = viewport instanceof WebMercatorViewport && viewport.pitch <= 60 ? maxZ : 0;\n\n // Map extent to OSM position\n if (bounds) {\n const [minLng, minLat, maxLng, maxLat] = bounds;\n const topLeft = lngLatToWorld([minLng, maxLat]);\n const bottomRight = lngLatToWorld([maxLng, minLat]);\n bounds = [topLeft[0], TILE_SIZE - topLeft[1], bottomRight[0], TILE_SIZE - bottomRight[1]];\n }\n\n const root = new OSMNode(0, 0, 0);\n const traversalParams = {\n viewport,\n project,\n cullingVolume,\n elevationBounds: [elevationMin, elevationMax] as ZRange,\n minZ,\n maxZ,\n bounds,\n // num. of worlds from the center. For repeated maps\n offset: 0\n };\n\n root.update(traversalParams);\n\n if (\n viewport instanceof WebMercatorViewport &&\n viewport.subViewports &&\n viewport.subViewports.length > 1\n ) {\n // Check worlds in repeated maps\n traversalParams.offset = -1;\n while (root.update(traversalParams)) {\n if (--traversalParams.offset < -MAX_MAPS) {\n break;\n }\n }\n traversalParams.offset = 1;\n while (root.update(traversalParams)) {\n if (++traversalParams.offset > MAX_MAPS) {\n break;\n }\n }\n }\n\n return root.getSelected();\n}\n"],"file":"tile-2d-traversal.js"}