@openglobus/og 0.13.7 → 0.13.8
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/@openglobus/og.esm.js +2 -2
- package/dist/@openglobus/og.esm.js.map +1 -1
- package/dist/@openglobus/og.umd.js +2 -2
- package/dist/@openglobus/og.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/og/Object3d.js +384 -0
- package/src/og/arial.js +1705 -1703
- package/src/og/camera/Camera.js +640 -640
- package/src/og/control/EarthCoordinates.js +1 -1
- package/src/og/control/LayerAnimation.js +115 -0
- package/src/og/control/MouseNavigation.js +460 -460
- package/src/og/control/Sun.js +170 -170
- package/src/og/control/ZoomControl.js +0 -2
- package/src/og/control/index.js +3 -1
- package/src/og/control/ruler/Ruler.js +43 -0
- package/src/og/control/ruler/RulerScene.js +370 -0
- package/src/og/control/visibleExtent/Segment.js +1 -4
- package/src/og/ellipsoid/Ellipsoid.js +19 -0
- package/src/og/entity/Entity.js +1 -1
- package/src/og/entity/GeoObject.js +1 -1
- package/src/og/entity/LabelHandler.js +1 -0
- package/src/og/layer/Layer.js +23 -40
- package/src/og/layer/Vector.js +80 -14
- package/src/og/layer/XYZ.js +4 -0
- package/src/og/math/Vec3.js +1 -1
- package/src/og/math.js +4 -4
- package/src/og/quadTree/Node.js +1 -1
- package/src/og/renderer/Renderer.js +1 -2
- package/src/og/res/images.js +0 -2
- package/src/og/scene/Planet.js +3 -2
- package/src/og/segment/Segment.js +0 -8
- package/src/og/shaders/label.js +30 -42
- package/src/og/utils/FontAtlas.js +1 -2
- package/src/og/utils/Loader.js +160 -153
- package/src/og/utils/VectorTileCreator.js +1 -1
- package/src/og/webgl/ProgramController.js +143 -143
- package/types/Object3d.d.ts +21 -0
- package/types/arial.d.ts +1 -0
- package/types/control/Sun.d.ts +1 -1
- package/types/control/index.d.ts +2 -1
- package/types/control/ruler/Ruler.d.ts +13 -0
- package/types/control/ruler/RulerScene.d.ts +48 -0
- package/types/ellipsoid/Ellipsoid.d.ts +8 -0
- package/types/layer/Layer.d.ts +23 -31
- package/types/layer/Vector.d.ts +2 -0
- package/types/layer/XYZ.d.ts +1 -0
- package/types/math.d.ts +1 -1
- package/types/res/images.d.ts +0 -1
- package/types/scene/Planet.d.ts +2 -2
- package/types/utils/Loader.d.ts +1 -0
package/src/og/scene/Planet.js
CHANGED
|
@@ -227,7 +227,7 @@ export class Planet extends RenderNode {
|
|
|
227
227
|
*/
|
|
228
228
|
this.maxCurrZoom = math.MIN;
|
|
229
229
|
|
|
230
|
-
this._viewExtent =
|
|
230
|
+
this._viewExtent = new Extent(new LonLat(180, 180), new LonLat(-180, -180));
|
|
231
231
|
|
|
232
232
|
/**
|
|
233
233
|
* @protected
|
|
@@ -1072,7 +1072,8 @@ export class Planet extends RenderNode {
|
|
|
1072
1072
|
// clear first
|
|
1073
1073
|
this._clearRenderedNodeList();
|
|
1074
1074
|
|
|
1075
|
-
this._viewExtent
|
|
1075
|
+
this._viewExtent.southWest.set(180, 180);
|
|
1076
|
+
this._viewExtent.northEast.set(-180, -180);
|
|
1076
1077
|
|
|
1077
1078
|
this._visibleNodes = {};
|
|
1078
1079
|
this._visibleNodesNorth = {};
|
|
@@ -1209,14 +1209,6 @@ class Segment {
|
|
|
1209
1209
|
_addViewExtent() {
|
|
1210
1210
|
var ext = this._extentLonLat;
|
|
1211
1211
|
|
|
1212
|
-
if (!this.planet._viewExtent) {
|
|
1213
|
-
this.planet._viewExtent = new Extent(
|
|
1214
|
-
new LonLat(ext.southWest.lon, ext.southWest.lat),
|
|
1215
|
-
new LonLat(ext.northEast.lon, ext.northEast.lat)
|
|
1216
|
-
);
|
|
1217
|
-
return;
|
|
1218
|
-
}
|
|
1219
|
-
|
|
1220
1212
|
var viewExt = this.planet._viewExtent;
|
|
1221
1213
|
|
|
1222
1214
|
if (ext.southWest.lon < viewExt.southWest.lon) {
|
package/src/og/shaders/label.js
CHANGED
|
@@ -92,6 +92,7 @@ export function label_webgl2() {
|
|
|
92
92
|
|
|
93
93
|
if(a_texCoord.w == EMPTY) {
|
|
94
94
|
gl_Position = vec4(0.0);
|
|
95
|
+
v_fontIndex = -1;
|
|
95
96
|
return;
|
|
96
97
|
}
|
|
97
98
|
|
|
@@ -154,7 +155,6 @@ export function label_webgl2() {
|
|
|
154
155
|
uniform int isOutlinePass;
|
|
155
156
|
|
|
156
157
|
precision highp float;
|
|
157
|
-
precision highp int;
|
|
158
158
|
|
|
159
159
|
const int MAX_SIZE = 11;
|
|
160
160
|
|
|
@@ -207,51 +207,33 @@ export function label_webgl2() {
|
|
|
207
207
|
}
|
|
208
208
|
return median(msdf.r, msdf.g, msdf.b);
|
|
209
209
|
}
|
|
210
|
-
|
|
211
|
-
vec4 getSDFParams() {
|
|
212
|
-
if(v_fontIndex == 0) {
|
|
213
|
-
return sdfParamsArr[0];
|
|
214
|
-
} else if(v_fontIndex == 1){
|
|
215
|
-
return sdfParamsArr[1];
|
|
216
|
-
} else if(v_fontIndex == 2){
|
|
217
|
-
return sdfParamsArr[2];
|
|
218
|
-
} else if(v_fontIndex == 3){
|
|
219
|
-
return sdfParamsArr[3];
|
|
220
|
-
} else if(v_fontIndex == 4){
|
|
221
|
-
return sdfParamsArr[4];
|
|
222
|
-
} else if(v_fontIndex == 5){
|
|
223
|
-
return sdfParamsArr[5];
|
|
224
|
-
} else if(v_fontIndex == 6){
|
|
225
|
-
return sdfParamsArr[6];
|
|
226
|
-
} else if(v_fontIndex == 7){
|
|
227
|
-
return sdfParamsArr[7];
|
|
228
|
-
} else if(v_fontIndex == 8){
|
|
229
|
-
return sdfParamsArr[8];
|
|
230
|
-
} else if(v_fontIndex == 9){
|
|
231
|
-
return sdfParamsArr[9];
|
|
232
|
-
} else if(v_fontIndex == 10){
|
|
233
|
-
return sdfParamsArr[10];
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
210
|
|
|
237
211
|
void main () {
|
|
238
|
-
|
|
239
|
-
|
|
212
|
+
|
|
213
|
+
if(v_fontIndex == -1) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
vec4 sdfParams = sdfParamsArr[v_fontIndex];
|
|
240
218
|
float sd = getDistance();
|
|
241
219
|
vec2 dxdy = fwidth(v_uv) * sdfParams.xy;
|
|
242
|
-
float dist = sd + min(0.001, 0.5 - 1.0 / sdfParams.w) - 0.5;
|
|
243
|
-
float opacity = clamp(dist * sdfParams.w / length(dxdy) + 0.5, 0.0, 1.0);
|
|
244
220
|
|
|
245
221
|
if(isOutlinePass == 0){
|
|
222
|
+
float dist = sd + min(0.001, 0.5 - 1.0 / sdfParams.w) - 0.5;
|
|
223
|
+
float opacity = clamp(dist * sdfParams.w / length(dxdy) + 0.5, 0.0, 1.0);
|
|
224
|
+
if(opacity <= 0.1){
|
|
225
|
+
discard;
|
|
226
|
+
}
|
|
246
227
|
outScreen = vec4(v_rgba.rgb, opacity * v_rgba.a);
|
|
247
|
-
} else {
|
|
248
|
-
float
|
|
249
|
-
float
|
|
250
|
-
if(
|
|
228
|
+
} else {
|
|
229
|
+
float dist = sd + min(v_outline, 0.5 - 1.0 / sdfParams.w) - 0.5;
|
|
230
|
+
float opacity = clamp(dist * sdfParams.w / length(dxdy) + 0.5, 0.0, 1.0);
|
|
231
|
+
if(opacity <= 0.1){
|
|
251
232
|
discard;
|
|
252
233
|
}
|
|
253
|
-
outScreen = v_rgba
|
|
254
|
-
|
|
234
|
+
outScreen = vec4(v_rgba.rgb, opacity * v_rgba.a);
|
|
235
|
+
//outScreen = v_rgba * strokeAlpha * (0.5 - opacity) * 2.0;
|
|
236
|
+
}
|
|
255
237
|
}`
|
|
256
238
|
});
|
|
257
239
|
}
|
|
@@ -326,6 +308,7 @@ export function label_screen() {
|
|
|
326
308
|
|
|
327
309
|
if(a_texCoord.w == EMPTY) {
|
|
328
310
|
gl_Position = vec4(0.0);
|
|
311
|
+
v_fontIndex = -1.0;
|
|
329
312
|
return;
|
|
330
313
|
}
|
|
331
314
|
|
|
@@ -469,6 +452,10 @@ export function label_screen() {
|
|
|
469
452
|
|
|
470
453
|
fontIndex = v_fontIndex + 0.1;
|
|
471
454
|
|
|
455
|
+
if(v_fontIndex < 0.0){
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
|
|
472
459
|
vec4 sdfParams = getSDFParams();
|
|
473
460
|
float sd = getDistance();
|
|
474
461
|
vec2 dxdy = fwidth(v_uv) * sdfParams.xy;
|
|
@@ -476,14 +463,14 @@ export function label_screen() {
|
|
|
476
463
|
float opacity = clamp(dist * sdfParams.w / length(dxdy) + 0.5, 0.0, 1.0);
|
|
477
464
|
|
|
478
465
|
if(isOutlinePass == 0){
|
|
479
|
-
gl_FragColor = vec4(v_rgba.rgb, opacity * v_rgba.a);
|
|
466
|
+
//gl_FragColor = vec4(v_rgba.rgb, opacity * v_rgba.a);
|
|
480
467
|
} else {
|
|
481
468
|
float strokeDist = sd + min(v_outline, 0.5 - 1.0 / sdfParams.w) - 0.5;
|
|
482
469
|
float strokeAlpha = v_rgba.a * clamp(strokeDist * sdfParams.w / length(dxdy) + 0.5, 0.0, 1.0);
|
|
483
470
|
if(strokeAlpha < 0.1){
|
|
484
471
|
discard;
|
|
485
472
|
}
|
|
486
|
-
gl_FragColor = v_rgba * strokeAlpha * (0.5 - opacity) * 2.0;
|
|
473
|
+
//gl_FragColor = v_rgba * strokeAlpha * (0.5 - opacity) * 2.0;
|
|
487
474
|
}
|
|
488
475
|
}`
|
|
489
476
|
});
|
|
@@ -549,15 +536,16 @@ export function labelPicking() {
|
|
|
549
536
|
void main() {
|
|
550
537
|
vec3 a_positions = a_positionsHigh + a_positionsLow;
|
|
551
538
|
vec3 cameraPos = eyePositionHigh + eyePositionLow;
|
|
552
|
-
|
|
539
|
+
v_rgba = a_rgba;
|
|
540
|
+
|
|
553
541
|
if(a_texCoord.w == EMPTY) {
|
|
542
|
+
v_rgba.a = 0.0;
|
|
554
543
|
gl_Position = vec4(0.0);
|
|
555
544
|
return;
|
|
556
545
|
}
|
|
557
546
|
|
|
558
547
|
vec3 look = a_positions - cameraPos;
|
|
559
548
|
float lookDist = length(look);
|
|
560
|
-
v_rgba = a_rgba;
|
|
561
549
|
if(opacity * step(lookDist, sqrt(dot(cameraPos,cameraPos) - planetRadius) + sqrt(dot(a_positions,a_positions) - planetRadius)) == 0.0){
|
|
562
550
|
return;
|
|
563
551
|
}
|
|
@@ -611,7 +599,7 @@ export function labelPicking() {
|
|
|
611
599
|
|
|
612
600
|
vec4 color = v_rgba;
|
|
613
601
|
if (color.a < 0.05) {
|
|
614
|
-
|
|
602
|
+
return;
|
|
615
603
|
}
|
|
616
604
|
|
|
617
605
|
gl_FragColor = vec4(v_rgba.rgb, v_rgba.a);
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
import { Rectangle } from '../Rectangle.js';
|
|
8
8
|
import { TextureAtlas, TextureAtlasNode } from './TextureAtlas.js';
|
|
9
9
|
import { Deferred } from '../Deferred.js';
|
|
10
|
-
import { ARIAL_FONT_B64 } from '../res/images.js';
|
|
11
10
|
|
|
12
11
|
//TODO: get the value from shader module
|
|
13
12
|
const MAX_SIZE = 11;
|
|
@@ -160,7 +159,7 @@ class FontAtlas {
|
|
|
160
159
|
this._createTexture(atlas, img);
|
|
161
160
|
def.resolve(index);
|
|
162
161
|
};
|
|
163
|
-
img.src =
|
|
162
|
+
img.src = imageBase64;
|
|
164
163
|
}
|
|
165
164
|
|
|
166
165
|
_createTexture(atlas, img) {
|
package/src/og/utils/Loader.js
CHANGED
|
@@ -1,154 +1,161 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
import { Events } from '../Events.js';
|
|
4
|
-
|
|
5
|
-
if (window && !('createImageBitmap' in window)) {
|
|
6
|
-
window.createImageBitmap = function (blob) {
|
|
7
|
-
return new Promise((resolve, reject) => {
|
|
8
|
-
let img = document.createElement('img');
|
|
9
|
-
img.addEventListener('load', function () {
|
|
10
|
-
resolve(this);
|
|
11
|
-
});
|
|
12
|
-
img.src = URL.createObjectURL(blob);
|
|
13
|
-
});
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export class Loader {
|
|
18
|
-
|
|
19
|
-
constructor(maxRequests = 24) {
|
|
20
|
-
|
|
21
|
-
this.MAX_REQUESTS = maxRequests;
|
|
22
|
-
|
|
23
|
-
this.events = new Events(["loadend"]);
|
|
24
|
-
|
|
25
|
-
this._loading = 0;
|
|
26
|
-
|
|
27
|
-
this._queue = [];//new QueueArray();
|
|
28
|
-
|
|
29
|
-
this._senderRequestCounter = [];
|
|
30
|
-
|
|
31
|
-
this._promises = {
|
|
32
|
-
'json': r => r.json(),
|
|
33
|
-
'blob': r => r.blob(),
|
|
34
|
-
'arrayBuffer': r => r.arrayBuffer(),
|
|
35
|
-
'imageBitmap': r => r.blob().then(createImageBitmap),
|
|
36
|
-
'text': r => r.text()
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
load(params, callback) {
|
|
41
|
-
if (params.sender) {
|
|
42
|
-
if (!this._senderRequestCounter[params.sender._id]) {
|
|
43
|
-
this._senderRequestCounter[params.sender._id] = {
|
|
44
|
-
sender: params.sender,
|
|
45
|
-
counter: 0,
|
|
46
|
-
__requestCounterFrame__: null
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
this._senderRequestCounter[params.sender._id].counter++;
|
|
50
|
-
}
|
|
51
|
-
this._queue.push({ 'params': params, 'callback': callback });
|
|
52
|
-
this._exec();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
fetch(params) {
|
|
56
|
-
return fetch(
|
|
57
|
-
params.src,
|
|
58
|
-
params.options || {}
|
|
59
|
-
)
|
|
60
|
-
.then(response => {
|
|
61
|
-
if (!response.ok) {
|
|
62
|
-
throw Error(`Unable to load '${params.src}'`);
|
|
63
|
-
}
|
|
64
|
-
return this._promises[params.type || "blob"](response);
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
.then(data => {
|
|
68
|
-
return { 'status': "ready", 'data': data };
|
|
69
|
-
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
.catch(err => {
|
|
73
|
-
return { 'status': "error", 'msg': err.toString() };
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
this.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
qi
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { Events } from '../Events.js';
|
|
4
|
+
|
|
5
|
+
if (window && !('createImageBitmap' in window)) {
|
|
6
|
+
window.createImageBitmap = function (blob) {
|
|
7
|
+
return new Promise((resolve, reject) => {
|
|
8
|
+
let img = document.createElement('img');
|
|
9
|
+
img.addEventListener('load', function () {
|
|
10
|
+
resolve(this);
|
|
11
|
+
});
|
|
12
|
+
img.src = URL.createObjectURL(blob);
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class Loader {
|
|
18
|
+
|
|
19
|
+
constructor(maxRequests = 24) {
|
|
20
|
+
|
|
21
|
+
this.MAX_REQUESTS = maxRequests;
|
|
22
|
+
|
|
23
|
+
this.events = new Events(["loadend", "layerloadend"]);
|
|
24
|
+
|
|
25
|
+
this._loading = 0;
|
|
26
|
+
|
|
27
|
+
this._queue = [];//new QueueArray();
|
|
28
|
+
|
|
29
|
+
this._senderRequestCounter = [];
|
|
30
|
+
|
|
31
|
+
this._promises = {
|
|
32
|
+
'json': r => r.json(),
|
|
33
|
+
'blob': r => r.blob(),
|
|
34
|
+
'arrayBuffer': r => r.arrayBuffer(),
|
|
35
|
+
'imageBitmap': r => r.blob().then(createImageBitmap),
|
|
36
|
+
'text': r => r.text()
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
load(params, callback) {
|
|
41
|
+
if (params.sender) {
|
|
42
|
+
if (!this._senderRequestCounter[params.sender._id]) {
|
|
43
|
+
this._senderRequestCounter[params.sender._id] = {
|
|
44
|
+
sender: params.sender,
|
|
45
|
+
counter: 0,
|
|
46
|
+
__requestCounterFrame__: null
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
this._senderRequestCounter[params.sender._id].counter++;
|
|
50
|
+
}
|
|
51
|
+
this._queue.push({ 'params': params, 'callback': callback });
|
|
52
|
+
this._exec();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
fetch(params) {
|
|
56
|
+
return fetch(
|
|
57
|
+
params.src,
|
|
58
|
+
params.options || {}
|
|
59
|
+
)
|
|
60
|
+
.then(response => {
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
throw Error(`Unable to load '${params.src}'`);
|
|
63
|
+
}
|
|
64
|
+
return this._promises[params.type || "blob"](response);
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
.then(data => {
|
|
68
|
+
return { 'status': "ready", 'data': data };
|
|
69
|
+
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
.catch(err => {
|
|
73
|
+
return { 'status': "error", 'msg': err.toString() };
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
isIdle(sender) {
|
|
78
|
+
let request = this._senderRequestCounter[sender._id];
|
|
79
|
+
return request && request.counter === 0 && (!sender._planet || sender._planet._terrainCompletedActivated);
|
|
80
|
+
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
_checkLoadend(request, sender) {
|
|
84
|
+
if (request.counter === 0 && (sender._planet._terrainCompletedActivated || !sender._planet)) {
|
|
85
|
+
sender.events.dispatch(sender.events.loadend, sender);
|
|
86
|
+
this.events.dispatch(this.events.layerloadend, sender);
|
|
87
|
+
request.__requestCounterFrame__ = null;
|
|
88
|
+
} else {
|
|
89
|
+
request.__requestCounterFrame__ = requestAnimationFrame(() => {
|
|
90
|
+
this._checkLoadend(request, sender);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
_handleResponse(q, response) {
|
|
96
|
+
q.callback(response);
|
|
97
|
+
let sender = q.params.sender;
|
|
98
|
+
if (sender && (sender.events.loadend.handlers.length || this.events.layerloadend.handlers.length)) {
|
|
99
|
+
let request = this._senderRequestCounter[sender._id];
|
|
100
|
+
if (request && request.counter > 0) {
|
|
101
|
+
request.counter--;
|
|
102
|
+
cancelAnimationFrame(request.__requestCounterFrame__);
|
|
103
|
+
request.__requestCounterFrame__ = requestAnimationFrame(() => {
|
|
104
|
+
this._checkLoadend(request, sender);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
this._exec();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
_exec() {
|
|
112
|
+
|
|
113
|
+
if (this._queue.length > 0 && this._loading < this.MAX_REQUESTS) {
|
|
114
|
+
|
|
115
|
+
let q = this._queue.pop(),
|
|
116
|
+
p = q.params;
|
|
117
|
+
|
|
118
|
+
if (!p.filter || p.filter(p)) {
|
|
119
|
+
|
|
120
|
+
this._loading++;
|
|
121
|
+
|
|
122
|
+
return fetch(p.src, p.options || {})
|
|
123
|
+
.then(response => {
|
|
124
|
+
if (!response.ok) {
|
|
125
|
+
throw Error(`Unable to load '${p.src}'`);
|
|
126
|
+
}
|
|
127
|
+
return this._promises[p.type || "blob"](response);
|
|
128
|
+
})
|
|
129
|
+
.then(data => {
|
|
130
|
+
this._loading--;
|
|
131
|
+
this._handleResponse(q, { status: "ready", data: data });
|
|
132
|
+
})
|
|
133
|
+
.catch(err => {
|
|
134
|
+
this._loading--;
|
|
135
|
+
this._handleResponse(q, { status: "error", msg: err.toString() });
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
} else {
|
|
139
|
+
this._handleResponse(q, { status: "abort" });
|
|
140
|
+
}
|
|
141
|
+
} else if (this._loading === 0) {
|
|
142
|
+
this.events.dispatch(this.events.loadend);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
abort() {
|
|
147
|
+
for (let i = 0, len = this._queue.length; i < len; i++) {
|
|
148
|
+
let qi = this._queue[i];
|
|
149
|
+
let sender = qi.params.sender;
|
|
150
|
+
if (sender && this._senderRequestCounter[sender._id]) {
|
|
151
|
+
this._senderRequestCounter[sender._id].counter = 0;
|
|
152
|
+
cancelAnimationFrame(this._senderRequestCounter[sender._id].__requestCounterFrame__);
|
|
153
|
+
this._senderRequestCounter[sender._id].__requestCounterFrame__ = null;
|
|
154
|
+
}
|
|
155
|
+
qi.callback({ 'status': "abort" });
|
|
156
|
+
this._queue[i] = null;
|
|
157
|
+
}
|
|
158
|
+
this._queue = [];
|
|
159
|
+
this._loading = 0;
|
|
160
|
+
}
|
|
154
161
|
}
|
|
@@ -237,7 +237,7 @@ export class VectorTileCreator {
|
|
|
237
237
|
height = _h;
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
texture =
|
|
240
|
+
texture = material._updateTexture || h.createEmptyTexture_l(width, height);
|
|
241
241
|
|
|
242
242
|
f.setSize(width, height);
|
|
243
243
|
|