ol 9.1.1-dev.1715581613988 → 9.1.1-dev.1715778879108
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/ol.js +2 -2
- package/dist/ol.js.map +1 -1
- package/extent.d.ts +2 -1
- package/extent.d.ts.map +1 -1
- package/extent.js +3 -2
- package/package.json +1 -1
- package/reproj/DataTile.d.ts +21 -1
- package/reproj/DataTile.d.ts.map +1 -1
- package/reproj/DataTile.js +66 -19
- package/reproj/Tile.d.ts +21 -1
- package/reproj/Tile.d.ts.map +1 -1
- package/reproj/Tile.js +57 -15
- package/reproj.d.ts +5 -0
- package/reproj.d.ts.map +1 -1
- package/reproj.js +24 -5
- package/source/Vector.d.ts.map +1 -1
- package/source/Vector.js +17 -5
- package/util.js +1 -1
package/extent.d.ts
CHANGED
|
@@ -373,9 +373,10 @@ export function wrapX(extent: Extent, projection: import("./proj/Projection.js")
|
|
|
373
373
|
*
|
|
374
374
|
* @param {Extent} extent Extent.
|
|
375
375
|
* @param {import("./proj/Projection.js").default} projection Projection
|
|
376
|
+
* @param {boolean} [multiWorld] Return all worlds
|
|
376
377
|
* @return {Array<Extent>} The extent within the real world extent.
|
|
377
378
|
*/
|
|
378
|
-
export function wrapAndSliceX(extent: Extent, projection: import("./proj/Projection.js").default): Array<Extent>;
|
|
379
|
+
export function wrapAndSliceX(extent: Extent, projection: import("./proj/Projection.js").default, multiWorld?: boolean | undefined): Array<Extent>;
|
|
379
380
|
/**
|
|
380
381
|
* An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.
|
|
381
382
|
*/
|
package/extent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extent.d.ts","sourceRoot":"","sources":["extent.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"extent.d.ts","sourceRoot":"","sources":["extent.js"],"names":[],"mappings":"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"}
|
package/extent.js
CHANGED
|
@@ -885,9 +885,10 @@ export function wrapX(extent, projection) {
|
|
|
885
885
|
*
|
|
886
886
|
* @param {Extent} extent Extent.
|
|
887
887
|
* @param {import("./proj/Projection.js").default} projection Projection
|
|
888
|
+
* @param {boolean} [multiWorld] Return all worlds
|
|
888
889
|
* @return {Array<Extent>} The extent within the real world extent.
|
|
889
890
|
*/
|
|
890
|
-
export function wrapAndSliceX(extent, projection) {
|
|
891
|
+
export function wrapAndSliceX(extent, projection, multiWorld) {
|
|
891
892
|
if (projection.canWrapX()) {
|
|
892
893
|
const projectionExtent = projection.getExtent();
|
|
893
894
|
|
|
@@ -898,7 +899,7 @@ export function wrapAndSliceX(extent, projection) {
|
|
|
898
899
|
wrapX(extent, projection);
|
|
899
900
|
const worldWidth = getWidth(projectionExtent);
|
|
900
901
|
|
|
901
|
-
if (getWidth(extent) > worldWidth) {
|
|
902
|
+
if (getWidth(extent) > worldWidth && !multiWorld) {
|
|
902
903
|
// the extent wraps around on itself
|
|
903
904
|
return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];
|
|
904
905
|
}
|
package/package.json
CHANGED
package/reproj/DataTile.d.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
export default ReprojDataTile;
|
|
2
2
|
export type TileGetter = (arg0: number, arg1: number, arg2: number, arg3: number) => import("../DataTile.js").default;
|
|
3
|
+
export type TileOffset = {
|
|
4
|
+
/**
|
|
5
|
+
* Tile.
|
|
6
|
+
*/
|
|
7
|
+
tile: DataTile;
|
|
8
|
+
/**
|
|
9
|
+
* Offset.
|
|
10
|
+
*/
|
|
11
|
+
offset: number;
|
|
12
|
+
};
|
|
3
13
|
export type Options = {
|
|
4
14
|
/**
|
|
5
15
|
* Source projection.
|
|
@@ -55,6 +65,11 @@ export type Options = {
|
|
|
55
65
|
/**
|
|
56
66
|
* @typedef {function(number, number, number, number) : import("../DataTile.js").default} TileGetter
|
|
57
67
|
*/
|
|
68
|
+
/**
|
|
69
|
+
* @typedef {Object} TileOffset
|
|
70
|
+
* @property {DataTile} tile Tile.
|
|
71
|
+
* @property {number} offset Offset.
|
|
72
|
+
*/
|
|
58
73
|
/**
|
|
59
74
|
* @typedef {Object} Options
|
|
60
75
|
* @property {import("../proj/Projection.js").default} sourceProj Source projection.
|
|
@@ -125,7 +140,7 @@ declare class ReprojDataTile extends DataTile {
|
|
|
125
140
|
private wrappedTileCoord_;
|
|
126
141
|
/**
|
|
127
142
|
* @private
|
|
128
|
-
* @type {!Array<
|
|
143
|
+
* @type {!Array<TileOffset>}
|
|
129
144
|
*/
|
|
130
145
|
private sourceTiles_;
|
|
131
146
|
/**
|
|
@@ -138,6 +153,11 @@ declare class ReprojDataTile extends DataTile {
|
|
|
138
153
|
* @type {number}
|
|
139
154
|
*/
|
|
140
155
|
private sourceZ_;
|
|
156
|
+
/**
|
|
157
|
+
* @private
|
|
158
|
+
* @type {import("../extent.js").Extent}
|
|
159
|
+
*/
|
|
160
|
+
private clipExtent_;
|
|
141
161
|
/**
|
|
142
162
|
* @private
|
|
143
163
|
* @type {!import("./Triangulation.js").default}
|
package/reproj/DataTile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTile.d.ts","sourceRoot":"","sources":["DataTile.js"],"names":[],"mappings":";gCAoBsB,MAAM,QAAE,MAAM,QAAE,MAAM,QAAE,MAAM,KAAI,OAAO,gBAAgB,EAAE,OAAO;;;;;
|
|
1
|
+
{"version":3,"file":"DataTile.d.ts","sourceRoot":"","sources":["DataTile.js"],"names":[],"mappings":";gCAoBsB,MAAM,QAAE,MAAM,QAAE,MAAM,QAAE,MAAM,KAAI,OAAO,gBAAgB,EAAE,OAAO;;;;;UAK1E,QAAQ;;;;YACR,MAAM;;;;;;gBAKN,OAAO,uBAAuB,EAAE,OAAO;;;;oBACvC,OAAO,yBAAyB,EAAE,OAAO;;;;gBACzC,OAAO,uBAAuB,EAAE,OAAO;;;;oBACvC,OAAO,yBAAyB,EAAE,OAAO;;;;eACzC,OAAO,iBAAiB,EAAE,SAAS;;;;;;;;gBAEnC,MAAM;;;;YACN,MAAM;;;;qBACN,UAAU;;;;;;;;;;;;;;;;AApBxB;;GAEG;AAEH;;;;GAIG;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;GAKG;AACH;IACE;;OAEG;IACH,qBAFW,OAAO,EAyNjB;IA/MC;;;OAGG;IACH,oBAAqC;IAErC;;;OAGG;IACH,gBAA6B;IAE7B;;;OAGG;IACH,oBAAuB;IAEvB;;;OAGG;IACH,qBAAwB;IAExB;;;OAGG;IACH,oBAA4B;IAE5B;;;OAGG;IACH,wBAA6C;IAE7C;;;OAGG;IACH,wBAA6C;IAE7C;;;OAGG;IACH,0BAAsE;IAEtE;;;OAGG;IACH,qBAAsB;IAEtB;;;OAGG;IACH,6BAAgC;IAEhC;;;OAGG;IACH,iBAAiB;IAMjB;;;OAGG;IACH,oBAIwB;IAmDxB;;;OAGG;IACH,uBAOC;IA6FH;;OAEG;IACH,mBAiLC;IAyDD;;OAEG;IACH,yBAGC;CACF;qBAzhByD,gBAAgB"}
|
package/reproj/DataTile.js
CHANGED
|
@@ -14,13 +14,19 @@ import {
|
|
|
14
14
|
} from '../reproj.js';
|
|
15
15
|
import {clamp} from '../math.js';
|
|
16
16
|
import {createCanvasContext2D, releaseCanvas} from '../dom.js';
|
|
17
|
-
import {getArea, getIntersection} from '../extent.js';
|
|
17
|
+
import {getArea, getIntersection, getWidth, wrapAndSliceX} from '../extent.js';
|
|
18
18
|
import {listen, unlistenByKey} from '../events.js';
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* @typedef {function(number, number, number, number) : import("../DataTile.js").default} TileGetter
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* @typedef {Object} TileOffset
|
|
26
|
+
* @property {DataTile} tile Tile.
|
|
27
|
+
* @property {number} offset Offset.
|
|
28
|
+
*/
|
|
29
|
+
|
|
24
30
|
/**
|
|
25
31
|
* @typedef {Object} Options
|
|
26
32
|
* @property {import("../proj/Projection.js").default} sourceProj Source projection.
|
|
@@ -107,7 +113,7 @@ class ReprojDataTile extends DataTile {
|
|
|
107
113
|
|
|
108
114
|
/**
|
|
109
115
|
* @private
|
|
110
|
-
* @type {!Array<
|
|
116
|
+
* @type {!Array<TileOffset>}
|
|
111
117
|
*/
|
|
112
118
|
this.sourceTiles_ = [];
|
|
113
119
|
|
|
@@ -123,6 +129,20 @@ class ReprojDataTile extends DataTile {
|
|
|
123
129
|
*/
|
|
124
130
|
this.sourceZ_ = 0;
|
|
125
131
|
|
|
132
|
+
const sourceProj = options.sourceProj;
|
|
133
|
+
const sourceProjExtent = sourceProj.getExtent();
|
|
134
|
+
const sourceTileGridExtent = options.sourceTileGrid.getExtent();
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @private
|
|
138
|
+
* @type {import("../extent.js").Extent}
|
|
139
|
+
*/
|
|
140
|
+
this.clipExtent_ = sourceProj.canWrapX()
|
|
141
|
+
? sourceTileGridExtent
|
|
142
|
+
? getIntersection(sourceProjExtent, sourceTileGridExtent)
|
|
143
|
+
: sourceProjExtent
|
|
144
|
+
: sourceTileGridExtent;
|
|
145
|
+
|
|
126
146
|
const targetExtent = this.targetTileGrid_.getTileCoordExtent(
|
|
127
147
|
this.wrappedTileCoord_,
|
|
128
148
|
);
|
|
@@ -140,8 +160,6 @@ class ReprojDataTile extends DataTile {
|
|
|
140
160
|
return;
|
|
141
161
|
}
|
|
142
162
|
|
|
143
|
-
const sourceProj = options.sourceProj;
|
|
144
|
-
const sourceProjExtent = sourceProj.getExtent();
|
|
145
163
|
if (sourceProjExtent) {
|
|
146
164
|
if (!maxSourceExtent) {
|
|
147
165
|
maxSourceExtent = sourceProjExtent;
|
|
@@ -216,19 +234,37 @@ class ReprojDataTile extends DataTile {
|
|
|
216
234
|
if (!getArea(sourceExtent)) {
|
|
217
235
|
this.state = TileState.EMPTY;
|
|
218
236
|
} else {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
237
|
+
let worldWidth = 0;
|
|
238
|
+
let worldsAway = 0;
|
|
239
|
+
if (sourceProj.canWrapX()) {
|
|
240
|
+
worldWidth = getWidth(sourceProjExtent);
|
|
241
|
+
worldsAway = Math.floor(
|
|
242
|
+
(sourceExtent[0] - sourceProjExtent[0]) / worldWidth,
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
const sourceExtents = wrapAndSliceX(
|
|
247
|
+
sourceExtent.slice(),
|
|
248
|
+
sourceProj,
|
|
249
|
+
true,
|
|
222
250
|
);
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
251
|
+
sourceExtents.forEach((extent) => {
|
|
252
|
+
const sourceRange = this.sourceTileGrid_.getTileRangeForExtentAndZ(
|
|
253
|
+
extent,
|
|
254
|
+
this.sourceZ_,
|
|
255
|
+
);
|
|
256
|
+
const getTile = options.getTileFunction;
|
|
257
|
+
for (let srcX = sourceRange.minX; srcX <= sourceRange.maxX; srcX++) {
|
|
258
|
+
for (let srcY = sourceRange.minY; srcY <= sourceRange.maxY; srcY++) {
|
|
259
|
+
const tile = getTile(this.sourceZ_, srcX, srcY, this.pixelRatio_);
|
|
260
|
+
if (tile) {
|
|
261
|
+
const offset = worldsAway * worldWidth;
|
|
262
|
+
this.sourceTiles_.push({tile, offset});
|
|
263
|
+
}
|
|
229
264
|
}
|
|
230
265
|
}
|
|
231
|
-
|
|
266
|
+
++worldsAway;
|
|
267
|
+
});
|
|
232
268
|
|
|
233
269
|
if (this.sourceTiles_.length === 0) {
|
|
234
270
|
this.state = TileState.EMPTY;
|
|
@@ -265,7 +301,8 @@ class ReprojDataTile extends DataTile {
|
|
|
265
301
|
*/
|
|
266
302
|
reproject_() {
|
|
267
303
|
const dataSources = [];
|
|
268
|
-
this.sourceTiles_.forEach((
|
|
304
|
+
this.sourceTiles_.forEach((source) => {
|
|
305
|
+
const tile = source.tile;
|
|
269
306
|
if (!tile || tile.getState() !== TileState.LOADED) {
|
|
270
307
|
return;
|
|
271
308
|
}
|
|
@@ -306,8 +343,17 @@ class ReprojDataTile extends DataTile {
|
|
|
306
343
|
rowOffset += bytesPerRow / bytesPerElement;
|
|
307
344
|
}
|
|
308
345
|
}
|
|
346
|
+
const extent = this.sourceTileGrid_.getTileCoordExtent(tile.tileCoord);
|
|
347
|
+
extent[0] += source.offset;
|
|
348
|
+
extent[2] += source.offset;
|
|
349
|
+
const clipExtent = this.clipExtent_?.slice();
|
|
350
|
+
if (clipExtent) {
|
|
351
|
+
clipExtent[0] += source.offset;
|
|
352
|
+
clipExtent[2] += source.offset;
|
|
353
|
+
}
|
|
309
354
|
dataSources.push({
|
|
310
|
-
extent:
|
|
355
|
+
extent: extent,
|
|
356
|
+
clipExtent: clipExtent,
|
|
311
357
|
data: new Uint8Array(packedData.buffer),
|
|
312
358
|
dataType: DataType,
|
|
313
359
|
bytesPerPixel: bytesPerPixel,
|
|
@@ -359,6 +405,7 @@ class ReprojDataTile extends DataTile {
|
|
|
359
405
|
context.putImageData(imageData, 0, 0);
|
|
360
406
|
sources.push({
|
|
361
407
|
extent: dataSource.extent,
|
|
408
|
+
clipExtent: dataSource.clipExtent,
|
|
362
409
|
image: context.canvas,
|
|
363
410
|
});
|
|
364
411
|
}
|
|
@@ -377,7 +424,7 @@ class ReprojDataTile extends DataTile {
|
|
|
377
424
|
false,
|
|
378
425
|
false,
|
|
379
426
|
false,
|
|
380
|
-
true,
|
|
427
|
+
//true,
|
|
381
428
|
);
|
|
382
429
|
|
|
383
430
|
for (let i = 0, len = sources.length; i < len; ++i) {
|
|
@@ -444,7 +491,7 @@ class ReprojDataTile extends DataTile {
|
|
|
444
491
|
let leftToLoad = 0;
|
|
445
492
|
|
|
446
493
|
this.sourcesListenerKeys_ = [];
|
|
447
|
-
this.sourceTiles_.forEach((tile) => {
|
|
494
|
+
this.sourceTiles_.forEach(({tile}) => {
|
|
448
495
|
const state = tile.getState();
|
|
449
496
|
if (state !== TileState.IDLE && state !== TileState.LOADING) {
|
|
450
497
|
return;
|
|
@@ -477,7 +524,7 @@ class ReprojDataTile extends DataTile {
|
|
|
477
524
|
if (leftToLoad === 0) {
|
|
478
525
|
setTimeout(this.reproject_.bind(this), 0);
|
|
479
526
|
} else {
|
|
480
|
-
this.sourceTiles_.forEach(function (tile) {
|
|
527
|
+
this.sourceTiles_.forEach(function ({tile}) {
|
|
481
528
|
const state = tile.getState();
|
|
482
529
|
if (state == TileState.IDLE) {
|
|
483
530
|
tile.load();
|
package/reproj/Tile.d.ts
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
export default ReprojTile;
|
|
2
2
|
export type FunctionType = (arg0: number, arg1: number, arg2: number, arg3: number) => (import("../ImageTile.js").default);
|
|
3
|
+
export type TileOffset = {
|
|
4
|
+
/**
|
|
5
|
+
* Tile.
|
|
6
|
+
*/
|
|
7
|
+
tile: import("../ImageTile.js").default;
|
|
8
|
+
/**
|
|
9
|
+
* Offset.
|
|
10
|
+
*/
|
|
11
|
+
offset: number;
|
|
12
|
+
};
|
|
3
13
|
/**
|
|
4
14
|
* @typedef {function(number, number, number, number) : (import("../ImageTile.js").default)} FunctionType
|
|
5
15
|
*/
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {Object} TileOffset
|
|
18
|
+
* @property {import("../ImageTile.js").default} tile Tile.
|
|
19
|
+
* @property {number} offset Offset.
|
|
20
|
+
*/
|
|
6
21
|
/**
|
|
7
22
|
* @classdesc
|
|
8
23
|
* Class encapsulating single reprojected tile.
|
|
@@ -63,7 +78,7 @@ declare class ReprojTile extends Tile {
|
|
|
63
78
|
private wrappedTileCoord_;
|
|
64
79
|
/**
|
|
65
80
|
* @private
|
|
66
|
-
* @type {!Array<
|
|
81
|
+
* @type {!Array<TileOffset>}
|
|
67
82
|
*/
|
|
68
83
|
private sourceTiles_;
|
|
69
84
|
/**
|
|
@@ -76,6 +91,11 @@ declare class ReprojTile extends Tile {
|
|
|
76
91
|
* @type {number}
|
|
77
92
|
*/
|
|
78
93
|
private sourceZ_;
|
|
94
|
+
/**
|
|
95
|
+
* @private
|
|
96
|
+
* @type {import("../extent.js").Extent}
|
|
97
|
+
*/
|
|
98
|
+
private clipExtent_;
|
|
79
99
|
/**
|
|
80
100
|
* @private
|
|
81
101
|
* @type {!import("./Triangulation.js").default}
|
package/reproj/Tile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tile.d.ts","sourceRoot":"","sources":["Tile.js"],"names":[],"mappings":";kCAoBsB,MAAM,QAAE,MAAM,QAAE,MAAM,QAAE,MAAM,KAAI,CAAC,OAAO,iBAAiB,EAAE,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"Tile.d.ts","sourceRoot":"","sources":["Tile.js"],"names":[],"mappings":";kCAoBsB,MAAM,QAAE,MAAM,QAAE,MAAM,QAAE,MAAM,KAAI,CAAC,OAAO,iBAAiB,EAAE,OAAO,CAAC;;;;;UAK7E,OAAO,iBAAiB,EAAE,OAAO;;;;YACjC,MAAM;;AAPpB;;GAEG;AAEH;;;;GAIG;AAEH;;;;;GAKG;AACH;IACE;;;;;;;;;;;;;;OAcG;IACH,wBAdW,OAAO,uBAAuB,EAAE,OAAO,kBACvC,OAAO,yBAAyB,EAAE,OAAO,cACzC,OAAO,uBAAuB,EAAE,OAAO,kBACvC,OAAO,yBAAyB,EAAE,OAAO,aACzC,OAAO,iBAAiB,EAAE,SAAS,oBACnC,OAAO,iBAAiB,EAAE,SAAS,cACnC,MAAM,UACN,MAAM,mBACN,YAAY,8HAuNtB;IAjMC;;;OAGG;IACH,qBAAmE;IAEnE;;;OAGG;IACH,oBAA6B;IAE7B;;;OAGG;IACH,gBAAqB;IAErB;;;OAGG;IACH,gBAAmB;IAEnB;;;OAGG;IACH,wBAAqC;IAErC;;;OAGG;IACH,wBAAqC;IAErC;;;OAGG;IACH,0BAAwE;IAExE;;;OAGG;IACH,qBAAsB;IAEtB;;;OAGG;IACH,6BAAgC;IAEhC;;;OAGG;IACH,iBAAiB;IAEjB;;;OAGG;IACH,oBAEa;IAiDb;;;OAGG;IACH,uBAOC;IAqEH;;;OAGG;IACH,YAFY,iBAAiB,CAI5B;IAED;;OAEG;IACH,mBAwDC;IAuDD;;OAEG;IACH,yBAGC;CAaF;iBA7YgB,YAAY"}
|
package/reproj/Tile.js
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
render as renderReprojected,
|
|
14
14
|
} from '../reproj.js';
|
|
15
15
|
import {clamp} from '../math.js';
|
|
16
|
-
import {getArea, getIntersection} from '../extent.js';
|
|
16
|
+
import {getArea, getIntersection, getWidth, wrapAndSliceX} from '../extent.js';
|
|
17
17
|
import {listen, unlistenByKey} from '../events.js';
|
|
18
18
|
import {releaseCanvas} from '../dom.js';
|
|
19
19
|
|
|
@@ -21,6 +21,12 @@ import {releaseCanvas} from '../dom.js';
|
|
|
21
21
|
* @typedef {function(number, number, number, number) : (import("../ImageTile.js").default)} FunctionType
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* @typedef {Object} TileOffset
|
|
26
|
+
* @property {import("../ImageTile.js").default} tile Tile.
|
|
27
|
+
* @property {number} offset Offset.
|
|
28
|
+
*/
|
|
29
|
+
|
|
24
30
|
/**
|
|
25
31
|
* @classdesc
|
|
26
32
|
* Class encapsulating single reprojected tile.
|
|
@@ -103,7 +109,7 @@ class ReprojTile extends Tile {
|
|
|
103
109
|
|
|
104
110
|
/**
|
|
105
111
|
* @private
|
|
106
|
-
* @type {!Array<
|
|
112
|
+
* @type {!Array<TileOffset>}
|
|
107
113
|
*/
|
|
108
114
|
this.sourceTiles_ = [];
|
|
109
115
|
|
|
@@ -119,6 +125,14 @@ class ReprojTile extends Tile {
|
|
|
119
125
|
*/
|
|
120
126
|
this.sourceZ_ = 0;
|
|
121
127
|
|
|
128
|
+
/**
|
|
129
|
+
* @private
|
|
130
|
+
* @type {import("../extent.js").Extent}
|
|
131
|
+
*/
|
|
132
|
+
this.clipExtent_ = sourceProj.canWrapX()
|
|
133
|
+
? sourceProj.getExtent()
|
|
134
|
+
: undefined;
|
|
135
|
+
|
|
122
136
|
const targetExtent = targetTileGrid.getTileCoordExtent(
|
|
123
137
|
this.wrappedTileCoord_,
|
|
124
138
|
);
|
|
@@ -208,19 +222,37 @@ class ReprojTile extends Tile {
|
|
|
208
222
|
if (!getArea(sourceExtent)) {
|
|
209
223
|
this.state = TileState.EMPTY;
|
|
210
224
|
} else {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
225
|
+
let worldWidth = 0;
|
|
226
|
+
let worldsAway = 0;
|
|
227
|
+
if (sourceProj.canWrapX()) {
|
|
228
|
+
worldWidth = getWidth(sourceProjExtent);
|
|
229
|
+
worldsAway = Math.floor(
|
|
230
|
+
(sourceExtent[0] - sourceProjExtent[0]) / worldWidth,
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
const sourceExtents = wrapAndSliceX(
|
|
235
|
+
sourceExtent.slice(),
|
|
236
|
+
sourceProj,
|
|
237
|
+
true,
|
|
214
238
|
);
|
|
239
|
+
sourceExtents.forEach((extent) => {
|
|
240
|
+
const sourceRange = sourceTileGrid.getTileRangeForExtentAndZ(
|
|
241
|
+
extent,
|
|
242
|
+
this.sourceZ_,
|
|
243
|
+
);
|
|
215
244
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
245
|
+
for (let srcX = sourceRange.minX; srcX <= sourceRange.maxX; srcX++) {
|
|
246
|
+
for (let srcY = sourceRange.minY; srcY <= sourceRange.maxY; srcY++) {
|
|
247
|
+
const tile = getTileFunction(this.sourceZ_, srcX, srcY, pixelRatio);
|
|
248
|
+
if (tile) {
|
|
249
|
+
const offset = worldsAway * worldWidth;
|
|
250
|
+
this.sourceTiles_.push({tile, offset});
|
|
251
|
+
}
|
|
221
252
|
}
|
|
222
253
|
}
|
|
223
|
-
|
|
254
|
+
++worldsAway;
|
|
255
|
+
});
|
|
224
256
|
|
|
225
257
|
if (this.sourceTiles_.length === 0) {
|
|
226
258
|
this.state = TileState.EMPTY;
|
|
@@ -241,10 +273,20 @@ class ReprojTile extends Tile {
|
|
|
241
273
|
*/
|
|
242
274
|
reproject_() {
|
|
243
275
|
const sources = [];
|
|
244
|
-
this.sourceTiles_.forEach((
|
|
276
|
+
this.sourceTiles_.forEach((source) => {
|
|
277
|
+
const tile = source.tile;
|
|
245
278
|
if (tile && tile.getState() == TileState.LOADED) {
|
|
279
|
+
const extent = this.sourceTileGrid_.getTileCoordExtent(tile.tileCoord);
|
|
280
|
+
extent[0] += source.offset;
|
|
281
|
+
extent[2] += source.offset;
|
|
282
|
+
const clipExtent = this.clipExtent_?.slice();
|
|
283
|
+
if (clipExtent) {
|
|
284
|
+
clipExtent[0] += source.offset;
|
|
285
|
+
clipExtent[2] += source.offset;
|
|
286
|
+
}
|
|
246
287
|
sources.push({
|
|
247
|
-
extent:
|
|
288
|
+
extent: extent,
|
|
289
|
+
clipExtent: clipExtent,
|
|
248
290
|
image: tile.getImage(),
|
|
249
291
|
});
|
|
250
292
|
}
|
|
@@ -298,7 +340,7 @@ class ReprojTile extends Tile {
|
|
|
298
340
|
let leftToLoad = 0;
|
|
299
341
|
|
|
300
342
|
this.sourcesListenerKeys_ = [];
|
|
301
|
-
this.sourceTiles_.forEach((tile) => {
|
|
343
|
+
this.sourceTiles_.forEach(({tile}) => {
|
|
302
344
|
const state = tile.getState();
|
|
303
345
|
if (state == TileState.IDLE || state == TileState.LOADING) {
|
|
304
346
|
leftToLoad++;
|
|
@@ -330,7 +372,7 @@ class ReprojTile extends Tile {
|
|
|
330
372
|
if (leftToLoad === 0) {
|
|
331
373
|
setTimeout(this.reproject_.bind(this), 0);
|
|
332
374
|
} else {
|
|
333
|
-
this.sourceTiles_.forEach(function (tile, i, arr) {
|
|
375
|
+
this.sourceTiles_.forEach(function ({tile}, i, arr) {
|
|
334
376
|
const state = tile.getState();
|
|
335
377
|
if (state == TileState.IDLE) {
|
|
336
378
|
tile.load();
|
package/reproj.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export function calculateSourceExtentResolution(sourceProj: import("./proj/Proje
|
|
|
27
27
|
/**
|
|
28
28
|
* @typedef {Object} ImageExtent
|
|
29
29
|
* @property {import("./extent.js").Extent} extent Extent.
|
|
30
|
+
* @property {import("./extent.js").Extent} [clipExtent] Clip extent.
|
|
30
31
|
* @property {import('./DataTile.js').ImageLike} image Image.
|
|
31
32
|
*/
|
|
32
33
|
/**
|
|
@@ -58,6 +59,10 @@ export type ImageExtent = {
|
|
|
58
59
|
* Extent.
|
|
59
60
|
*/
|
|
60
61
|
extent: import("./extent.js").Extent;
|
|
62
|
+
/**
|
|
63
|
+
* Clip extent.
|
|
64
|
+
*/
|
|
65
|
+
clipExtent?: import("./extent.js").Extent | undefined;
|
|
61
66
|
/**
|
|
62
67
|
* Image.
|
|
63
68
|
*/
|
package/reproj.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reproj.d.ts","sourceRoot":"","sources":["reproj.js"],"names":[],"mappings":"AA2FA;;;;;;;;;;;GAWG;AACH,sDANW,OAAO,sBAAsB,EAAE,OAAO,cACtC,OAAO,sBAAsB,EAAE,OAAO,gBACtC,OAAO,iBAAiB,EAAE,UAAU,oBACpC,MAAM,GACL,MAAM,CAyCjB;AAED;;;;;;;;;;;GAWG;AACH,4DANW,OAAO,sBAAsB,EAAE,OAAO,cACtC,OAAO,sBAAsB,EAAE,OAAO,gBACtC,OAAO,aAAa,EAAE,MAAM,oBAC5B,MAAM,GACL,MAAM,CA6BjB;AAED
|
|
1
|
+
{"version":3,"file":"reproj.d.ts","sourceRoot":"","sources":["reproj.js"],"names":[],"mappings":"AA2FA;;;;;;;;;;;GAWG;AACH,sDANW,OAAO,sBAAsB,EAAE,OAAO,cACtC,OAAO,sBAAsB,EAAE,OAAO,gBACtC,OAAO,iBAAiB,EAAE,UAAU,oBACpC,MAAM,GACL,MAAM,CAyCjB;AAED;;;;;;;;;;;GAWG;AACH,4DANW,OAAO,sBAAsB,EAAE,OAAO,cACtC,OAAO,sBAAsB,EAAE,OAAO,gBACtC,OAAO,aAAa,EAAE,MAAM,oBAC5B,MAAM,GACL,MAAM,CA6BjB;AAED;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,8BAhBW,MAAM,UACN,MAAM,cACN,MAAM,oBACN,MAAM,gBACN,OAAO,aAAa,EAAE,MAAM,oBAC5B,MAAM,gBACN,OAAO,aAAa,EAAE,MAAM,iBAC5B,OAAO,2BAA2B,EAAE,OAAO,WAC3C,MAAM,WAAW,CAAC,UAClB,MAAM,6IAKL,iBAAiB,CAuR5B;AArdD;;GAEG;AACH,yBAFU,MAAM,iBAAiB,CAAC,CAEL;;;;;YAqKf,OAAO,aAAa,EAAE,MAAM;;;;;;;;WAE5B,OAAO,eAAe,EAAE,SAAS"}
|
package/reproj.js
CHANGED
|
@@ -186,6 +186,7 @@ export function calculateSourceExtentResolution(
|
|
|
186
186
|
/**
|
|
187
187
|
* @typedef {Object} ImageExtent
|
|
188
188
|
* @property {import("./extent.js").Extent} extent Extent.
|
|
189
|
+
* @property {import("./extent.js").Extent} [clipExtent] Clip extent.
|
|
189
190
|
* @property {import('./DataTile.js').ImageLike} image Image.
|
|
190
191
|
*/
|
|
191
192
|
|
|
@@ -276,13 +277,27 @@ export function render(
|
|
|
276
277
|
}
|
|
277
278
|
|
|
278
279
|
sources.forEach(function (src, i, arr) {
|
|
279
|
-
const xPos = (src.extent[0] - sourceDataExtent[0]) * stitchScale;
|
|
280
|
-
const yPos = -(src.extent[3] - sourceDataExtent[3]) * stitchScale;
|
|
281
|
-
const srcWidth = getWidth(src.extent) * stitchScale;
|
|
282
|
-
const srcHeight = getHeight(src.extent) * stitchScale;
|
|
283
|
-
|
|
284
280
|
// This test should never fail -- but it does. Need to find a fix the upstream condition
|
|
285
281
|
if (src.image.width > 0 && src.image.height > 0) {
|
|
282
|
+
if (src.clipExtent) {
|
|
283
|
+
stitchContext.save();
|
|
284
|
+
const xPos = (src.clipExtent[0] - sourceDataExtent[0]) * stitchScale;
|
|
285
|
+
const yPos = -(src.clipExtent[3] - sourceDataExtent[3]) * stitchScale;
|
|
286
|
+
const width = getWidth(src.clipExtent) * stitchScale;
|
|
287
|
+
const height = getHeight(src.clipExtent) * stitchScale;
|
|
288
|
+
stitchContext.rect(
|
|
289
|
+
interpolate ? xPos : Math.round(xPos),
|
|
290
|
+
interpolate ? yPos : Math.round(yPos),
|
|
291
|
+
interpolate ? width : Math.round(xPos + width) - Math.round(xPos),
|
|
292
|
+
interpolate ? height : Math.round(yPos + height) - Math.round(yPos),
|
|
293
|
+
);
|
|
294
|
+
stitchContext.clip();
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
const xPos = (src.extent[0] - sourceDataExtent[0]) * stitchScale;
|
|
298
|
+
const yPos = -(src.extent[3] - sourceDataExtent[3]) * stitchScale;
|
|
299
|
+
const srcWidth = getWidth(src.extent) * stitchScale;
|
|
300
|
+
const srcHeight = getHeight(src.extent) * stitchScale;
|
|
286
301
|
stitchContext.drawImage(
|
|
287
302
|
src.image,
|
|
288
303
|
gutter,
|
|
@@ -298,6 +313,10 @@ export function render(
|
|
|
298
313
|
? srcHeight
|
|
299
314
|
: Math.round(yPos + srcHeight) - Math.round(yPos),
|
|
300
315
|
);
|
|
316
|
+
|
|
317
|
+
if (src.clipExtent) {
|
|
318
|
+
stitchContext.restore();
|
|
319
|
+
}
|
|
301
320
|
}
|
|
302
321
|
});
|
|
303
322
|
}
|
package/source/Vector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vector.d.ts","sourceRoot":"","sources":["Vector.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Vector.d.ts","sourceRoot":"","sources":["Vector.js"],"names":[],"mappings":"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"}
|
package/source/Vector.js
CHANGED
|
@@ -1116,6 +1116,10 @@ class VectorSource extends Source {
|
|
|
1116
1116
|
*/
|
|
1117
1117
|
removeFeatureInternal(feature) {
|
|
1118
1118
|
const featureKey = getUid(feature);
|
|
1119
|
+
if (!(featureKey in this.uidIndex_)) {
|
|
1120
|
+
return;
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1119
1123
|
if (featureKey in this.nullGeometryFeatures_) {
|
|
1120
1124
|
delete this.nullGeometryFeatures_[featureKey];
|
|
1121
1125
|
} else {
|
|
@@ -1123,15 +1127,23 @@ class VectorSource extends Source {
|
|
|
1123
1127
|
this.featuresRtree_.remove(feature);
|
|
1124
1128
|
}
|
|
1125
1129
|
}
|
|
1130
|
+
|
|
1126
1131
|
const featureChangeKeys = this.featureChangeKeys_[featureKey];
|
|
1127
|
-
|
|
1128
|
-
return;
|
|
1129
|
-
}
|
|
1130
|
-
featureChangeKeys.forEach(unlistenByKey);
|
|
1132
|
+
featureChangeKeys?.forEach(unlistenByKey);
|
|
1131
1133
|
delete this.featureChangeKeys_[featureKey];
|
|
1134
|
+
|
|
1132
1135
|
const id = feature.getId();
|
|
1133
1136
|
if (id !== undefined) {
|
|
1134
|
-
|
|
1137
|
+
const idString = id.toString();
|
|
1138
|
+
const indexedFeature = this.idIndex_[idString];
|
|
1139
|
+
if (indexedFeature === feature) {
|
|
1140
|
+
delete this.idIndex_[idString];
|
|
1141
|
+
} else if (Array.isArray(indexedFeature)) {
|
|
1142
|
+
indexedFeature.splice(indexedFeature.indexOf(feature), 1);
|
|
1143
|
+
if (indexedFeature.length === 1) {
|
|
1144
|
+
this.idIndex_[idString] = indexedFeature[0];
|
|
1145
|
+
}
|
|
1146
|
+
}
|
|
1135
1147
|
}
|
|
1136
1148
|
delete this.uidIndex_[featureKey];
|
|
1137
1149
|
if (this.hasListener(VectorEventType.REMOVEFEATURE)) {
|
package/util.js
CHANGED