@vcmap/core 6.3.0-rc.1 → 6.3.0-rc.2
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/cesium.d.ts +12 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/ol.d.ts +13 -2
- package/dist/src/cesium/cesium3DTileFeature.d.ts +1 -0
- package/dist/src/cesium/cesium3DTileFeature.js +16 -3
- package/dist/src/cesium/cesium3DTileFeature.js.map +1 -1
- package/dist/src/cesium/cesium3DTilePointFeature.js +2 -1
- package/dist/src/cesium/cesium3DTilePointFeature.js.map +1 -1
- package/dist/src/classRegistry.d.ts +7 -1
- package/dist/src/classRegistry.js.map +1 -1
- package/dist/src/featureProvider/abstractAttributeProvider.d.ts +62 -0
- package/dist/src/featureProvider/abstractAttributeProvider.js +129 -0
- package/dist/src/featureProvider/abstractAttributeProvider.js.map +1 -0
- package/dist/src/featureProvider/abstractFeatureProvider.d.ts +9 -18
- package/dist/src/featureProvider/abstractFeatureProvider.js +7 -38
- package/dist/src/featureProvider/abstractFeatureProvider.js.map +1 -1
- package/dist/src/featureProvider/compositeFeatureProvider.d.ts +27 -0
- package/dist/src/featureProvider/compositeFeatureProvider.js +53 -0
- package/dist/src/featureProvider/compositeFeatureProvider.js.map +1 -0
- package/dist/src/featureProvider/csvAttributeProvider.d.ts +41 -0
- package/dist/src/featureProvider/csvAttributeProvider.js +126 -0
- package/dist/src/featureProvider/csvAttributeProvider.js.map +1 -0
- package/dist/src/featureProvider/featureProviderFactory.d.ts +3 -0
- package/dist/src/featureProvider/featureProviderFactory.js +17 -0
- package/dist/src/featureProvider/featureProviderFactory.js.map +1 -0
- package/dist/src/featureProvider/i3sAttributeProvider.d.ts +7 -0
- package/dist/src/featureProvider/i3sAttributeProvider.js +43 -0
- package/dist/src/featureProvider/i3sAttributeProvider.js.map +1 -0
- package/dist/src/featureProvider/jsonAttributeProvider.d.ts +26 -0
- package/dist/src/featureProvider/jsonAttributeProvider.js +73 -0
- package/dist/src/featureProvider/jsonAttributeProvider.js.map +1 -0
- package/dist/src/featureProvider/tileProviderFeatureProvider.d.ts +4 -6
- package/dist/src/featureProvider/tileProviderFeatureProvider.js +9 -11
- package/dist/src/featureProvider/tileProviderFeatureProvider.js.map +1 -1
- package/dist/src/featureProvider/urlIdAttributeProvider.d.ts +28 -0
- package/dist/src/featureProvider/urlIdAttributeProvider.js +50 -0
- package/dist/src/featureProvider/urlIdAttributeProvider.js.map +1 -0
- package/dist/src/featureProvider/wmsFeatureProvider.d.ts +12 -3
- package/dist/src/featureProvider/wmsFeatureProvider.js +17 -6
- package/dist/src/featureProvider/wmsFeatureProvider.js.map +1 -1
- package/dist/src/interaction/featureAtPixelInteraction.d.ts +15 -3
- package/dist/src/interaction/featureAtPixelInteraction.js +41 -1
- package/dist/src/interaction/featureAtPixelInteraction.js.map +1 -1
- package/dist/src/interaction/featureProviderInteraction.js +42 -26
- package/dist/src/interaction/featureProviderInteraction.js.map +1 -1
- package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.d.ts +14 -5
- package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js +243 -128
- package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js.map +1 -1
- package/dist/src/layer/cesium/i3sCesiumImpl.d.ts +33 -0
- package/dist/src/layer/cesium/i3sCesiumImpl.js +107 -0
- package/dist/src/layer/cesium/i3sCesiumImpl.js.map +1 -0
- package/dist/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.js +2 -1
- package/dist/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.js.map +1 -1
- package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js +7 -6
- package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js.map +1 -1
- package/dist/src/layer/cesium/vectorTileImageryProvider.js +2 -2
- package/dist/src/layer/cesium/vectorTileImageryProvider.js.map +1 -1
- package/dist/src/layer/cesiumTilesetLayer.d.ts +9 -0
- package/dist/src/layer/cesiumTilesetLayer.js +26 -1
- package/dist/src/layer/cesiumTilesetLayer.js.map +1 -1
- package/dist/src/layer/i3sLayer.d.ts +80 -0
- package/dist/src/layer/i3sLayer.js +242 -0
- package/dist/src/layer/i3sLayer.js.map +1 -0
- package/dist/src/layer/layer.d.ts +8 -3
- package/dist/src/layer/layer.js +7 -1
- package/dist/src/layer/layer.js.map +1 -1
- package/dist/src/layer/layerSymbols.d.ts +4 -0
- package/dist/src/layer/layerSymbols.js +4 -0
- package/dist/src/layer/layerSymbols.js.map +1 -1
- package/dist/src/layer/panoramaDatasetLayer.d.ts +2 -0
- package/dist/src/layer/panoramaDatasetLayer.js +33 -13
- package/dist/src/layer/panoramaDatasetLayer.js.map +1 -1
- package/dist/src/layer/tileProvider/flatGeobufTileProvider.js +3 -2
- package/dist/src/layer/tileProvider/flatGeobufTileProvider.js.map +1 -1
- package/dist/src/layer/tileProvider/mvtTileProvider.js +3 -2
- package/dist/src/layer/tileProvider/mvtTileProvider.js.map +1 -1
- package/dist/src/layer/tileProvider/tileProvider.d.ts +6 -0
- package/dist/src/layer/tileProvider/tileProvider.js +12 -1
- package/dist/src/layer/tileProvider/tileProvider.js.map +1 -1
- package/dist/src/layer/vectorLayer.js +2 -2
- package/dist/src/layer/vectorLayer.js.map +1 -1
- package/dist/src/layer/vectorProperties.js +10 -1
- package/dist/src/layer/vectorProperties.js.map +1 -1
- package/dist/src/layer/vectorTileLayer.d.ts +14 -5
- package/dist/src/layer/vectorTileLayer.js +78 -26
- package/dist/src/layer/vectorTileLayer.js.map +1 -1
- package/dist/src/layer/wmsLayer.d.ts +3 -0
- package/dist/src/layer/wmsLayer.js +62 -32
- package/dist/src/layer/wmsLayer.js.map +1 -1
- package/dist/src/map/baseCesiumMap.d.ts +4 -4
- package/dist/src/map/baseCesiumMap.js +12 -0
- package/dist/src/map/baseCesiumMap.js.map +1 -1
- package/dist/src/map/cesiumMap.js +0 -11
- package/dist/src/map/cesiumMap.js.map +1 -1
- package/dist/src/map/obliqueMap.js +11 -4
- package/dist/src/map/obliqueMap.js.map +1 -1
- package/dist/src/map/panoramaMap.js +1 -1
- package/dist/src/panorama/panoramaImage.js +6 -5
- package/dist/src/panorama/panoramaImage.js.map +1 -1
- package/dist/src/style/declarativeStyleItem.js +7 -8
- package/dist/src/style/declarativeStyleItem.js.map +1 -1
- package/dist/src/util/fetch.d.ts +7 -0
- package/dist/src/util/fetch.js +7 -0
- package/dist/src/util/fetch.js.map +1 -1
- package/dist/src/vcsApp.d.ts +2 -3
- package/dist/src/vcsApp.js.map +1 -1
- package/dist/src/vcsModuleHelpers.d.ts +5 -2
- package/dist/src/vcsModuleHelpers.js +27 -1
- package/dist/src/vcsModuleHelpers.js.map +1 -1
- package/dist/tests/unit/helpers/cesiumHelpers.js +7 -1
- package/dist/tests/unit/helpers/cesiumHelpers.js.map +1 -1
- package/index.ts +27 -0
- package/package.json +2 -2
- package/src/cesium/cesium.d.ts +12 -0
- package/src/cesium/cesium3DTileFeature.ts +25 -3
- package/src/cesium/cesium3DTilePointFeature.ts +3 -1
- package/src/classRegistry.ts +8 -3
- package/src/featureProvider/abstractAttributeProvider.ts +201 -0
- package/src/featureProvider/abstractFeatureProvider.ts +27 -47
- package/src/featureProvider/compositeFeatureProvider.ts +103 -0
- package/src/featureProvider/csvAttributeProvider.ts +186 -0
- package/src/featureProvider/featureProviderFactory.ts +31 -0
- package/src/featureProvider/i3sAttributeProvider.ts +60 -0
- package/src/featureProvider/jsonAttributeProvider.ts +109 -0
- package/src/featureProvider/tileProviderFeatureProvider.ts +13 -14
- package/src/featureProvider/urlIdAttributeProvider.ts +82 -0
- package/src/featureProvider/wmsFeatureProvider.ts +24 -7
- package/src/global.d.ts +2 -0
- package/src/interaction/featureAtPixelInteraction.ts +53 -3
- package/src/interaction/featureProviderInteraction.ts +59 -38
- package/src/layer/cesium/cesiumTilesetCesiumImpl.ts +296 -157
- package/src/layer/cesium/i3sCesiumImpl.ts +141 -0
- package/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.ts +4 -3
- package/src/layer/cesium/vectorRasterTileCesiumImpl.ts +7 -6
- package/src/layer/cesium/vectorTileImageryProvider.ts +2 -2
- package/src/layer/cesiumTilesetLayer.ts +51 -1
- package/src/layer/i3sLayer.ts +343 -0
- package/src/layer/layer.ts +30 -3
- package/src/layer/layerSymbols.ts +5 -0
- package/src/layer/panoramaDatasetLayer.ts +44 -13
- package/src/layer/tileProvider/flatGeobufTileProvider.ts +3 -2
- package/src/layer/tileProvider/mvtTileProvider.ts +3 -2
- package/src/layer/tileProvider/tileProvider.ts +13 -1
- package/src/layer/vectorLayer.ts +4 -2
- package/src/layer/vectorProperties.ts +10 -1
- package/src/layer/vectorTileLayer.ts +135 -47
- package/src/layer/wmsLayer.ts +77 -44
- package/src/map/baseCesiumMap.ts +29 -5
- package/src/map/cesiumMap.ts +0 -15
- package/src/map/obliqueMap.ts +13 -6
- package/src/map/panoramaMap.ts +1 -1
- package/src/ol/ol.d.ts +13 -2
- package/src/panorama/panoramaImage.ts +8 -5
- package/src/style/declarativeStyleItem.ts +7 -9
- package/src/util/fetch.ts +7 -0
- package/src/vcsApp.ts +7 -8
- package/src/vcsModuleHelpers.ts +62 -4
package/src/map/cesiumMap.ts
CHANGED
|
@@ -423,10 +423,6 @@ class CesiumMap extends BaseCesiumMap {
|
|
|
423
423
|
dataSourceCollection: new DataSourceCollection(),
|
|
424
424
|
});
|
|
425
425
|
|
|
426
|
-
cesiumWidget.scene.frameState.creditDisplay.update = (): void => {};
|
|
427
|
-
cesiumWidget.scene.frameState.creditDisplay.beginFrame = (): void => {};
|
|
428
|
-
cesiumWidget.scene.frameState.creditDisplay.endFrame = (): void => {};
|
|
429
|
-
|
|
430
426
|
const { clock } = cesiumWidget;
|
|
431
427
|
clock.shouldAnimate = true;
|
|
432
428
|
this._listeners.push(
|
|
@@ -447,17 +443,6 @@ class CesiumMap extends BaseCesiumMap {
|
|
|
447
443
|
|
|
448
444
|
cesiumWidget.scene.globe.enableLighting = this.enableLightning;
|
|
449
445
|
|
|
450
|
-
// hide default cesium credits container
|
|
451
|
-
const creditsContainer = document.getElementsByClassName(
|
|
452
|
-
'cesium-widget-credits',
|
|
453
|
-
);
|
|
454
|
-
if (creditsContainer) {
|
|
455
|
-
for (let i = 0; i < creditsContainer.length; i++) {
|
|
456
|
-
const element = creditsContainer[i] as HTMLElement;
|
|
457
|
-
element.style.display = 'none';
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
|
|
461
446
|
this.initialized = true;
|
|
462
447
|
this._initializeCesiumWidget(cesiumWidget);
|
|
463
448
|
|
package/src/map/obliqueMap.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { boundingExtent, containsXY } from 'ol/extent.js';
|
|
|
2
2
|
import { getTransform, transform, transformExtent } from 'ol/proj.js';
|
|
3
3
|
import type { Map as OLMap } from 'ol';
|
|
4
4
|
import type { Coordinate } from 'ol/coordinate.js';
|
|
5
|
-
|
|
6
5
|
import { check } from '@vcsuite/check';
|
|
7
6
|
import { parseBoolean, parseNumber } from '@vcsuite/parsers';
|
|
8
7
|
import Extent from '../util/extent.js';
|
|
@@ -427,15 +426,23 @@ class ObliqueMap extends BaseOLMap {
|
|
|
427
426
|
const visibleMapUnits = resolution * size.height;
|
|
428
427
|
const visibleMeters = visibleMapUnits * metersPerUnit;
|
|
429
428
|
const height = Math.abs(visibleMeters / 2 / Math.tan(fovy / 2));
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
429
|
+
let pitch = -90;
|
|
430
|
+
if (image.projectionCenter) {
|
|
431
|
+
const verticalDistance = image.projectionCenter.z - image.averageHeight;
|
|
432
|
+
const horizontalDistance = Math.sqrt(
|
|
433
|
+
(image.projectionCenter.x - image.centerPointOnGround[0]) ** 2 +
|
|
434
|
+
(image.projectionCenter.y - image.centerPointOnGround[1]) ** 2,
|
|
435
|
+
);
|
|
436
|
+
if (horizontalDistance > 0) {
|
|
437
|
+
pitch =
|
|
438
|
+
-Math.atan(verticalDistance / horizontalDistance) * (180 / Math.PI);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
433
441
|
|
|
434
442
|
return new Viewpoint({
|
|
435
|
-
cameraPosition: [groundPosition[0], groundPosition[1], cameraHeight],
|
|
436
443
|
groundPosition,
|
|
437
444
|
heading: defaultHeadings[image.viewDirection],
|
|
438
|
-
pitch
|
|
445
|
+
pitch,
|
|
439
446
|
roll: 0,
|
|
440
447
|
distance: height,
|
|
441
448
|
});
|
package/src/map/panoramaMap.ts
CHANGED
|
@@ -165,7 +165,7 @@ export default class PanoramaMap extends BaseCesiumMap {
|
|
|
165
165
|
cesiumWidget.scene.primitives.destroyPrimitives = false;
|
|
166
166
|
|
|
167
167
|
cesiumWidget.scene.highDynamicRange = true;
|
|
168
|
-
cesiumWidget.scene.gamma =
|
|
168
|
+
cesiumWidget.scene.gamma = 2.2;
|
|
169
169
|
|
|
170
170
|
this.initialized = true;
|
|
171
171
|
this._initializeCesiumWidget(cesiumWidget);
|
package/src/ol/ol.d.ts
CHANGED
|
@@ -3,7 +3,14 @@
|
|
|
3
3
|
* Type overrides for types extended by the @vcmap/core API
|
|
4
4
|
*/
|
|
5
5
|
import type CanvasImmediateRenderer from 'ol/render/canvas/Immediate.js';
|
|
6
|
-
import type {
|
|
6
|
+
import type {
|
|
7
|
+
Billboard,
|
|
8
|
+
Cartesian3,
|
|
9
|
+
Color,
|
|
10
|
+
Entity,
|
|
11
|
+
I3SNode,
|
|
12
|
+
Label,
|
|
13
|
+
} from '@vcmap-cesium/engine';
|
|
7
14
|
import type { StyleLike } from 'ol/style/Style.js';
|
|
8
15
|
import type { vectorStyleSymbol } from '../style/vectorStyleItem.js';
|
|
9
16
|
import type VectorStyleItem from '../style/vectorStyleItem.js';
|
|
@@ -19,7 +26,7 @@ import type {
|
|
|
19
26
|
panoramaFeature,
|
|
20
27
|
primitives,
|
|
21
28
|
} from '../layer/vectorSymbols.js';
|
|
22
|
-
import type { vcsLayerName } from '../layer/layerSymbols.js';
|
|
29
|
+
import type { i3sData, vcsLayerName } from '../layer/layerSymbols.js';
|
|
23
30
|
import type {
|
|
24
31
|
isProvidedFeature,
|
|
25
32
|
isProvidedClusterFeature,
|
|
@@ -50,6 +57,7 @@ import type { vectorClusterGroupName } from '../vectorCluster/vectorClusterSymbo
|
|
|
50
57
|
import type { PrimitiveType } from '../util/featureconverter/convert.js';
|
|
51
58
|
|
|
52
59
|
import { PanoramaDatasetFeatureProperties } from '../layer/panoramaDatasetLayer.js';
|
|
60
|
+
import { attributeProviderName } from '../featureProvider/abstractAttributeProvider.js';
|
|
53
61
|
|
|
54
62
|
declare module 'ol/geom.js' {
|
|
55
63
|
interface Geometry {
|
|
@@ -110,6 +118,8 @@ declare module 'ol/index.js' {
|
|
|
110
118
|
[featureArcStruct]?: ArcStruct;
|
|
111
119
|
[isProvidedFeature]?: boolean;
|
|
112
120
|
[isProvidedClusterFeature]?: boolean;
|
|
121
|
+
/** Is set in `featureAtPixelInteraction` to be used in `i3sAttributeProvider`; both properties are required to get I3S features */
|
|
122
|
+
[i3sData]?: { i3sNode: I3SNode; cartesianPosition?: Cartesian3 };
|
|
113
123
|
[globalHidden]?: boolean;
|
|
114
124
|
[hidden]?: boolean;
|
|
115
125
|
[highlighted]?: VectorStyleItem;
|
|
@@ -125,6 +135,7 @@ declare module 'ol/index.js' {
|
|
|
125
135
|
[vectorClusterGroupName]?: string;
|
|
126
136
|
[primitives]?: (PrimitiveType | Label | Billboard | Entity)[];
|
|
127
137
|
[panoramaFeature]?: PanoramaDatasetFeatureProperties;
|
|
138
|
+
[attributeProviderName]?: string;
|
|
128
139
|
}
|
|
129
140
|
|
|
130
141
|
class CanvasTileRenderer extends CanvasImmediateRenderer {
|
|
@@ -312,7 +312,7 @@ function parseRgbUrl(imageUrl: string): {
|
|
|
312
312
|
if (!fileName || !fileName.endsWith('_rgb.tif')) {
|
|
313
313
|
throw new Error('Invalid image url');
|
|
314
314
|
}
|
|
315
|
-
const name = fileName.slice(0, -8);
|
|
315
|
+
const name = decodeURIComponent(fileName.slice(0, -8));
|
|
316
316
|
|
|
317
317
|
return {
|
|
318
318
|
name,
|
|
@@ -367,11 +367,14 @@ export async function createPanoramaImage(
|
|
|
367
367
|
);
|
|
368
368
|
|
|
369
369
|
let getIntensityImages: (() => Promise<GeoTIFFImage[]>) | undefined;
|
|
370
|
-
if (intensityImage || (hasIntensity && absoluteRootUrl)) {
|
|
370
|
+
if (intensityImage || (hasIntensity && absoluteRootUrl && name)) {
|
|
371
371
|
getIntensityImages = async (): Promise<GeoTIFFImage[]> => {
|
|
372
372
|
const usedIntensityImage =
|
|
373
373
|
intensityImage ??
|
|
374
|
-
(await fromUrl(
|
|
374
|
+
(await fromUrl(
|
|
375
|
+
new URL(`${encodeURIComponent(name!)}_intensity.tif`, absoluteRootUrl)
|
|
376
|
+
.href,
|
|
377
|
+
));
|
|
375
378
|
|
|
376
379
|
const {
|
|
377
380
|
images: intensity,
|
|
@@ -398,10 +401,10 @@ export async function createPanoramaImage(
|
|
|
398
401
|
| undefined;
|
|
399
402
|
|
|
400
403
|
let usedDepthImage = depthImage;
|
|
401
|
-
if (!usedDepthImage && hasDepth && absoluteRootUrl) {
|
|
404
|
+
if (!usedDepthImage && hasDepth && absoluteRootUrl && name) {
|
|
402
405
|
try {
|
|
403
406
|
usedDepthImage = await fromUrl(
|
|
404
|
-
new URL(`${name}_depth.tif`, absoluteRootUrl).href,
|
|
407
|
+
new URL(`${encodeURIComponent(name)}_depth.tif`, absoluteRootUrl).href,
|
|
405
408
|
);
|
|
406
409
|
} catch (e) {
|
|
407
410
|
getLogger('PanoramaImage').warning(
|
|
@@ -55,8 +55,6 @@ export type DeclarativeStyleItemOptions = StyleItemOptions & {
|
|
|
55
55
|
declarativeStyle?: DeclarativeStyleOptions;
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
const scratchColor = new Color();
|
|
59
|
-
|
|
60
58
|
const defaultText = new OLText({
|
|
61
59
|
font: '30px sans-serif',
|
|
62
60
|
fill: new Fill({ color: whiteColor }),
|
|
@@ -205,7 +203,7 @@ class DeclarativeStyleItem extends StyleItem {
|
|
|
205
203
|
private _stylePolygon(feature: Feature): Style {
|
|
206
204
|
const style = new Style({});
|
|
207
205
|
const color = this.cesiumStyle.color
|
|
208
|
-
? this.cesiumStyle.color.evaluate<Color>(feature,
|
|
206
|
+
? this.cesiumStyle.color.evaluate<Color>(feature, new Color())
|
|
209
207
|
: Color.WHITE;
|
|
210
208
|
if (color) {
|
|
211
209
|
style.setFill(
|
|
@@ -223,7 +221,7 @@ class DeclarativeStyleItem extends StyleItem {
|
|
|
223
221
|
const style = new Style({});
|
|
224
222
|
const isExtruded = !!feature.get('olcs_extrudedHeight');
|
|
225
223
|
const color = this.cesiumStyle.color
|
|
226
|
-
? this.cesiumStyle.color.evaluate<Color>(feature,
|
|
224
|
+
? this.cesiumStyle.color.evaluate<Color>(feature, new Color())
|
|
227
225
|
: Color.WHITE;
|
|
228
226
|
if (color) {
|
|
229
227
|
if (isExtruded) {
|
|
@@ -269,7 +267,7 @@ class DeclarativeStyleItem extends StyleItem {
|
|
|
269
267
|
if (this.cesiumStyle.labelColor) {
|
|
270
268
|
const textColor = this.cesiumStyle.labelColor.evaluateColor(
|
|
271
269
|
feature,
|
|
272
|
-
|
|
270
|
+
new Color(),
|
|
273
271
|
);
|
|
274
272
|
if (textColor) {
|
|
275
273
|
textStyle.getFill()!.setColor(cesiumColorToColor(textColor));
|
|
@@ -279,7 +277,7 @@ class DeclarativeStyleItem extends StyleItem {
|
|
|
279
277
|
const outlineColor =
|
|
280
278
|
this.cesiumStyle.labelOutlineColor.evaluate<Color>(
|
|
281
279
|
feature,
|
|
282
|
-
|
|
280
|
+
new Color(),
|
|
283
281
|
);
|
|
284
282
|
if (outlineColor) {
|
|
285
283
|
const outlineWidth = this.cesiumStyle.labelOutlineWidth
|
|
@@ -314,7 +312,7 @@ class DeclarativeStyleItem extends StyleItem {
|
|
|
314
312
|
}
|
|
315
313
|
} else {
|
|
316
314
|
const color =
|
|
317
|
-
this.cesiumStyle.color?.evaluate<Color>(feature,
|
|
315
|
+
this.cesiumStyle.color?.evaluate<Color>(feature, new Color()) ??
|
|
318
316
|
Color.WHITE;
|
|
319
317
|
|
|
320
318
|
let radius = 4;
|
|
@@ -330,7 +328,7 @@ class DeclarativeStyleItem extends StyleItem {
|
|
|
330
328
|
if (this.cesiumStyle.pointOutlineColor) {
|
|
331
329
|
pointOutlineColor = this.cesiumStyle.pointOutlineColor.evaluateColor(
|
|
332
330
|
feature,
|
|
333
|
-
|
|
331
|
+
new Color(),
|
|
334
332
|
);
|
|
335
333
|
}
|
|
336
334
|
radius += width / 2;
|
|
@@ -372,7 +370,7 @@ class DeclarativeStyleItem extends StyleItem {
|
|
|
372
370
|
if (this.cesiumStyle.strokeColor) {
|
|
373
371
|
const strokeColor = this.cesiumStyle.strokeColor.evaluateColor(
|
|
374
372
|
feature,
|
|
375
|
-
|
|
373
|
+
new Color(),
|
|
376
374
|
);
|
|
377
375
|
if (strokeColor) {
|
|
378
376
|
const strokeWidth = this.cesiumStyle.strokeWidth
|
package/src/util/fetch.ts
CHANGED
|
@@ -38,6 +38,13 @@ export async function requestObjectUrl(
|
|
|
38
38
|
return URL.createObjectURL(blob);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Get a RequestInit object for the given url, adding optional headers. If the url is in the
|
|
43
|
+
* TrustedServers {@see https://cesium.com/learn/cesiumjs/ref-doc/TrustedServers.html?classFilter=Trusted}
|
|
44
|
+
* credentials will be included in the request.
|
|
45
|
+
* @param url
|
|
46
|
+
* @param headers
|
|
47
|
+
*/
|
|
41
48
|
export function getInitForUrl(
|
|
42
49
|
url: string,
|
|
43
50
|
headers?: Record<string, string>,
|
package/src/vcsApp.ts
CHANGED
|
@@ -29,7 +29,11 @@ import VcsEvent from './vcsEvent.js';
|
|
|
29
29
|
import { setDefaultProjectionOptions } from './util/projection.js';
|
|
30
30
|
import ObliqueMap from './map/obliqueMap.js';
|
|
31
31
|
import OverrideClassRegistry from './overrideClassRegistry.js';
|
|
32
|
-
import type {
|
|
32
|
+
import type {
|
|
33
|
+
AbstractCtor,
|
|
34
|
+
CtorType,
|
|
35
|
+
FeatureProviderClass,
|
|
36
|
+
} from './classRegistry.js';
|
|
33
37
|
import ClassRegistry, {
|
|
34
38
|
categoryClassRegistry,
|
|
35
39
|
featureProviderClassRegistry,
|
|
@@ -44,7 +48,6 @@ import { moduleIdSymbol } from './moduleIdSymbol.js';
|
|
|
44
48
|
import type LayerCollection from './util/layerCollection.js';
|
|
45
49
|
import type Category from './category/category.js';
|
|
46
50
|
import type TileProvider from './layer/tileProvider/tileProvider.js';
|
|
47
|
-
import type AbstractFeatureProvider from './featureProvider/abstractFeatureProvider.js';
|
|
48
51
|
import type { HiddenObject } from './util/hiddenObjects.js';
|
|
49
52
|
import { createHiddenObjectsCollection } from './util/hiddenObjects.js';
|
|
50
53
|
import type { FlightInstanceOptions } from './util/flight/flightInstance.js';
|
|
@@ -155,9 +158,7 @@ class VcsApp {
|
|
|
155
158
|
typeof TileProvider
|
|
156
159
|
>;
|
|
157
160
|
|
|
158
|
-
private _featureProviderClassRegistry: OverrideClassRegistry<
|
|
159
|
-
typeof AbstractFeatureProvider
|
|
160
|
-
>;
|
|
161
|
+
private _featureProviderClassRegistry: OverrideClassRegistry<FeatureProviderClass>;
|
|
161
162
|
|
|
162
163
|
/**
|
|
163
164
|
* @param options
|
|
@@ -402,9 +403,7 @@ class VcsApp {
|
|
|
402
403
|
return this._tileProviderClassRegistry;
|
|
403
404
|
}
|
|
404
405
|
|
|
405
|
-
get featureProviderClassRegistry(): OverrideClassRegistry<
|
|
406
|
-
typeof AbstractFeatureProvider
|
|
407
|
-
> {
|
|
406
|
+
get featureProviderClassRegistry(): OverrideClassRegistry<FeatureProviderClass> {
|
|
408
407
|
return this._featureProviderClassRegistry;
|
|
409
408
|
}
|
|
410
409
|
|
package/src/vcsModuleHelpers.ts
CHANGED
|
@@ -11,8 +11,19 @@ import type {
|
|
|
11
11
|
StyleItemOptions,
|
|
12
12
|
} from './style/styleItem.js';
|
|
13
13
|
import type { TileProviderOptions } from './layer/tileProvider/tileProvider.js';
|
|
14
|
-
import type {
|
|
14
|
+
import type {
|
|
15
|
+
// eslint-disable-next-line import/no-named-default
|
|
16
|
+
default as AbstractFeatureProvider,
|
|
17
|
+
AbstractFeatureProviderOptions,
|
|
18
|
+
} from './featureProvider/abstractFeatureProvider.js';
|
|
15
19
|
import type VcsApp from './vcsApp.js';
|
|
20
|
+
import type { CompositeFeatureProviderOptions } from './featureProvider/compositeFeatureProvider.js';
|
|
21
|
+
import CompositeFeatureProvider from './featureProvider/compositeFeatureProvider.js';
|
|
22
|
+
import type {
|
|
23
|
+
// eslint-disable-next-line import/no-named-default
|
|
24
|
+
default as AbstractAttributeProvider,
|
|
25
|
+
AbstractAttributeProviderOptions,
|
|
26
|
+
} from './featureProvider/abstractAttributeProvider.js';
|
|
16
27
|
|
|
17
28
|
function getLogger(): Logger {
|
|
18
29
|
return getLoggerByName('init');
|
|
@@ -22,7 +33,7 @@ export type ModuleLayerOptions = LayerOptions & {
|
|
|
22
33
|
style?: string | StyleItemOptions;
|
|
23
34
|
highlightStyle?: string | StyleItemOptions;
|
|
24
35
|
tileProvider?: TileProviderOptions;
|
|
25
|
-
|
|
36
|
+
attributeProvider?: AbstractAttributeProviderOptions;
|
|
26
37
|
};
|
|
27
38
|
|
|
28
39
|
export function deserializeMap(
|
|
@@ -48,6 +59,44 @@ export function deserializeViewpoint(
|
|
|
48
59
|
return null;
|
|
49
60
|
}
|
|
50
61
|
|
|
62
|
+
export function deserializeFeatureProvider(
|
|
63
|
+
vcsApp: VcsApp,
|
|
64
|
+
options:
|
|
65
|
+
| AbstractFeatureProviderOptions
|
|
66
|
+
| CompositeFeatureProviderOptions
|
|
67
|
+
| AbstractAttributeProviderOptions,
|
|
68
|
+
): AbstractAttributeProvider | AbstractFeatureProvider | null {
|
|
69
|
+
if (options.type === CompositeFeatureProvider.className) {
|
|
70
|
+
const {
|
|
71
|
+
featureProviders: featureProviderOptions,
|
|
72
|
+
attributeProviders: attributeProviderOptions,
|
|
73
|
+
} = options as CompositeFeatureProviderOptions;
|
|
74
|
+
|
|
75
|
+
const featureProviders = featureProviderOptions
|
|
76
|
+
.map((fpConfig) => deserializeFeatureProvider(vcsApp, fpConfig))
|
|
77
|
+
.filter((fp): fp is AbstractFeatureProvider => !!fp);
|
|
78
|
+
|
|
79
|
+
const attributeProviders = attributeProviderOptions
|
|
80
|
+
.map((apConfig) => deserializeFeatureProvider(vcsApp, apConfig))
|
|
81
|
+
.filter((ap): ap is AbstractAttributeProvider => !!ap);
|
|
82
|
+
|
|
83
|
+
return new CompositeFeatureProvider({
|
|
84
|
+
...options,
|
|
85
|
+
featureProviders,
|
|
86
|
+
attributeProviders,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (options.type) {
|
|
91
|
+
return getObjectFromClassRegistry(
|
|
92
|
+
vcsApp.featureProviderClassRegistry,
|
|
93
|
+
options,
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
|
|
51
100
|
export function deserializeLayer(
|
|
52
101
|
vcsApp: VcsApp,
|
|
53
102
|
layerConfig: ModuleLayerOptions,
|
|
@@ -83,10 +132,18 @@ export function deserializeLayer(
|
|
|
83
132
|
);
|
|
84
133
|
}
|
|
85
134
|
|
|
135
|
+
let attributeProvider;
|
|
136
|
+
if (layerConfig.attributeProvider) {
|
|
137
|
+
attributeProvider = deserializeFeatureProvider(
|
|
138
|
+
vcsApp,
|
|
139
|
+
layerConfig.attributeProvider,
|
|
140
|
+
) as AbstractAttributeProvider | null;
|
|
141
|
+
}
|
|
142
|
+
|
|
86
143
|
let featureProvider;
|
|
87
144
|
if (layerConfig.featureProvider) {
|
|
88
|
-
featureProvider =
|
|
89
|
-
vcsApp
|
|
145
|
+
featureProvider = deserializeFeatureProvider(
|
|
146
|
+
vcsApp,
|
|
90
147
|
layerConfig.featureProvider,
|
|
91
148
|
);
|
|
92
149
|
}
|
|
@@ -97,6 +154,7 @@ export function deserializeLayer(
|
|
|
97
154
|
highlightStyle,
|
|
98
155
|
tileProvider,
|
|
99
156
|
featureProvider,
|
|
157
|
+
attributeProvider,
|
|
100
158
|
});
|
|
101
159
|
}
|
|
102
160
|
|