@loaders.gl/tiles 3.2.3 → 3.2.6

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 (62) hide show
  1. package/dist/dist.min.js +83 -45
  2. package/dist/es5/tileset/helpers/frame-state.js +26 -11
  3. package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
  4. package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
  5. package/dist/es5/tileset/tileset-3d.js +11 -11
  6. package/dist/es5/tileset/tileset-3d.js.map +1 -1
  7. package/dist/es5/tileset/traversers/{i3s-frame-counter.js → i3s-pending-tiles-register.js} +19 -9
  8. package/dist/es5/tileset/traversers/i3s-pending-tiles-register.js.map +1 -0
  9. package/dist/es5/tileset/traversers/i3s-tile-manager.js +22 -12
  10. package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +1 -1
  11. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +3 -3
  12. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
  13. package/dist/es5/tileset/traversers/tileset-traverser.js +2 -2
  14. package/dist/es5/tileset/traversers/tileset-traverser.js.map +1 -1
  15. package/dist/esm/tileset/helpers/frame-state.js +25 -9
  16. package/dist/esm/tileset/helpers/frame-state.js.map +1 -1
  17. package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -1
  18. package/dist/esm/tileset/tileset-3d.js +12 -9
  19. package/dist/esm/tileset/tileset-3d.js.map +1 -1
  20. package/dist/esm/tileset/traversers/i3s-pending-tiles-register.js +33 -0
  21. package/dist/esm/tileset/traversers/i3s-pending-tiles-register.js.map +1 -0
  22. package/dist/esm/tileset/traversers/i3s-tile-manager.js +32 -11
  23. package/dist/esm/tileset/traversers/i3s-tile-manager.js.map +1 -1
  24. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js +3 -3
  25. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
  26. package/dist/esm/tileset/traversers/tileset-traverser.js +2 -2
  27. package/dist/esm/tileset/traversers/tileset-traverser.js.map +1 -1
  28. package/dist/tileset/helpers/frame-state.d.ts +4 -7
  29. package/dist/tileset/helpers/frame-state.d.ts.map +1 -1
  30. package/dist/tileset/helpers/frame-state.js +26 -12
  31. package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -1
  32. package/dist/tileset/tileset-3d.d.ts +3 -2
  33. package/dist/tileset/tileset-3d.d.ts.map +1 -1
  34. package/dist/tileset/tileset-3d.js +11 -9
  35. package/dist/tileset/traversers/{i3s-frame-counter.d.ts → i3s-pending-tiles-register.d.ts} +7 -4
  36. package/dist/tileset/traversers/i3s-pending-tiles-register.d.ts.map +1 -0
  37. package/dist/tileset/traversers/{i3s-frame-counter.js → i3s-pending-tiles-register.js} +17 -8
  38. package/dist/tileset/traversers/i3s-tile-manager.d.ts +19 -1
  39. package/dist/tileset/traversers/i3s-tile-manager.d.ts.map +1 -1
  40. package/dist/tileset/traversers/i3s-tile-manager.js +32 -12
  41. package/dist/tileset/traversers/i3s-tileset-traverser.d.ts +1 -1
  42. package/dist/tileset/traversers/i3s-tileset-traverser.d.ts.map +1 -1
  43. package/dist/tileset/traversers/i3s-tileset-traverser.js +4 -3
  44. package/dist/tileset/traversers/tileset-traverser.d.ts +1 -1
  45. package/dist/tileset/traversers/tileset-traverser.d.ts.map +1 -1
  46. package/dist/tileset/traversers/tileset-traverser.js +2 -2
  47. package/dist/types.d.ts +21 -0
  48. package/dist/types.d.ts.map +1 -1
  49. package/package.json +5 -5
  50. package/src/tileset/helpers/frame-state.ts +46 -19
  51. package/src/tileset/helpers/i3s-lod.ts +3 -1
  52. package/src/tileset/tileset-3d.ts +17 -14
  53. package/src/tileset/traversers/i3s-pending-tiles-register.ts +44 -0
  54. package/src/tileset/traversers/i3s-tile-manager.ts +47 -11
  55. package/src/tileset/traversers/i3s-tileset-traverser.ts +4 -3
  56. package/src/tileset/traversers/tileset-traverser.ts +2 -2
  57. package/src/types.ts +23 -0
  58. package/dist/es5/tileset/traversers/i3s-frame-counter.js.map +0 -1
  59. package/dist/esm/tileset/traversers/i3s-frame-counter.js +0 -23
  60. package/dist/esm/tileset/traversers/i3s-frame-counter.js.map +0 -1
  61. package/dist/tileset/traversers/i3s-frame-counter.d.ts.map +0 -1
  62. package/src/tileset/traversers/i3s-frame-counter.ts +0 -35
@@ -1,5 +1,5 @@
1
1
  import {FrameState} from '../helpers/frame-state';
2
- import I3SPendingTilesRegister from './i3s-frame-counter';
2
+ import I3SPendingTilesRegister from './i3s-pending-tiles-register';
3
3
 
4
4
  const STATUS = {
5
5
  REQUESTED: 'REQUESTED',
@@ -16,50 +16,86 @@ export default class I3STileManager {
16
16
  this._statusMap = {};
17
17
  }
18
18
 
19
+ /**
20
+ * Add request to map
21
+ * @param request - node metadata request
22
+ * @param key - unique key
23
+ * @param callback - callback after request completed
24
+ * @param frameState - frameState data
25
+ */
19
26
  add(request, key, callback, frameState: FrameState) {
20
27
  if (!this._statusMap[key]) {
21
- const {frameNumber} = frameState;
28
+ const {
29
+ frameNumber,
30
+ viewport: {id}
31
+ } = frameState;
22
32
  this._statusMap[key] = {request, callback, key, frameState, status: STATUS.REQUESTED};
23
33
  // Register pending request for the frameNumber
24
- this.pendingTilesRegister.register(frameNumber);
34
+ this.pendingTilesRegister.register(id, frameNumber);
25
35
  request()
26
36
  .then((data) => {
27
37
  this._statusMap[key].status = STATUS.COMPLETED;
28
- const {frameNumber: actualFrameNumber} = this._statusMap[key].frameState;
38
+ const {
39
+ frameNumber: actualFrameNumber,
40
+ viewport: {id}
41
+ } = this._statusMap[key].frameState;
29
42
  // Deregister pending request for the frameNumber
30
- this.pendingTilesRegister.deregister(actualFrameNumber);
43
+ this.pendingTilesRegister.deregister(id, actualFrameNumber);
31
44
  this._statusMap[key].callback(data, frameState);
32
45
  })
33
46
  .catch((error) => {
34
47
  this._statusMap[key].status = STATUS.ERROR;
35
- const {frameNumber: actualFrameNumber} = this._statusMap[key].frameState;
48
+ const {
49
+ frameNumber: actualFrameNumber,
50
+ viewport: {id}
51
+ } = this._statusMap[key].frameState;
36
52
  // Deregister pending request for the frameNumber
37
- this.pendingTilesRegister.deregister(actualFrameNumber);
53
+ this.pendingTilesRegister.deregister(id, actualFrameNumber);
38
54
  callback(error);
39
55
  });
40
56
  }
41
57
  }
42
58
 
59
+ /**
60
+ * Update request if it is still actual for the new frameState
61
+ * @param key - unique key
62
+ * @param frameState - frameState data
63
+ */
43
64
  update(key, frameState: FrameState) {
44
65
  if (this._statusMap[key]) {
45
66
  // Deregister pending request for the old frameNumber
46
- this.pendingTilesRegister.deregister(this._statusMap[key].frameState.frameNumber);
67
+ const {
68
+ frameNumber,
69
+ viewport: {id}
70
+ } = this._statusMap[key].frameState;
71
+ this.pendingTilesRegister.deregister(id, frameNumber);
72
+
47
73
  // Register pending request for the new frameNumber
48
- this.pendingTilesRegister.register(frameState.frameNumber);
74
+ const {
75
+ frameNumber: newFrameNumber,
76
+ viewport: {id: newViewportId}
77
+ } = frameState;
78
+ this.pendingTilesRegister.register(newViewportId, newFrameNumber);
49
79
  this._statusMap[key].frameState = frameState;
50
80
  }
51
81
  }
52
82
 
83
+ /**
84
+ * Find request in the map
85
+ * @param key - unique key
86
+ * @returns
87
+ */
53
88
  find(key) {
54
89
  return this._statusMap[key];
55
90
  }
56
91
 
57
92
  /**
58
93
  * Check it there are pending tile headers for the particular frameNumber
94
+ * @param viewportId
59
95
  * @param frameNumber
60
96
  * @returns
61
97
  */
62
- hasPendingTiles(frameNumber: number): boolean {
63
- return !this.pendingTilesRegister.isZero(frameNumber);
98
+ hasPendingTiles(viewportId: string, frameNumber: number): boolean {
99
+ return !this.pendingTilesRegister.isZero(viewportId, frameNumber);
64
100
  }
65
101
  }
@@ -14,8 +14,8 @@ export default class I3STilesetTraverser extends TilesetTraverser {
14
14
  * that means the traversal is finished and we can call
15
15
  * following-up callbacks.
16
16
  */
17
- protected get traversalFinished(): boolean {
18
- return !this._tileManager.hasPendingTiles(this._frameNumber || 0);
17
+ protected traversalFinished(frameState: FrameState): boolean {
18
+ return !this._tileManager.hasPendingTiles(frameState.viewport.id, this._frameNumber || 0);
19
19
  }
20
20
 
21
21
  constructor(options) {
@@ -98,7 +98,8 @@ export default class I3STilesetTraverser extends TilesetTraverser {
98
98
  // after tile fetched, resume traversal if still in current update/traversal frame
99
99
  if (
100
100
  this._frameNumber === frameState.frameNumber &&
101
- (this.traversalFinished || new Date().getTime() - this.lastUpdate > this.updateDebounceTime)
101
+ (this.traversalFinished(frameState) ||
102
+ new Date().getTime() - this.lastUpdate > this.updateDebounceTime)
102
103
  ) {
103
104
  this.executeTraversal(childTile, frameState);
104
105
  }
@@ -45,7 +45,7 @@ export default class TilesetTraverser {
45
45
  protected _emptyTraversalStack: ManagedArray;
46
46
  protected _frameNumber: number | null;
47
47
 
48
- protected get traversalFinished(): boolean {
48
+ protected traversalFinished(frameState: FrameState): boolean {
49
49
  return true;
50
50
  }
51
51
 
@@ -164,7 +164,7 @@ export default class TilesetTraverser {
164
164
  }
165
165
 
166
166
  const newTime = new Date().getTime();
167
- if (this.traversalFinished || newTime - this.lastUpdate > this.updateDebounceTime) {
167
+ if (this.traversalFinished(frameState) || newTime - this.lastUpdate > this.updateDebounceTime) {
168
168
  this.lastUpdate = newTime;
169
169
  this.options.onTraversalEnd(frameState);
170
170
  }
package/src/types.ts CHANGED
@@ -1,4 +1,27 @@
1
+ import {Vector3} from '@math.gl/core';
2
+
1
3
  export type BoundingRectangle = {
2
4
  width: number;
3
5
  height: number;
4
6
  };
7
+
8
+ /** Deck.gl Viewport instance type.
9
+ * We can't import it from Deck.gl to avoid circular reference */
10
+ export type Viewport = {
11
+ id: string;
12
+ longitude: number;
13
+ latitude: number;
14
+ cameraPosition: [number, number, number];
15
+ cameraDirection: [number, number, number];
16
+ cameraUp: [number, number, number];
17
+ height: number;
18
+ width: number;
19
+ bearing: number;
20
+ zoom: number;
21
+ distanceScales: {
22
+ metersPerUnit: number;
23
+ };
24
+ center: [number, number, number];
25
+ unprojectPosition: (position: [number, number, number] | Vector3) => Vector3;
26
+ project: (coorinates: [number, number, number] | Vector3) => Vector3;
27
+ };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/tileset/traversers/i3s-frame-counter.ts"],"names":["I3SPendingTilesRegister","Map","frameNumber","oldCount","frameNumberMap","get","set","count"],"mappings":";;;;;;;;;;;;;;;IAIqBA,uB;;;0DAC2B,IAAIC,GAAJ,E;;;;;WAM9C,kBAASC,WAAT,EAA8B;AAC5B,UAAMC,QAAQ,GAAG,KAAKC,cAAL,CAAoBC,GAApB,CAAwBH,WAAxB,KAAwC,CAAzD;AACA,WAAKE,cAAL,CAAoBE,GAApB,CAAwBJ,WAAxB,EAAqCC,QAAQ,GAAG,CAAhD;AACD;;;WAMD,oBAAWD,WAAX,EAAgC;AAC9B,UAAMC,QAAQ,GAAG,KAAKC,cAAL,CAAoBC,GAApB,CAAwBH,WAAxB,KAAwC,CAAzD;AACA,WAAKE,cAAL,CAAoBE,GAApB,CAAwBJ,WAAxB,EAAqCC,QAAQ,GAAG,CAAhD;AACD;;;WAOD,gBAAOD,WAAP,EAA4B;AAC1B,UAAMK,KAAK,GAAG,KAAKH,cAAL,CAAoBC,GAApB,CAAwBH,WAAxB,KAAwC,CAAtD;AACA,aAAOK,KAAK,KAAK,CAAjB;AACD","sourcesContent":["/**\n * Counter to register pending tile headers for the particular frameNumber\n * Until all tiles are loaded we won't call `onTraversalEnd` callback\n */\nexport default class I3SPendingTilesRegister {\n private frameNumberMap: Map<number, number> = new Map();\n\n /**\n * Register a new pending tile header for the particular frameNumber\n * @param frameNumber\n */\n register(frameNumber: number) {\n const oldCount = this.frameNumberMap.get(frameNumber) || 0;\n this.frameNumberMap.set(frameNumber, oldCount + 1);\n }\n\n /**\n * Deregister a pending tile header for the particular frameNumber\n * @param frameNumber\n */\n deregister(frameNumber: number) {\n const oldCount = this.frameNumberMap.get(frameNumber) || 1;\n this.frameNumberMap.set(frameNumber, oldCount - 1);\n }\n\n /**\n * Check is there are no pending tile headers registered for the particular frameNumber\n * @param frameNumber\n * @returns\n */\n isZero(frameNumber: number) {\n const count = this.frameNumberMap.get(frameNumber) || 0;\n return count === 0;\n }\n}\n"],"file":"i3s-frame-counter.js"}
@@ -1,23 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- export default class I3SPendingTilesRegister {
3
- constructor() {
4
- _defineProperty(this, "frameNumberMap", new Map());
5
- }
6
-
7
- register(frameNumber) {
8
- const oldCount = this.frameNumberMap.get(frameNumber) || 0;
9
- this.frameNumberMap.set(frameNumber, oldCount + 1);
10
- }
11
-
12
- deregister(frameNumber) {
13
- const oldCount = this.frameNumberMap.get(frameNumber) || 1;
14
- this.frameNumberMap.set(frameNumber, oldCount - 1);
15
- }
16
-
17
- isZero(frameNumber) {
18
- const count = this.frameNumberMap.get(frameNumber) || 0;
19
- return count === 0;
20
- }
21
-
22
- }
23
- //# sourceMappingURL=i3s-frame-counter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/tileset/traversers/i3s-frame-counter.ts"],"names":["I3SPendingTilesRegister","Map","register","frameNumber","oldCount","frameNumberMap","get","set","deregister","isZero","count"],"mappings":";AAIA,eAAe,MAAMA,uBAAN,CAA8B;AAAA;AAAA,4CACG,IAAIC,GAAJ,EADH;AAAA;;AAO3CC,EAAAA,QAAQ,CAACC,WAAD,EAAsB;AAC5B,UAAMC,QAAQ,GAAG,KAAKC,cAAL,CAAoBC,GAApB,CAAwBH,WAAxB,KAAwC,CAAzD;AACA,SAAKE,cAAL,CAAoBE,GAApB,CAAwBJ,WAAxB,EAAqCC,QAAQ,GAAG,CAAhD;AACD;;AAMDI,EAAAA,UAAU,CAACL,WAAD,EAAsB;AAC9B,UAAMC,QAAQ,GAAG,KAAKC,cAAL,CAAoBC,GAApB,CAAwBH,WAAxB,KAAwC,CAAzD;AACA,SAAKE,cAAL,CAAoBE,GAApB,CAAwBJ,WAAxB,EAAqCC,QAAQ,GAAG,CAAhD;AACD;;AAODK,EAAAA,MAAM,CAACN,WAAD,EAAsB;AAC1B,UAAMO,KAAK,GAAG,KAAKL,cAAL,CAAoBC,GAApB,CAAwBH,WAAxB,KAAwC,CAAtD;AACA,WAAOO,KAAK,KAAK,CAAjB;AACD;;AA7B0C","sourcesContent":["/**\n * Counter to register pending tile headers for the particular frameNumber\n * Until all tiles are loaded we won't call `onTraversalEnd` callback\n */\nexport default class I3SPendingTilesRegister {\n private frameNumberMap: Map<number, number> = new Map();\n\n /**\n * Register a new pending tile header for the particular frameNumber\n * @param frameNumber\n */\n register(frameNumber: number) {\n const oldCount = this.frameNumberMap.get(frameNumber) || 0;\n this.frameNumberMap.set(frameNumber, oldCount + 1);\n }\n\n /**\n * Deregister a pending tile header for the particular frameNumber\n * @param frameNumber\n */\n deregister(frameNumber: number) {\n const oldCount = this.frameNumberMap.get(frameNumber) || 1;\n this.frameNumberMap.set(frameNumber, oldCount - 1);\n }\n\n /**\n * Check is there are no pending tile headers registered for the particular frameNumber\n * @param frameNumber\n * @returns\n */\n isZero(frameNumber: number) {\n const count = this.frameNumberMap.get(frameNumber) || 0;\n return count === 0;\n }\n}\n"],"file":"i3s-frame-counter.js"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"i3s-frame-counter.d.ts","sourceRoot":"","sources":["../../../src/tileset/traversers/i3s-frame-counter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC1C,OAAO,CAAC,cAAc,CAAkC;IAExD;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM;IAK5B;;;OAGG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM;IAK9B;;;;OAIG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM;CAI3B"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Counter to register pending tile headers for the particular frameNumber
3
- * Until all tiles are loaded we won't call `onTraversalEnd` callback
4
- */
5
- export default class I3SPendingTilesRegister {
6
- private frameNumberMap: Map<number, number> = new Map();
7
-
8
- /**
9
- * Register a new pending tile header for the particular frameNumber
10
- * @param frameNumber
11
- */
12
- register(frameNumber: number) {
13
- const oldCount = this.frameNumberMap.get(frameNumber) || 0;
14
- this.frameNumberMap.set(frameNumber, oldCount + 1);
15
- }
16
-
17
- /**
18
- * Deregister a pending tile header for the particular frameNumber
19
- * @param frameNumber
20
- */
21
- deregister(frameNumber: number) {
22
- const oldCount = this.frameNumberMap.get(frameNumber) || 1;
23
- this.frameNumberMap.set(frameNumber, oldCount - 1);
24
- }
25
-
26
- /**
27
- * Check is there are no pending tile headers registered for the particular frameNumber
28
- * @param frameNumber
29
- * @returns
30
- */
31
- isZero(frameNumber: number) {
32
- const count = this.frameNumberMap.get(frameNumber) || 0;
33
- return count === 0;
34
- }
35
- }