@deck.gl/geo-layers 8.9.8 → 8.9.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.
- package/dist/dist.dev.js +127 -16
- package/dist/es5/tileset-2d/tile-2d-header.js +17 -1
- package/dist/es5/tileset-2d/tile-2d-header.js.map +1 -1
- package/dist/es5/wms-layer/wms-layer.js +34 -14
- package/dist/es5/wms-layer/wms-layer.js.map +1 -1
- package/dist/esm/tileset-2d/tile-2d-header.js +19 -2
- package/dist/esm/tileset-2d/tile-2d-header.js.map +1 -1
- package/dist/esm/wms-layer/wms-layer.js +11 -0
- package/dist/esm/wms-layer/wms-layer.js.map +1 -1
- package/dist.min.js +56 -56
- package/package.json +10 -10
- package/src/tileset-2d/tile-2d-header.ts +26 -1
- package/src/wms-layer/wms-layer.ts +15 -1
- package/typed/geo-cell-layer/GeoCellLayer.js +49 -0
- package/typed/great-circle-layer/great-circle-layer.js +29 -0
- package/typed/h3-layers/h3-cluster-layer.js +33 -0
- package/typed/h3-layers/h3-hexagon-layer.js +251 -0
- package/typed/imagery-layer/imagery-layer.d.ts +53 -0
- package/typed/imagery-layer/imagery-layer.d.ts.map +1 -0
- package/typed/index.js +33 -0
- package/typed/mesh-layer/mesh-layer-fragment.glsl.js +55 -0
- package/typed/mesh-layer/mesh-layer-vertex.glsl.js +80 -0
- package/typed/mesh-layer/mesh-layer.js +110 -0
- package/typed/mvt-layer/coordinate-transform.js +41 -0
- package/typed/mvt-layer/find-index-binary.js +96 -0
- package/typed/mvt-layer/mvt-layer.js +297 -0
- package/typed/quadkey-layer/quadkey-layer.js +18 -0
- package/typed/quadkey-layer/quadkey-utils.js +26 -0
- package/typed/s2-layer/s2-geometry.js +123 -0
- package/typed/s2-layer/s2-layer.js +37 -0
- package/typed/s2-layer/s2-utils.js +88 -0
- package/typed/terrain-layer/terrain-layer.js +226 -0
- package/typed/tile-3d-layer/tile-3d-layer.js +294 -0
- package/typed/tile-layer/tile-2d-header.js +113 -0
- package/typed/tile-layer/tile-2d-traversal.js +181 -0
- package/typed/tile-layer/tile-layer.js +192 -0
- package/typed/tile-layer/tileset-2d.d.ts.map +1 -1
- package/typed/tile-layer/tileset-2d.js +399 -0
- package/typed/tile-layer/types.js +1 -0
- package/typed/tile-layer/utils.d.ts +1 -1
- package/typed/tile-layer/utils.d.ts.map +1 -1
- package/typed/tile-layer/utils.js +197 -0
- package/typed/tileset-2d/tile-2d-header.d.ts +5 -1
- package/typed/tileset-2d/tile-2d-header.d.ts.map +1 -1
- package/typed/trips-layer/trips-layer.js +92 -0
- package/typed/wms-layer/wms-layer.d.ts +4 -0
- package/typed/wms-layer/wms-layer.d.ts.map +1 -1
package/dist/dist.dev.js
CHANGED
|
@@ -3060,7 +3060,7 @@ var __exports__ = (() => {
|
|
|
3060
3060
|
}
|
|
3061
3061
|
|
|
3062
3062
|
// ../../node_modules/@loaders.gl/xml/dist/esm/xml-loader.js
|
|
3063
|
-
var VERSION = true ? "3.3.
|
|
3063
|
+
var VERSION = true ? "3.3.3" : "latest";
|
|
3064
3064
|
var XMLLoader = {
|
|
3065
3065
|
name: "XML",
|
|
3066
3066
|
id: "xml",
|
|
@@ -3172,7 +3172,7 @@ var __exports__ = (() => {
|
|
|
3172
3172
|
}
|
|
3173
3173
|
|
|
3174
3174
|
// ../../node_modules/@loaders.gl/wms/dist/esm/wms-error-loader.js
|
|
3175
|
-
var VERSION2 = true ? "3.3.
|
|
3175
|
+
var VERSION2 = true ? "3.3.3" : "latest";
|
|
3176
3176
|
var WMSErrorLoader = {
|
|
3177
3177
|
id: "wms-error",
|
|
3178
3178
|
name: "WMS Error",
|
|
@@ -3208,7 +3208,7 @@ var __exports__ = (() => {
|
|
|
3208
3208
|
}
|
|
3209
3209
|
|
|
3210
3210
|
// ../../node_modules/@loaders.gl/wms/dist/esm/wms-capabilities-loader.js
|
|
3211
|
-
var VERSION3 = true ? "3.3.
|
|
3211
|
+
var VERSION3 = true ? "3.3.3" : "latest";
|
|
3212
3212
|
var WMSCapabilitiesLoader = {
|
|
3213
3213
|
id: "wms-capabilities",
|
|
3214
3214
|
name: "WMS Capabilities",
|
|
@@ -3233,7 +3233,7 @@ var __exports__ = (() => {
|
|
|
3233
3233
|
};
|
|
3234
3234
|
|
|
3235
3235
|
// ../../node_modules/@loaders.gl/images/dist/esm/lib/utils/version.js
|
|
3236
|
-
var VERSION4 = true ? "3.3.
|
|
3236
|
+
var VERSION4 = true ? "3.3.3" : "latest";
|
|
3237
3237
|
|
|
3238
3238
|
// ../../node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/assert.js
|
|
3239
3239
|
function assert2(condition, message) {
|
|
@@ -3283,7 +3283,7 @@ var __exports__ = (() => {
|
|
|
3283
3283
|
|
|
3284
3284
|
// ../../node_modules/@loaders.gl/worker-utils/dist/esm/lib/library-utils/library-utils.js
|
|
3285
3285
|
var node = __toESM(require_require_utils());
|
|
3286
|
-
var VERSION5 = true ? "3.3.
|
|
3286
|
+
var VERSION5 = true ? "3.3.3" : LATEST;
|
|
3287
3287
|
var loadLibraryPromises = {};
|
|
3288
3288
|
async function loadLibrary(libraryUrl) {
|
|
3289
3289
|
let moduleName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
|
|
@@ -5445,12 +5445,16 @@ var __exports__ = (() => {
|
|
|
5445
5445
|
}
|
|
5446
5446
|
};
|
|
5447
5447
|
var WMSLayer = class extends import_core.CompositeLayer {
|
|
5448
|
+
get isLoaded() {
|
|
5449
|
+
return Boolean(this.state) && this.state.loadCounter === 0 && super.isLoaded;
|
|
5450
|
+
}
|
|
5448
5451
|
shouldUpdateState() {
|
|
5449
5452
|
return true;
|
|
5450
5453
|
}
|
|
5451
5454
|
initializeState() {
|
|
5452
5455
|
this.state._nextRequestId = 0;
|
|
5453
5456
|
this.state.lastRequestId = -1;
|
|
5457
|
+
this.state.loadCounter = 0;
|
|
5454
5458
|
}
|
|
5455
5459
|
updateState({
|
|
5456
5460
|
changeFlags,
|
|
@@ -5521,12 +5525,15 @@ var __exports__ = (() => {
|
|
|
5521
5525
|
imageSource
|
|
5522
5526
|
} = this.state;
|
|
5523
5527
|
try {
|
|
5528
|
+
this.state.loadCounter++;
|
|
5524
5529
|
const metadata = await imageSource.getMetadata();
|
|
5525
5530
|
if (this.state.imageSource === imageSource) {
|
|
5526
5531
|
this.getCurrentLayer()?.props.onMetadataLoad(metadata);
|
|
5527
5532
|
}
|
|
5528
5533
|
} catch (error2) {
|
|
5529
5534
|
this.getCurrentLayer()?.props.onMetadataLoadError(error2);
|
|
5535
|
+
} finally {
|
|
5536
|
+
this.state.loadCounter--;
|
|
5530
5537
|
}
|
|
5531
5538
|
}
|
|
5532
5539
|
async loadImage(viewport, reason) {
|
|
@@ -5562,6 +5569,7 @@ var __exports__ = (() => {
|
|
|
5562
5569
|
requestParams.bbox = [minX, minY, maxX, maxY];
|
|
5563
5570
|
}
|
|
5564
5571
|
try {
|
|
5572
|
+
this.state.loadCounter++;
|
|
5565
5573
|
this.props.onImageLoadStart(requestId);
|
|
5566
5574
|
const image = await this.state.imageSource.getImage(requestParams);
|
|
5567
5575
|
if (this.state.lastRequestId < requestId) {
|
|
@@ -5576,6 +5584,8 @@ var __exports__ = (() => {
|
|
|
5576
5584
|
} catch (error2) {
|
|
5577
5585
|
this.raiseError(error2, "Load image");
|
|
5578
5586
|
this.getCurrentLayer()?.props.onImageLoadError(requestId, error2);
|
|
5587
|
+
} finally {
|
|
5588
|
+
this.state.loadCounter--;
|
|
5579
5589
|
}
|
|
5580
5590
|
}
|
|
5581
5591
|
getRequestId() {
|
|
@@ -7892,6 +7902,19 @@ var __exports__ = (() => {
|
|
|
7892
7902
|
this._isCancelled = false;
|
|
7893
7903
|
this._needsReload = false;
|
|
7894
7904
|
}
|
|
7905
|
+
get bbox() {
|
|
7906
|
+
return this._bbox;
|
|
7907
|
+
}
|
|
7908
|
+
set bbox(value) {
|
|
7909
|
+
if (this._bbox)
|
|
7910
|
+
return;
|
|
7911
|
+
this._bbox = value;
|
|
7912
|
+
if ("west" in value) {
|
|
7913
|
+
this.boundingBox = [[value.west, value.south], [value.east, value.north]];
|
|
7914
|
+
} else {
|
|
7915
|
+
this.boundingBox = [[value.left, value.top], [value.right, value.bottom]];
|
|
7916
|
+
}
|
|
7917
|
+
}
|
|
7895
7918
|
get data() {
|
|
7896
7919
|
return this.isLoading && this._loader ? this._loader.then(() => this.data) : this.content;
|
|
7897
7920
|
}
|
|
@@ -8139,8 +8162,8 @@ var __exports__ = (() => {
|
|
|
8139
8162
|
return this;
|
|
8140
8163
|
}
|
|
8141
8164
|
expand(point) {
|
|
8142
|
-
const
|
|
8143
|
-
const radius =
|
|
8165
|
+
const scratchPoint2 = scratchVector2.from(point);
|
|
8166
|
+
const radius = scratchPoint2.subtract(this.center).magnitude();
|
|
8144
8167
|
if (radius > this.radius) {
|
|
8145
8168
|
this.radius = radius;
|
|
8146
8169
|
}
|
|
@@ -8157,8 +8180,8 @@ var __exports__ = (() => {
|
|
|
8157
8180
|
return d * d;
|
|
8158
8181
|
}
|
|
8159
8182
|
distanceTo(point) {
|
|
8160
|
-
const
|
|
8161
|
-
const delta =
|
|
8183
|
+
const scratchPoint2 = scratchVector2.from(point);
|
|
8184
|
+
const delta = scratchPoint2.subtract(this.center);
|
|
8162
8185
|
return Math.max(0, delta.len() - this.radius);
|
|
8163
8186
|
}
|
|
8164
8187
|
intersectPlane(plane) {
|
|
@@ -16434,6 +16457,7 @@ void main(void) {
|
|
|
16434
16457
|
function defined2(x2) {
|
|
16435
16458
|
return x2 !== void 0 && x2 !== null;
|
|
16436
16459
|
}
|
|
16460
|
+
var scratchPoint = new Vector3();
|
|
16437
16461
|
var scratchScale = new Vector3();
|
|
16438
16462
|
var scratchNorthWest = new Vector3();
|
|
16439
16463
|
var scratchSouthEast = new Vector3();
|
|
@@ -16455,6 +16479,19 @@ void main(void) {
|
|
|
16455
16479
|
}
|
|
16456
16480
|
throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box");
|
|
16457
16481
|
}
|
|
16482
|
+
function getCartographicBounds(boundingVolumeHeader, boundingVolume) {
|
|
16483
|
+
if (boundingVolumeHeader.box) {
|
|
16484
|
+
return orientedBoundingBoxToCartographicBounds(boundingVolume);
|
|
16485
|
+
}
|
|
16486
|
+
if (boundingVolumeHeader.region) {
|
|
16487
|
+
const [west, south, east, north, minHeight, maxHeight] = boundingVolumeHeader.region;
|
|
16488
|
+
return [[degrees(west), degrees(south), minHeight], [degrees(east), degrees(north), maxHeight]];
|
|
16489
|
+
}
|
|
16490
|
+
if (boundingVolumeHeader.sphere) {
|
|
16491
|
+
return boundingSphereToCartographicBounds(boundingVolume);
|
|
16492
|
+
}
|
|
16493
|
+
throw new Error("Unkown boundingVolume type");
|
|
16494
|
+
}
|
|
16458
16495
|
function createBox(box, transform2, result) {
|
|
16459
16496
|
const center = new Vector3(box[0], box[1], box[2]);
|
|
16460
16497
|
transform2.transform(center, center);
|
|
@@ -16500,6 +16537,73 @@ void main(void) {
|
|
|
16500
16537
|
}
|
|
16501
16538
|
return new BoundingSphere(center, radius);
|
|
16502
16539
|
}
|
|
16540
|
+
function orientedBoundingBoxToCartographicBounds(boundingVolume) {
|
|
16541
|
+
const result = emptyCartographicBounds();
|
|
16542
|
+
const {
|
|
16543
|
+
halfAxes
|
|
16544
|
+
} = boundingVolume;
|
|
16545
|
+
const xAxis = new Vector3(halfAxes.getColumn(0));
|
|
16546
|
+
const yAxis = new Vector3(halfAxes.getColumn(1));
|
|
16547
|
+
const zAxis = new Vector3(halfAxes.getColumn(2));
|
|
16548
|
+
for (let x2 = 0; x2 < 2; x2++) {
|
|
16549
|
+
for (let y2 = 0; y2 < 2; y2++) {
|
|
16550
|
+
for (let z = 0; z < 2; z++) {
|
|
16551
|
+
scratchPoint.copy(boundingVolume.center);
|
|
16552
|
+
scratchPoint.add(xAxis);
|
|
16553
|
+
scratchPoint.add(yAxis);
|
|
16554
|
+
scratchPoint.add(zAxis);
|
|
16555
|
+
addToCartographicBounds(result, scratchPoint);
|
|
16556
|
+
zAxis.negate();
|
|
16557
|
+
}
|
|
16558
|
+
yAxis.negate();
|
|
16559
|
+
}
|
|
16560
|
+
xAxis.negate();
|
|
16561
|
+
}
|
|
16562
|
+
return result;
|
|
16563
|
+
}
|
|
16564
|
+
function boundingSphereToCartographicBounds(boundingVolume) {
|
|
16565
|
+
const result = emptyCartographicBounds();
|
|
16566
|
+
const {
|
|
16567
|
+
center,
|
|
16568
|
+
radius
|
|
16569
|
+
} = boundingVolume;
|
|
16570
|
+
const point = Ellipsoid.WGS84.scaleToGeodeticSurface(center, scratchPoint);
|
|
16571
|
+
let zAxis;
|
|
16572
|
+
if (point) {
|
|
16573
|
+
zAxis = Ellipsoid.WGS84.geodeticSurfaceNormal(point);
|
|
16574
|
+
} else {
|
|
16575
|
+
zAxis = new Vector3(0, 0, 1);
|
|
16576
|
+
}
|
|
16577
|
+
let xAxis = new Vector3(zAxis[2], -zAxis[1], 0);
|
|
16578
|
+
if (xAxis.len() > 0) {
|
|
16579
|
+
xAxis.normalize();
|
|
16580
|
+
} else {
|
|
16581
|
+
xAxis = new Vector3(0, 1, 0);
|
|
16582
|
+
}
|
|
16583
|
+
const yAxis = xAxis.clone().cross(zAxis);
|
|
16584
|
+
for (const axis of [xAxis, yAxis, zAxis]) {
|
|
16585
|
+
scratchScale.copy(axis).scale(radius);
|
|
16586
|
+
for (let dir = 0; dir < 2; dir++) {
|
|
16587
|
+
scratchPoint.copy(center);
|
|
16588
|
+
scratchPoint.add(scratchScale);
|
|
16589
|
+
addToCartographicBounds(result, scratchPoint);
|
|
16590
|
+
scratchScale.negate();
|
|
16591
|
+
}
|
|
16592
|
+
}
|
|
16593
|
+
return result;
|
|
16594
|
+
}
|
|
16595
|
+
function emptyCartographicBounds() {
|
|
16596
|
+
return [[Infinity, Infinity, Infinity], [-Infinity, -Infinity, -Infinity]];
|
|
16597
|
+
}
|
|
16598
|
+
function addToCartographicBounds(target, cartesian) {
|
|
16599
|
+
Ellipsoid.WGS84.cartesianToCartographic(cartesian, scratchPoint);
|
|
16600
|
+
target[0][0] = Math.min(target[0][0], scratchPoint[0]);
|
|
16601
|
+
target[0][1] = Math.min(target[0][1], scratchPoint[1]);
|
|
16602
|
+
target[0][2] = Math.min(target[0][2], scratchPoint[2]);
|
|
16603
|
+
target[1][0] = Math.max(target[1][0], scratchPoint[0]);
|
|
16604
|
+
target[1][1] = Math.max(target[1][1], scratchPoint[1]);
|
|
16605
|
+
target[1][2] = Math.max(target[1][2], scratchPoint[2]);
|
|
16606
|
+
}
|
|
16503
16607
|
|
|
16504
16608
|
// ../../node_modules/@loaders.gl/tiles/dist/esm/tileset/helpers/tiles-3d-lod.js
|
|
16505
16609
|
var scratchPositionNormal = new Vector3();
|
|
@@ -16968,6 +17072,7 @@ void main(void) {
|
|
|
16968
17072
|
_defineProperty(this, "_expireDate", void 0);
|
|
16969
17073
|
_defineProperty(this, "_expiredContent", void 0);
|
|
16970
17074
|
_defineProperty(this, "_shouldRefine", void 0);
|
|
17075
|
+
_defineProperty(this, "_boundingBox", void 0);
|
|
16971
17076
|
_defineProperty(this, "_distanceToCamera", void 0);
|
|
16972
17077
|
_defineProperty(this, "_centerZDepth", void 0);
|
|
16973
17078
|
_defineProperty(this, "_screenSpaceError", void 0);
|
|
@@ -17080,6 +17185,12 @@ void main(void) {
|
|
|
17080
17185
|
get screenSpaceError() {
|
|
17081
17186
|
return this._screenSpaceError;
|
|
17082
17187
|
}
|
|
17188
|
+
get boundingBox() {
|
|
17189
|
+
if (!this._boundingBox) {
|
|
17190
|
+
this._boundingBox = getCartographicBounds(this.header.boundingVolume, this.boundingVolume);
|
|
17191
|
+
}
|
|
17192
|
+
return this._boundingBox;
|
|
17193
|
+
}
|
|
17083
17194
|
getScreenSpaceError(frameState, useParentLodMetric) {
|
|
17084
17195
|
switch (this.tileset.type) {
|
|
17085
17196
|
case TILESET_TYPE.I3S:
|
|
@@ -18197,7 +18308,7 @@ void main(void) {
|
|
|
18197
18308
|
}
|
|
18198
18309
|
|
|
18199
18310
|
// ../../node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/version.js
|
|
18200
|
-
var VERSION8 = true ? "3.3.
|
|
18311
|
+
var VERSION8 = true ? "3.3.3" : "latest";
|
|
18201
18312
|
|
|
18202
18313
|
// ../../node_modules/@loaders.gl/3d-tiles/dist/esm/lib/constants.js
|
|
18203
18314
|
var TILE3D_TYPE = {
|
|
@@ -18226,7 +18337,7 @@ void main(void) {
|
|
|
18226
18337
|
}
|
|
18227
18338
|
|
|
18228
18339
|
// ../../node_modules/@loaders.gl/draco/dist/esm/lib/utils/version.js
|
|
18229
|
-
var VERSION9 = true ? "3.3.
|
|
18340
|
+
var VERSION9 = true ? "3.3.3" : "latest";
|
|
18230
18341
|
|
|
18231
18342
|
// ../../node_modules/@loaders.gl/draco/dist/esm/draco-loader.js
|
|
18232
18343
|
var DEFAULT_DRACO_OPTIONS = {
|
|
@@ -20392,13 +20503,13 @@ void main(void) {
|
|
|
20392
20503
|
}
|
|
20393
20504
|
|
|
20394
20505
|
// ../../node_modules/@loaders.gl/gltf/dist/esm/lib/utils/version.js
|
|
20395
|
-
var VERSION10 = true ? "3.3.
|
|
20506
|
+
var VERSION10 = true ? "3.3.3" : "latest";
|
|
20396
20507
|
|
|
20397
20508
|
// ../../node_modules/@loaders.gl/textures/dist/esm/lib/utils/version.js
|
|
20398
|
-
var VERSION11 = true ? "3.3.
|
|
20509
|
+
var VERSION11 = true ? "3.3.3" : "beta";
|
|
20399
20510
|
|
|
20400
20511
|
// ../../node_modules/@loaders.gl/textures/dist/esm/lib/parsers/basis-module-loader.js
|
|
20401
|
-
var VERSION12 = true ? "3.3.
|
|
20512
|
+
var VERSION12 = true ? "3.3.3" : "beta";
|
|
20402
20513
|
var BASIS_CDN_ENCODER_WASM = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION12, "/dist/libs/basis_encoder.wasm");
|
|
20403
20514
|
var BASIS_CDN_ENCODER_JS = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION12, "/dist/libs/basis_encoder.js");
|
|
20404
20515
|
var loadBasisTranscoderPromise;
|
|
@@ -25311,7 +25422,7 @@ void main(void) {
|
|
|
25311
25422
|
}
|
|
25312
25423
|
|
|
25313
25424
|
// ../../node_modules/@loaders.gl/terrain/dist/esm/lib/utils/version.js
|
|
25314
|
-
var VERSION13 = true ? "3.3.
|
|
25425
|
+
var VERSION13 = true ? "3.3.3" : "latest";
|
|
25315
25426
|
|
|
25316
25427
|
// ../../node_modules/@loaders.gl/terrain/dist/esm/terrain-loader.js
|
|
25317
25428
|
var TerrainLoader = {
|
|
@@ -27359,7 +27470,7 @@ void main(void) {
|
|
|
27359
27470
|
}
|
|
27360
27471
|
|
|
27361
27472
|
// ../../node_modules/@loaders.gl/mvt/dist/esm/mvt-loader.js
|
|
27362
|
-
var VERSION14 = true ? "3.3.
|
|
27473
|
+
var VERSION14 = true ? "3.3.3" : "latest";
|
|
27363
27474
|
var DEFAULT_MVT_LOADER_OPTIONS = {
|
|
27364
27475
|
mvt: {
|
|
27365
27476
|
shape: "geojson",
|
|
@@ -29,15 +29,16 @@ var Tile2DHeader = function () {
|
|
|
29
29
|
(0, _defineProperty2.default)(this, "state", void 0);
|
|
30
30
|
(0, _defineProperty2.default)(this, "layers", void 0);
|
|
31
31
|
(0, _defineProperty2.default)(this, "id", void 0);
|
|
32
|
-
(0, _defineProperty2.default)(this, "bbox", void 0);
|
|
33
32
|
(0, _defineProperty2.default)(this, "zoom", void 0);
|
|
34
33
|
(0, _defineProperty2.default)(this, "userData", void 0);
|
|
34
|
+
(0, _defineProperty2.default)(this, "boundingBox", void 0);
|
|
35
35
|
(0, _defineProperty2.default)(this, "_abortController", void 0);
|
|
36
36
|
(0, _defineProperty2.default)(this, "_loader", void 0);
|
|
37
37
|
(0, _defineProperty2.default)(this, "_loaderId", void 0);
|
|
38
38
|
(0, _defineProperty2.default)(this, "_isLoaded", void 0);
|
|
39
39
|
(0, _defineProperty2.default)(this, "_isCancelled", void 0);
|
|
40
40
|
(0, _defineProperty2.default)(this, "_needsReload", void 0);
|
|
41
|
+
(0, _defineProperty2.default)(this, "_bbox", void 0);
|
|
41
42
|
this.index = index;
|
|
42
43
|
this.isVisible = false;
|
|
43
44
|
this.isSelected = false;
|
|
@@ -53,6 +54,21 @@ var Tile2DHeader = function () {
|
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
(0, _createClass2.default)(Tile2DHeader, [{
|
|
57
|
+
key: "bbox",
|
|
58
|
+
get: function get() {
|
|
59
|
+
return this._bbox;
|
|
60
|
+
},
|
|
61
|
+
set: function set(value) {
|
|
62
|
+
if (this._bbox) return;
|
|
63
|
+
this._bbox = value;
|
|
64
|
+
|
|
65
|
+
if ('west' in value) {
|
|
66
|
+
this.boundingBox = [[value.west, value.south], [value.east, value.north]];
|
|
67
|
+
} else {
|
|
68
|
+
this.boundingBox = [[value.left, value.top], [value.right, value.bottom]];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}, {
|
|
56
72
|
key: "data",
|
|
57
73
|
get: function get() {
|
|
58
74
|
var _this = this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tileset-2d/tile-2d-header.ts"],"names":["Tile2DHeader","index","isVisible","isSelected","parent","children","content","_loader","undefined","_abortController","_loaderId","_isLoaded","_isCancelled","_needsReload","isLoading","then","data","Boolean","result","byteLength","Number","isFinite","console","error","getData","requestScheduler","onLoad","onError","id","bbox","userData","zoom","loaderId","AbortController","signal","scheduleRequest","tile","requestToken","done","tileData","opts","_loadData","abort","isLoaded"],"mappings":";;;;;;;;;;;;;;;;;;;IAWaA,Y;
|
|
1
|
+
{"version":3,"sources":["../../../src/tileset-2d/tile-2d-header.ts"],"names":["Tile2DHeader","index","isVisible","isSelected","parent","children","content","_loader","undefined","_abortController","_loaderId","_isLoaded","_isCancelled","_needsReload","_bbox","value","boundingBox","west","south","east","north","left","top","right","bottom","isLoading","then","data","Boolean","result","byteLength","Number","isFinite","console","error","getData","requestScheduler","onLoad","onError","id","bbox","userData","zoom","loaderId","AbortController","signal","scheduleRequest","tile","requestToken","done","tileData","opts","_loadData","abort","isLoaded"],"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"}
|
|
@@ -19,6 +19,8 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
19
19
|
|
|
20
20
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
21
21
|
|
|
22
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
23
|
+
|
|
22
24
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
23
25
|
|
|
24
26
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
@@ -98,6 +100,11 @@ var WMSLayer = function (_CompositeLayer) {
|
|
|
98
100
|
}
|
|
99
101
|
|
|
100
102
|
(0, _createClass2.default)(WMSLayer, [{
|
|
103
|
+
key: "isLoaded",
|
|
104
|
+
get: function get() {
|
|
105
|
+
return Boolean(this.state) && this.state.loadCounter === 0 && (0, _get2.default)((0, _getPrototypeOf2.default)(WMSLayer.prototype), "isLoaded", this);
|
|
106
|
+
}
|
|
107
|
+
}, {
|
|
101
108
|
key: "shouldUpdateState",
|
|
102
109
|
value: function shouldUpdateState() {
|
|
103
110
|
return true;
|
|
@@ -107,6 +114,7 @@ var WMSLayer = function (_CompositeLayer) {
|
|
|
107
114
|
value: function initializeState() {
|
|
108
115
|
this.state._nextRequestId = 0;
|
|
109
116
|
this.state.lastRequestId = -1;
|
|
117
|
+
this.state.loadCounter = 0;
|
|
110
118
|
}
|
|
111
119
|
}, {
|
|
112
120
|
key: "updateState",
|
|
@@ -229,30 +237,36 @@ var WMSLayer = function (_CompositeLayer) {
|
|
|
229
237
|
case 0:
|
|
230
238
|
imageSource = this.state.imageSource;
|
|
231
239
|
_context2.prev = 1;
|
|
232
|
-
|
|
240
|
+
this.state.loadCounter++;
|
|
241
|
+
_context2.next = 5;
|
|
233
242
|
return imageSource.getMetadata();
|
|
234
243
|
|
|
235
|
-
case
|
|
244
|
+
case 5:
|
|
236
245
|
_metadata = _context2.sent;
|
|
237
246
|
|
|
238
247
|
if (this.state.imageSource === imageSource) {
|
|
239
248
|
(_this$getCurrentLayer = this.getCurrentLayer()) === null || _this$getCurrentLayer === void 0 ? void 0 : _this$getCurrentLayer.props.onMetadataLoad(_metadata);
|
|
240
249
|
}
|
|
241
250
|
|
|
242
|
-
_context2.next =
|
|
251
|
+
_context2.next = 12;
|
|
243
252
|
break;
|
|
244
253
|
|
|
245
|
-
case
|
|
246
|
-
_context2.prev =
|
|
254
|
+
case 9:
|
|
255
|
+
_context2.prev = 9;
|
|
247
256
|
_context2.t0 = _context2["catch"](1);
|
|
248
257
|
(_this$getCurrentLayer2 = this.getCurrentLayer()) === null || _this$getCurrentLayer2 === void 0 ? void 0 : _this$getCurrentLayer2.props.onMetadataLoadError(_context2.t0);
|
|
249
258
|
|
|
250
|
-
case
|
|
259
|
+
case 12:
|
|
260
|
+
_context2.prev = 12;
|
|
261
|
+
this.state.loadCounter--;
|
|
262
|
+
return _context2.finish(12);
|
|
263
|
+
|
|
264
|
+
case 15:
|
|
251
265
|
case "end":
|
|
252
266
|
return _context2.stop();
|
|
253
267
|
}
|
|
254
268
|
}
|
|
255
|
-
}, _callee2, this, [[1,
|
|
269
|
+
}, _callee2, this, [[1, 9, 12, 15]]);
|
|
256
270
|
}));
|
|
257
271
|
|
|
258
272
|
function _loadMetadata() {
|
|
@@ -305,11 +319,12 @@ var WMSLayer = function (_CompositeLayer) {
|
|
|
305
319
|
}
|
|
306
320
|
|
|
307
321
|
_context3.prev = 10;
|
|
322
|
+
this.state.loadCounter++;
|
|
308
323
|
this.props.onImageLoadStart(requestId);
|
|
309
|
-
_context3.next =
|
|
324
|
+
_context3.next = 15;
|
|
310
325
|
return this.state.imageSource.getImage(requestParams);
|
|
311
326
|
|
|
312
|
-
case
|
|
327
|
+
case 15:
|
|
313
328
|
image = _context3.sent;
|
|
314
329
|
|
|
315
330
|
if (this.state.lastRequestId < requestId) {
|
|
@@ -322,21 +337,26 @@ var WMSLayer = function (_CompositeLayer) {
|
|
|
322
337
|
});
|
|
323
338
|
}
|
|
324
339
|
|
|
325
|
-
_context3.next =
|
|
340
|
+
_context3.next = 23;
|
|
326
341
|
break;
|
|
327
342
|
|
|
328
|
-
case
|
|
329
|
-
_context3.prev =
|
|
343
|
+
case 19:
|
|
344
|
+
_context3.prev = 19;
|
|
330
345
|
_context3.t0 = _context3["catch"](10);
|
|
331
346
|
this.raiseError(_context3.t0, 'Load image');
|
|
332
347
|
(_this$getCurrentLayer4 = this.getCurrentLayer()) === null || _this$getCurrentLayer4 === void 0 ? void 0 : _this$getCurrentLayer4.props.onImageLoadError(requestId, _context3.t0);
|
|
333
348
|
|
|
334
|
-
case
|
|
349
|
+
case 23:
|
|
350
|
+
_context3.prev = 23;
|
|
351
|
+
this.state.loadCounter--;
|
|
352
|
+
return _context3.finish(23);
|
|
353
|
+
|
|
354
|
+
case 26:
|
|
335
355
|
case "end":
|
|
336
356
|
return _context3.stop();
|
|
337
357
|
}
|
|
338
358
|
}
|
|
339
|
-
}, _callee3, this, [[10,
|
|
359
|
+
}, _callee3, this, [[10, 19, 23, 26]]);
|
|
340
360
|
}));
|
|
341
361
|
|
|
342
362
|
function loadImage(_x3, _x4) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/wms-layer/wms-layer.ts"],"names":["defaultProps","id","data","serviceType","srs","layers","type","compare","value","onMetadataLoad","onMetadataLoadError","console","error","onImageLoadStart","onImageLoad","onImageLoadError","requestId","WMSLayer","state","_nextRequestId","lastRequestId","changeFlags","props","oldProps","viewport","context","dataChanged","imageSource","_createImageSource","_loadMetadata","debounce","loadImage","viewportChanged","bounds","image","lastRequestParameters","BitmapLayer","getSubLayerProps","_imageCoordinateSystem","COORDINATE_SYSTEM","LNGLAT","CARTESIAN","x","y","getFeatureInfoText","query_layers","info_format","featureInfo","ImageSource","url","loadOptions","Error","getMetadata","metadata","getCurrentLayer","reason","length","getBounds","width","height","getRequestId","resolution","requestParams","bbox","minX","minY","maxX","maxY","getImage","setState","raiseError","fn","ms","clearTimeout","_timeoutId","setTimeout","CompositeLayer"],"mappings":"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","sourcesContent":["// deck.gl, MIT license\n// Attributions:\n// Copyright 2022 Foursquare Labs, Inc.\n\n/* eslint-disable camelcase */ // Some WMS parameters are not in camel case\n/* global setTimeout, clearTimeout */\n\nimport {\n Layer,\n CompositeLayer,\n CompositeLayerProps,\n UpdateParameters,\n DefaultProps,\n Viewport,\n COORDINATE_SYSTEM,\n _deepEqual as deepEqual\n} from '@deck.gl/core';\nimport {BitmapLayer} from '@deck.gl/layers';\nimport type {ImageSourceMetadata, ImageType, ImageServiceType} from '@loaders.gl/wms';\nimport {ImageSource, createImageSource} from '@loaders.gl/wms';\nimport {WGS84ToPseudoMercator} from './utils';\n\n/** All props supported by the TileLayer */\nexport type WMSLayerProps = CompositeLayerProps & _WMSLayerProps;\n\n/** Props added by the TileLayer */\ntype _WMSLayerProps = {\n data: string | ImageSource;\n serviceType?: ImageServiceType | 'auto';\n layers?: string[];\n srs?: 'EPSG:4326' | 'EPSG:3857' | 'auto';\n onMetadataLoad?: (metadata: ImageSourceMetadata) => void;\n onMetadataLoadError?: (error: Error) => void;\n onImageLoadStart?: (requestId: unknown) => void;\n onImageLoad?: (requestId: unknown) => void;\n onImageLoadError?: (requestId: unknown, error: Error) => void;\n};\n\nconst defaultProps: DefaultProps<WMSLayerProps> = {\n id: 'imagery-layer',\n data: '',\n serviceType: 'auto',\n srs: 'auto',\n layers: {type: 'array', compare: true, value: []},\n onMetadataLoad: {type: 'function', value: () => {}},\n // eslint-disable-next-line\n onMetadataLoadError: {type: 'function', value: console.error},\n onImageLoadStart: {type: 'function', value: () => {}},\n onImageLoad: {type: 'function', value: () => {}},\n onImageLoadError: {\n type: 'function',\n compare: false,\n // eslint-disable-next-line\n value: (requestId: unknown, error: Error) => console.error(error, requestId)\n }\n};\n\n/**\n * The layer is used in Hex Tile layer in order to properly discard invisible elements during animation\n */\nexport class WMSLayer<ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_WMSLayerProps>\n> {\n static layerName = 'WMSLayer';\n static defaultProps: DefaultProps = defaultProps;\n\n state!: {\n imageSource: ImageSource;\n image: ImageType;\n bounds: [number, number, number, number];\n lastRequestParameters: {\n bbox: [number, number, number, number];\n layers: string[];\n srs: 'EPSG:4326' | 'EPSG:3857';\n width: number;\n height: number;\n };\n lastRequestId: number;\n\n _nextRequestId: number;\n _timeoutId: any;\n };\n\n /** Lets deck.gl know that we want viewport change events */\n override shouldUpdateState(): boolean {\n return true;\n }\n\n override initializeState(): void {\n // intentionally empty, initialization is done in updateState\n this.state._nextRequestId = 0;\n this.state.lastRequestId = -1;\n }\n\n override updateState({changeFlags, props, oldProps}: UpdateParameters<this>): void {\n const {viewport} = this.context;\n\n // Check if data source has changed\n if (changeFlags.dataChanged || props.serviceType !== oldProps.serviceType) {\n this.state.imageSource = this._createImageSource(props);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._loadMetadata();\n this.debounce(() => this.loadImage(viewport, 'image source changed'), 0);\n } else if (!deepEqual(props.layers, oldProps.layers, 1)) {\n this.debounce(() => this.loadImage(viewport, 'layers changed'), 0);\n } else if (changeFlags.viewportChanged) {\n this.debounce(() => this.loadImage(viewport, 'viewport changed'));\n }\n }\n\n override finalizeState(): void {\n // TODO - we could cancel outstanding requests\n }\n\n override renderLayers(): Layer {\n // TODO - which bitmap layer is rendered should depend on the current viewport\n // Currently Studio only uses one viewport\n const {bounds, image, lastRequestParameters} = this.state;\n\n return (\n image &&\n new BitmapLayer({\n ...this.getSubLayerProps({id: 'bitmap'}),\n _imageCoordinateSystem:\n lastRequestParameters.srs === 'EPSG:4326'\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN,\n bounds,\n image\n })\n );\n }\n\n async getFeatureInfoText(x: number, y: number): Promise<string | null> {\n const {lastRequestParameters} = this.state;\n if (lastRequestParameters) {\n // @ts-expect-error Undocumented method\n const featureInfo = await this.state.imageSource.getFeatureInfoText?.({\n ...lastRequestParameters,\n query_layers: lastRequestParameters.layers,\n x,\n y,\n info_format: 'application/vnd.ogc.gml'\n });\n return featureInfo;\n }\n return '';\n }\n\n _createImageSource(props: WMSLayerProps): ImageSource {\n if (props.data instanceof ImageSource) {\n return props.data;\n }\n\n if (typeof props.data === 'string') {\n return createImageSource({\n url: props.data,\n loadOptions: props.loadOptions,\n type: props.serviceType\n });\n }\n\n throw new Error('invalid image source in props.data');\n }\n\n /** Run a getMetadata on the image service */\n async _loadMetadata(): Promise<void> {\n const {imageSource} = this.state;\n try {\n const metadata = await imageSource.getMetadata();\n\n // If a request takes a long time, it may no longer be expected\n if (this.state.imageSource === imageSource) {\n this.getCurrentLayer()?.props.onMetadataLoad(metadata);\n }\n } catch (error) {\n this.getCurrentLayer()?.props.onMetadataLoadError(error as Error);\n }\n }\n\n /** Load an image */\n async loadImage(viewport: Viewport, reason: string): Promise<void> {\n const {layers, serviceType} = this.props;\n\n // TODO - move to ImageSource?\n if (serviceType === 'wms' && layers.length === 0) {\n return;\n }\n\n const bounds = viewport.getBounds();\n const {width, height} = viewport;\n const requestId = this.getRequestId();\n let {srs} = this.props;\n if (srs === 'auto') {\n // BitmapLayer only supports LNGLAT or CARTESIAN (Web-Mercator)\n srs = viewport.resolution ? 'EPSG:4326' : 'EPSG:3857';\n }\n const requestParams = {\n width,\n height,\n bbox: bounds,\n layers,\n srs\n };\n if (srs === 'EPSG:3857') {\n const [minX, minY] = WGS84ToPseudoMercator([bounds[0], bounds[1]]);\n const [maxX, maxY] = WGS84ToPseudoMercator([bounds[2], bounds[3]]);\n requestParams.bbox = [minX, minY, maxX, maxY];\n }\n\n try {\n this.props.onImageLoadStart(requestId);\n\n const image = await this.state.imageSource.getImage(requestParams);\n\n // If a request takes a long time, later requests may have already loaded.\n if (this.state.lastRequestId < requestId) {\n this.getCurrentLayer()?.props.onImageLoad(requestId);\n // Not type safe...\n this.setState({\n image,\n bounds,\n lastRequestParameters: requestParams,\n lastRequestId: requestId\n });\n }\n } catch (error) {\n this.raiseError(error as Error, 'Load image');\n this.getCurrentLayer()?.props.onImageLoadError(requestId, error as Error);\n }\n }\n\n // HELPERS\n\n /** Global counter for issuing unique request ids */\n private getRequestId(): number {\n return this.state._nextRequestId++;\n }\n\n /** Runs an action in the future, cancels it if the new action is issued before it executes */\n private debounce(fn: Function, ms = 500): void {\n clearTimeout(this.state._timeoutId);\n this.state._timeoutId = setTimeout(() => fn(), ms);\n }\n}\n"],"file":"wms-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/wms-layer/wms-layer.ts"],"names":["defaultProps","id","data","serviceType","srs","layers","type","compare","value","onMetadataLoad","onMetadataLoadError","console","error","onImageLoadStart","onImageLoad","onImageLoadError","requestId","WMSLayer","Boolean","state","loadCounter","_nextRequestId","lastRequestId","changeFlags","props","oldProps","viewport","context","dataChanged","imageSource","_createImageSource","_loadMetadata","debounce","loadImage","viewportChanged","bounds","image","lastRequestParameters","BitmapLayer","getSubLayerProps","_imageCoordinateSystem","COORDINATE_SYSTEM","LNGLAT","CARTESIAN","x","y","getFeatureInfoText","query_layers","info_format","featureInfo","ImageSource","url","loadOptions","Error","getMetadata","metadata","getCurrentLayer","reason","length","getBounds","width","height","getRequestId","resolution","requestParams","bbox","minX","minY","maxX","maxY","getImage","setState","raiseError","fn","ms","clearTimeout","_timeoutId","setTimeout","CompositeLayer"],"mappings":"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","sourcesContent":["// deck.gl, MIT license\n// Attributions:\n// Copyright 2022 Foursquare Labs, Inc.\n\n/* eslint-disable camelcase */ // Some WMS parameters are not in camel case\n/* global setTimeout, clearTimeout */\n\nimport {\n Layer,\n CompositeLayer,\n CompositeLayerProps,\n UpdateParameters,\n DefaultProps,\n Viewport,\n COORDINATE_SYSTEM,\n _deepEqual as deepEqual\n} from '@deck.gl/core';\nimport {BitmapLayer} from '@deck.gl/layers';\nimport type {ImageSourceMetadata, ImageType, ImageServiceType} from '@loaders.gl/wms';\nimport {ImageSource, createImageSource} from '@loaders.gl/wms';\nimport {WGS84ToPseudoMercator} from './utils';\n\n/** All props supported by the TileLayer */\nexport type WMSLayerProps = CompositeLayerProps & _WMSLayerProps;\n\n/** Props added by the TileLayer */\ntype _WMSLayerProps = {\n data: string | ImageSource;\n serviceType?: ImageServiceType | 'auto';\n layers?: string[];\n srs?: 'EPSG:4326' | 'EPSG:3857' | 'auto';\n onMetadataLoad?: (metadata: ImageSourceMetadata) => void;\n onMetadataLoadError?: (error: Error) => void;\n onImageLoadStart?: (requestId: unknown) => void;\n onImageLoad?: (requestId: unknown) => void;\n onImageLoadError?: (requestId: unknown, error: Error) => void;\n};\n\nconst defaultProps: DefaultProps<WMSLayerProps> = {\n id: 'imagery-layer',\n data: '',\n serviceType: 'auto',\n srs: 'auto',\n layers: {type: 'array', compare: true, value: []},\n onMetadataLoad: {type: 'function', value: () => {}},\n // eslint-disable-next-line\n onMetadataLoadError: {type: 'function', value: console.error},\n onImageLoadStart: {type: 'function', value: () => {}},\n onImageLoad: {type: 'function', value: () => {}},\n onImageLoadError: {\n type: 'function',\n compare: false,\n // eslint-disable-next-line\n value: (requestId: unknown, error: Error) => console.error(error, requestId)\n }\n};\n\n/**\n * The layer is used in Hex Tile layer in order to properly discard invisible elements during animation\n */\nexport class WMSLayer<ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_WMSLayerProps>\n> {\n static layerName = 'WMSLayer';\n static defaultProps: DefaultProps = defaultProps;\n\n state!: {\n imageSource: ImageSource;\n image: ImageType;\n bounds: [number, number, number, number];\n lastRequestParameters: {\n bbox: [number, number, number, number];\n layers: string[];\n srs: 'EPSG:4326' | 'EPSG:3857';\n width: number;\n height: number;\n };\n lastRequestId: number;\n _nextRequestId: number;\n /** TODO: Change any => setTimeout return type. Different between Node and browser... */\n _timeoutId: any;\n loadCounter: number;\n };\n\n /** Returns true if all async resources are loaded */\n get isLoaded(): boolean {\n // Track the explicit loading done by this layer\n return Boolean(this.state) && this.state.loadCounter === 0 && super.isLoaded;\n }\n\n /** Lets deck.gl know that we want viewport change events */\n override shouldUpdateState(): boolean {\n return true;\n }\n\n override initializeState(): void {\n // intentionally empty, initialization is done in updateState\n this.state._nextRequestId = 0;\n this.state.lastRequestId = -1;\n this.state.loadCounter = 0;\n }\n\n override updateState({changeFlags, props, oldProps}: UpdateParameters<this>): void {\n const {viewport} = this.context;\n\n // Check if data source has changed\n if (changeFlags.dataChanged || props.serviceType !== oldProps.serviceType) {\n this.state.imageSource = this._createImageSource(props);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._loadMetadata();\n this.debounce(() => this.loadImage(viewport, 'image source changed'), 0);\n } else if (!deepEqual(props.layers, oldProps.layers, 1)) {\n this.debounce(() => this.loadImage(viewport, 'layers changed'), 0);\n } else if (changeFlags.viewportChanged) {\n this.debounce(() => this.loadImage(viewport, 'viewport changed'));\n }\n }\n\n override finalizeState(): void {\n // TODO - we could cancel outstanding requests\n }\n\n override renderLayers(): Layer {\n // TODO - which bitmap layer is rendered should depend on the current viewport\n // Currently Studio only uses one viewport\n const {bounds, image, lastRequestParameters} = this.state;\n\n return (\n image &&\n new BitmapLayer({\n ...this.getSubLayerProps({id: 'bitmap'}),\n _imageCoordinateSystem:\n lastRequestParameters.srs === 'EPSG:4326'\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN,\n bounds,\n image\n })\n );\n }\n\n async getFeatureInfoText(x: number, y: number): Promise<string | null> {\n const {lastRequestParameters} = this.state;\n if (lastRequestParameters) {\n // @ts-expect-error Undocumented method\n const featureInfo = await this.state.imageSource.getFeatureInfoText?.({\n ...lastRequestParameters,\n query_layers: lastRequestParameters.layers,\n x,\n y,\n info_format: 'application/vnd.ogc.gml'\n });\n return featureInfo;\n }\n return '';\n }\n\n _createImageSource(props: WMSLayerProps): ImageSource {\n if (props.data instanceof ImageSource) {\n return props.data;\n }\n\n if (typeof props.data === 'string') {\n return createImageSource({\n url: props.data,\n loadOptions: props.loadOptions,\n type: props.serviceType\n });\n }\n\n throw new Error('invalid image source in props.data');\n }\n\n /** Run a getMetadata on the image service */\n async _loadMetadata(): Promise<void> {\n const {imageSource} = this.state;\n try {\n this.state.loadCounter++;\n const metadata = await imageSource.getMetadata();\n\n // If a request takes a long time, it may no longer be expected\n if (this.state.imageSource === imageSource) {\n this.getCurrentLayer()?.props.onMetadataLoad(metadata);\n }\n } catch (error) {\n this.getCurrentLayer()?.props.onMetadataLoadError(error as Error);\n } finally {\n this.state.loadCounter--;\n }\n }\n\n /** Load an image */\n async loadImage(viewport: Viewport, reason: string): Promise<void> {\n const {layers, serviceType} = this.props;\n\n // TODO - move to ImageSource?\n if (serviceType === 'wms' && layers.length === 0) {\n return;\n }\n\n const bounds = viewport.getBounds();\n const {width, height} = viewport;\n const requestId = this.getRequestId();\n let {srs} = this.props;\n if (srs === 'auto') {\n // BitmapLayer only supports LNGLAT or CARTESIAN (Web-Mercator)\n srs = viewport.resolution ? 'EPSG:4326' : 'EPSG:3857';\n }\n const requestParams = {\n width,\n height,\n bbox: bounds,\n layers,\n srs\n };\n if (srs === 'EPSG:3857') {\n const [minX, minY] = WGS84ToPseudoMercator([bounds[0], bounds[1]]);\n const [maxX, maxY] = WGS84ToPseudoMercator([bounds[2], bounds[3]]);\n requestParams.bbox = [minX, minY, maxX, maxY];\n }\n\n try {\n this.state.loadCounter++;\n this.props.onImageLoadStart(requestId);\n\n const image = await this.state.imageSource.getImage(requestParams);\n\n // If a request takes a long time, later requests may have already loaded.\n if (this.state.lastRequestId < requestId) {\n this.getCurrentLayer()?.props.onImageLoad(requestId);\n // Not type safe...\n this.setState({\n image,\n bounds,\n lastRequestParameters: requestParams,\n lastRequestId: requestId\n });\n }\n } catch (error) {\n this.raiseError(error as Error, 'Load image');\n this.getCurrentLayer()?.props.onImageLoadError(requestId, error as Error);\n } finally {\n this.state.loadCounter--;\n }\n }\n\n // HELPERS\n\n /** Global counter for issuing unique request ids */\n private getRequestId(): number {\n return this.state._nextRequestId++;\n }\n\n /** Runs an action in the future, cancels it if the new action is issued before it executes */\n private debounce(fn: Function, ms = 500): void {\n clearTimeout(this.state._timeoutId);\n this.state._timeoutId = setTimeout(() => fn(), ms);\n }\n}\n"],"file":"wms-layer.js"}
|
|
@@ -19,12 +19,12 @@ export class Tile2DHeader {
|
|
|
19
19
|
|
|
20
20
|
_defineProperty(this, "id", void 0);
|
|
21
21
|
|
|
22
|
-
_defineProperty(this, "bbox", void 0);
|
|
23
|
-
|
|
24
22
|
_defineProperty(this, "zoom", void 0);
|
|
25
23
|
|
|
26
24
|
_defineProperty(this, "userData", void 0);
|
|
27
25
|
|
|
26
|
+
_defineProperty(this, "boundingBox", void 0);
|
|
27
|
+
|
|
28
28
|
_defineProperty(this, "_abortController", void 0);
|
|
29
29
|
|
|
30
30
|
_defineProperty(this, "_loader", void 0);
|
|
@@ -37,6 +37,8 @@ export class Tile2DHeader {
|
|
|
37
37
|
|
|
38
38
|
_defineProperty(this, "_needsReload", void 0);
|
|
39
39
|
|
|
40
|
+
_defineProperty(this, "_bbox", void 0);
|
|
41
|
+
|
|
40
42
|
this.index = index;
|
|
41
43
|
this.isVisible = false;
|
|
42
44
|
this.isSelected = false;
|
|
@@ -51,6 +53,21 @@ export class Tile2DHeader {
|
|
|
51
53
|
this._needsReload = false;
|
|
52
54
|
}
|
|
53
55
|
|
|
56
|
+
get bbox() {
|
|
57
|
+
return this._bbox;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
set bbox(value) {
|
|
61
|
+
if (this._bbox) return;
|
|
62
|
+
this._bbox = value;
|
|
63
|
+
|
|
64
|
+
if ('west' in value) {
|
|
65
|
+
this.boundingBox = [[value.west, value.south], [value.east, value.north]];
|
|
66
|
+
} else {
|
|
67
|
+
this.boundingBox = [[value.left, value.top], [value.right, value.bottom]];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
54
71
|
get data() {
|
|
55
72
|
return this.isLoading && this._loader ? this._loader.then(() => this.data) : this.content;
|
|
56
73
|
}
|