@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.
- package/dist/dist.min.js +83 -45
- package/dist/es5/tileset/helpers/frame-state.js +26 -11
- package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
- package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
- package/dist/es5/tileset/tileset-3d.js +11 -11
- package/dist/es5/tileset/tileset-3d.js.map +1 -1
- package/dist/es5/tileset/traversers/{i3s-frame-counter.js → i3s-pending-tiles-register.js} +19 -9
- package/dist/es5/tileset/traversers/i3s-pending-tiles-register.js.map +1 -0
- package/dist/es5/tileset/traversers/i3s-tile-manager.js +22 -12
- package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +1 -1
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +3 -3
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
- package/dist/es5/tileset/traversers/tileset-traverser.js +2 -2
- package/dist/es5/tileset/traversers/tileset-traverser.js.map +1 -1
- package/dist/esm/tileset/helpers/frame-state.js +25 -9
- package/dist/esm/tileset/helpers/frame-state.js.map +1 -1
- package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -1
- package/dist/esm/tileset/tileset-3d.js +12 -9
- package/dist/esm/tileset/tileset-3d.js.map +1 -1
- package/dist/esm/tileset/traversers/i3s-pending-tiles-register.js +33 -0
- package/dist/esm/tileset/traversers/i3s-pending-tiles-register.js.map +1 -0
- package/dist/esm/tileset/traversers/i3s-tile-manager.js +32 -11
- package/dist/esm/tileset/traversers/i3s-tile-manager.js.map +1 -1
- package/dist/esm/tileset/traversers/i3s-tileset-traverser.js +3 -3
- package/dist/esm/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
- package/dist/esm/tileset/traversers/tileset-traverser.js +2 -2
- package/dist/esm/tileset/traversers/tileset-traverser.js.map +1 -1
- package/dist/tileset/helpers/frame-state.d.ts +4 -7
- package/dist/tileset/helpers/frame-state.d.ts.map +1 -1
- package/dist/tileset/helpers/frame-state.js +26 -12
- package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -1
- package/dist/tileset/tileset-3d.d.ts +3 -2
- package/dist/tileset/tileset-3d.d.ts.map +1 -1
- package/dist/tileset/tileset-3d.js +11 -9
- package/dist/tileset/traversers/{i3s-frame-counter.d.ts → i3s-pending-tiles-register.d.ts} +7 -4
- package/dist/tileset/traversers/i3s-pending-tiles-register.d.ts.map +1 -0
- package/dist/tileset/traversers/{i3s-frame-counter.js → i3s-pending-tiles-register.js} +17 -8
- package/dist/tileset/traversers/i3s-tile-manager.d.ts +19 -1
- package/dist/tileset/traversers/i3s-tile-manager.d.ts.map +1 -1
- package/dist/tileset/traversers/i3s-tile-manager.js +32 -12
- package/dist/tileset/traversers/i3s-tileset-traverser.d.ts +1 -1
- package/dist/tileset/traversers/i3s-tileset-traverser.d.ts.map +1 -1
- package/dist/tileset/traversers/i3s-tileset-traverser.js +4 -3
- package/dist/tileset/traversers/tileset-traverser.d.ts +1 -1
- package/dist/tileset/traversers/tileset-traverser.d.ts.map +1 -1
- package/dist/tileset/traversers/tileset-traverser.js +2 -2
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/tileset/helpers/frame-state.ts +46 -19
- package/src/tileset/helpers/i3s-lod.ts +3 -1
- package/src/tileset/tileset-3d.ts +17 -14
- package/src/tileset/traversers/i3s-pending-tiles-register.ts +44 -0
- package/src/tileset/traversers/i3s-tile-manager.ts +47 -11
- package/src/tileset/traversers/i3s-tileset-traverser.ts +4 -3
- package/src/tileset/traversers/tileset-traverser.ts +2 -2
- package/src/types.ts +23 -0
- package/dist/es5/tileset/traversers/i3s-frame-counter.js.map +0 -1
- package/dist/esm/tileset/traversers/i3s-frame-counter.js +0 -23
- package/dist/esm/tileset/traversers/i3s-frame-counter.js.map +0 -1
- package/dist/tileset/traversers/i3s-frame-counter.d.ts.map +0 -1
- 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-
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
}
|