@reearth/core 0.0.7-alpha.5 → 0.0.7-beta.1
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/ThirdParty/Workers/z-worker-pako.js +1 -1
- package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +8 -8
- package/dist/cesium/Widgets/widgets.css +8 -8
- package/dist/cesium/Workers/{chunk-SUQM3OSW.js → chunk-2YD5QWGR.js} +2 -2
- package/dist/cesium/Workers/{chunk-74N6MC2V.js → chunk-3T4KR75X.js} +2 -2
- package/dist/cesium/Workers/chunk-46KFVW24.js +26 -0
- package/dist/cesium/Workers/chunk-4EI6PP43.js +28 -0
- package/dist/cesium/Workers/{chunk-YEJWCH6C.js → chunk-4RS52VIY.js} +2 -2
- package/dist/cesium/Workers/{chunk-NPBZI5YA.js → chunk-4YLYA3DC.js} +1 -1
- package/dist/cesium/Workers/{chunk-JEWHFDAA.js → chunk-5ENAGXBI.js} +2 -2
- package/dist/cesium/Workers/{chunk-MRR3RGFO.js → chunk-5VIB3TI5.js} +2 -2
- package/dist/cesium/Workers/{chunk-JCJ24DHF.js → chunk-6NGZLDFZ.js} +2 -2
- package/dist/cesium/Workers/{chunk-7X2YQ6I4.js → chunk-6RGNWVZ2.js} +2 -2
- package/dist/cesium/Workers/{chunk-BK3HCS7I.js → chunk-7AZZVJ52.js} +2 -2
- package/dist/cesium/Workers/{chunk-UBIRX2SP.js → chunk-AMXAQQEL.js} +2 -2
- package/dist/cesium/Workers/{chunk-LDCAXLGS.js → chunk-AQW44ZPC.js} +2 -2
- package/dist/cesium/Workers/{chunk-B6TRTFAA.js → chunk-CPCMDW6Z.js} +2 -2
- package/dist/cesium/Workers/{chunk-3C74MLG3.js → chunk-DNL2WDRL.js} +1 -1
- package/dist/cesium/Workers/{chunk-FK5KFB6H.js → chunk-ERW7V247.js} +1 -1
- package/dist/cesium/Workers/{chunk-5AG2MVRM.js → chunk-EYRIA4TP.js} +2 -2
- package/dist/cesium/Workers/{chunk-6AUUBDOF.js → chunk-F7RQIJML.js} +2 -2
- package/dist/cesium/Workers/{chunk-JZLZJJQD.js → chunk-FPZMU6QP.js} +2 -2
- package/dist/cesium/Workers/{chunk-YBI55DLZ.js → chunk-FZDVQW7A.js} +2 -2
- package/dist/cesium/Workers/{chunk-2MBPFWCP.js → chunk-GAZ2U4FO.js} +2 -2
- package/dist/cesium/Workers/{chunk-CSISXEG7.js → chunk-I44IOOT4.js} +1 -1
- package/dist/cesium/Workers/{chunk-R2AN7EKC.js → chunk-IALXUAD4.js} +1 -1
- package/dist/cesium/Workers/{chunk-MDLPQIMP.js → chunk-IXBUEUZL.js} +2 -2
- package/dist/cesium/Workers/{chunk-HPBHKP5S.js → chunk-J3GCYV5K.js} +2 -2
- package/dist/cesium/Workers/{chunk-KRZBI2MU.js → chunk-KGSZTFHZ.js} +2 -2
- package/dist/cesium/Workers/{chunk-B2SKQ7LU.js → chunk-KKKPU2CI.js} +2 -2
- package/dist/cesium/Workers/{chunk-QPOPEH3M.js → chunk-KTEJE5KE.js} +2 -2
- package/dist/cesium/Workers/chunk-KYZ3DYY6.js +26 -0
- package/dist/cesium/Workers/{chunk-LOPN5R3I.js → chunk-L2QG4MRI.js} +2 -2
- package/dist/cesium/Workers/{chunk-EXBFEYPQ.js → chunk-MCE3KFYN.js} +2 -2
- package/dist/cesium/Workers/{chunk-C6DMEJQ7.js → chunk-MMLDGXML.js} +2 -2
- package/dist/cesium/Workers/{chunk-KTTUANTJ.js → chunk-MTBRPBDQ.js} +2 -2
- package/dist/cesium/Workers/{chunk-7VZHIB6P.js → chunk-OKT6VBRK.js} +2 -2
- package/dist/cesium/Workers/chunk-PHYDKLSY.js +26 -0
- package/dist/cesium/Workers/chunk-PWPX3224.js +26 -0
- package/dist/cesium/Workers/{chunk-VQZSIOZW.js → chunk-QHOVE6WG.js} +2 -2
- package/dist/cesium/Workers/{chunk-CN7UN2OZ.js → chunk-QJ6MBL22.js} +2 -2
- package/dist/cesium/Workers/{chunk-NUSW5B6A.js → chunk-QKO6VIG2.js} +2 -2
- package/dist/cesium/Workers/{chunk-4N7SRDH5.js → chunk-QVEE4QL2.js} +2 -2
- package/dist/cesium/Workers/{chunk-4T6AS6BZ.js → chunk-RXQOQZ7S.js} +2 -2
- package/dist/cesium/Workers/{chunk-RURL6ZX2.js → chunk-S3ZKQKMM.js} +2 -2
- package/dist/cesium/Workers/{chunk-ZYWD6OQH.js → chunk-SFEUMZSK.js} +2 -2
- package/dist/cesium/Workers/{chunk-BOPB43LN.js → chunk-T75MW4X3.js} +2 -2
- package/dist/cesium/Workers/chunk-TVO2A75R.js +66 -0
- package/dist/cesium/Workers/{chunk-VHNZBQTR.js → chunk-UHR36K45.js} +2 -2
- package/dist/cesium/Workers/{chunk-WZUWQMI7.js → chunk-UKJCDZOR.js} +2 -2
- package/dist/cesium/Workers/{chunk-B4TQDFIE.js → chunk-VKVIYER6.js} +2 -2
- package/dist/cesium/Workers/{chunk-OUXRUXNB.js → chunk-VPIQWTRZ.js} +2 -2
- package/dist/cesium/Workers/{chunk-2ED5WI77.js → chunk-XSX5HRFC.js} +2 -2
- package/dist/cesium/Workers/{chunk-5Z6L2FHX.js → chunk-Z5WQQHSL.js} +2 -2
- package/dist/cesium/Workers/{chunk-YPDO7SPO.js → chunk-Z7B2VEL5.js} +2 -2
- package/dist/cesium/Workers/combineGeometry.js +2 -2
- package/dist/cesium/Workers/createBoxGeometry.js +2 -2
- package/dist/cesium/Workers/createBoxOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createCircleGeometry.js +2 -2
- package/dist/cesium/Workers/createCircleOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +2 -2
- package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createCorridorGeometry.js +2 -2
- package/dist/cesium/Workers/createCorridorOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createCylinderGeometry.js +2 -2
- package/dist/cesium/Workers/createCylinderOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createEllipseGeometry.js +2 -2
- package/dist/cesium/Workers/createEllipseOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createEllipsoidGeometry.js +2 -2
- package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createFrustumGeometry.js +2 -2
- package/dist/cesium/Workers/createFrustumOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createGeometry.js +2 -2
- package/dist/cesium/Workers/createGroundPolylineGeometry.js +2 -2
- package/dist/cesium/Workers/createPlaneGeometry.js +2 -2
- package/dist/cesium/Workers/createPlaneOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createPolygonGeometry.js +2 -2
- package/dist/cesium/Workers/createPolygonOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createPolylineGeometry.js +2 -2
- package/dist/cesium/Workers/createPolylineVolumeGeometry.js +2 -2
- package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createRectangleGeometry.js +2 -2
- package/dist/cesium/Workers/createRectangleOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createSimplePolylineGeometry.js +2 -2
- package/dist/cesium/Workers/createSphereGeometry.js +2 -2
- package/dist/cesium/Workers/createSphereOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/createTaskProcessorWorker.js +2 -2
- package/dist/cesium/Workers/createVectorTileClampedPolylines.js +2 -2
- package/dist/cesium/Workers/createVectorTileGeometries.js +2 -2
- package/dist/cesium/Workers/createVectorTilePoints.js +2 -2
- package/dist/cesium/Workers/createVectorTilePolygons.js +2 -2
- package/dist/cesium/Workers/createVectorTilePolylines.js +2 -2
- package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +2 -2
- package/dist/cesium/Workers/createVerticesFromHeightmap.js +2 -2
- package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +2 -2
- package/dist/cesium/Workers/createWallGeometry.js +2 -2
- package/dist/cesium/Workers/createWallOutlineGeometry.js +2 -2
- package/dist/cesium/Workers/decodeDraco.js +2 -2
- package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
- package/dist/cesium/Workers/decodeI3S.js +2 -2
- package/dist/cesium/Workers/transcodeKTX2.js +10 -10
- package/dist/cesium/Workers/transferTypedArrayTest.js +1 -1
- package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +2 -2
- package/dist/core.js +34193 -34105
- package/dist/core.umd.cjs +3866 -3820
- package/dist/index.d.ts +212 -217
- package/package.json +5 -5
- package/src/Map/ClusteredLayers/index.tsx +2 -2
- package/src/Map/Layer/index.tsx +3 -3
- package/src/Map/Layers/hooks.ts +0 -10
- package/src/Map/Layers/index.tsx +2 -2
- package/src/Map/Sketch/hooks.ts +66 -46
- package/src/Map/Sketch/index.tsx +24 -2
- package/src/Map/Sketch/preset.ts +0 -2
- package/src/Map/Sketch/types.ts +0 -31
- package/src/Map/hooks.ts +4 -0
- package/src/Map/index.tsx +5 -8
- package/src/Map/ref.ts +7 -4
- package/src/Map/types/index.ts +216 -34
- package/src/Map/useTimelineManager.ts +3 -5
- package/src/Map/utils.ts +43 -1
- package/src/Visualizer/coreContext.tsx +8 -1
- package/src/Visualizer/hooks.ts +75 -6
- package/src/Visualizer/index.stories.tsx +48 -4
- package/src/Visualizer/index.tsx +6 -8
- package/src/engines/Cesium/Feature/Ellipse/index.stories.tsx +1 -1
- package/src/engines/Cesium/Feature/Frustum/index.stories.tsx +1 -1
- package/src/engines/Cesium/Feature/Model/index.stories.tsx +1 -1
- package/src/engines/Cesium/Feature/Model/index.tsx +9 -10
- package/src/engines/Cesium/Feature/Polygon/index.stories.tsx +6 -8
- package/src/engines/Cesium/Feature/Raster/index.stories.tsx +2 -2
- package/src/engines/Cesium/Feature/Resource/index.stories.tsx +1 -1
- package/src/engines/Cesium/Feature/Tileset/hooks.ts +11 -12
- package/src/engines/Cesium/Feature/Tileset/index.stories.tsx +1 -1
- package/src/engines/Cesium/Feature/Tileset/index.tsx +4 -4
- package/src/engines/Cesium/Feature/Tileset/useClippingBox.ts +1 -10
- package/src/engines/Cesium/Feature/index.tsx +4 -5
- package/src/engines/Cesium/Feature/utils.tsx +2 -3
- package/src/engines/Cesium/Shaders/OverriddenShaders/GlobeFS/IBL.glsl +6 -10
- package/src/engines/Cesium/{hooks/useOverrideGlobeShader/VertexTerrainElevationMaterial.ts → VertexTerrainElevationMaterial.ts} +2 -3
- package/src/engines/Cesium/{hooks/useCameraLimiter.ts → cameraLimiter.ts} +45 -22
- package/src/engines/Cesium/core/Globe.tsx +68 -36
- package/src/engines/Cesium/core/Imagery.test.ts +9 -9
- package/src/engines/Cesium/core/Imagery.tsx +19 -17
- package/src/engines/Cesium/core/Indicator/Indicator.tsx +8 -8
- package/src/engines/Cesium/hooks.ts +365 -124
- package/src/engines/Cesium/index.stories.tsx +1 -1
- package/src/engines/Cesium/index.tsx +62 -60
- package/src/engines/Cesium/{hooks/useEngineRef.test.tsx → useEngineRef.test.tsx} +34 -38
- package/src/engines/Cesium/{hooks/useEngineRef.ts → useEngineRef.ts} +41 -43
- package/src/engines/Cesium/{hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts → useOverrideGlobeShader.ts} +17 -20
- package/src/engines/index.ts +1 -1
- package/src/mantle/compat/types.ts +7 -7
- package/dist/cesium/Workers/chunk-45U7TTT3.js +0 -26
- package/dist/cesium/Workers/chunk-7VJK3KHI.js +0 -26
- package/dist/cesium/Workers/chunk-CUOR5F7T.js +0 -28
- package/dist/cesium/Workers/chunk-DGCK3LD2.js +0 -30
- package/dist/cesium/Workers/chunk-DXEZYE3K.js +0 -62
- package/dist/cesium/Workers/chunk-VAKC5J5C.js +0 -26
- package/dist/cesium/Workers/chunk-VKV642QV.js +0 -26
- package/dist/cesium/Workers/chunk-VMSXG4OA.js +0 -26
- package/src/Map/types/viewerProperty.ts +0 -215
- package/src/Visualizer/useCoreAPI.ts +0 -30
- package/src/engines/Cesium/hooks/useCamera.ts +0 -135
- package/src/engines/Cesium/hooks/useExplicitRender.ts +0 -65
- package/src/engines/Cesium/hooks/useLayerDragDrop.ts +0 -77
- package/src/engines/Cesium/hooks/useViewerProperty.ts +0 -90
- /package/src/engines/Cesium/{hooks/useOverrideGlobeShader/JapanSeaLevelEllipsoid.ts → JapanSeaLevelEllipsoid.ts} +0 -0
- /package/src/engines/Cesium/{hooks/useOverrideGlobeShader/vertexTerrainElevationMaterial.glsl → vertexTerrainElevationMaterial.glsl} +0 -0
|
@@ -5,15 +5,16 @@ import {
|
|
|
5
5
|
IonResource,
|
|
6
6
|
TerrainProvider,
|
|
7
7
|
} from "cesium";
|
|
8
|
+
import { pick } from "lodash-es";
|
|
8
9
|
import { useMemo } from "react";
|
|
9
10
|
import { Globe as CesiumGlobe } from "resium";
|
|
10
11
|
|
|
11
|
-
import type {
|
|
12
|
-
import {
|
|
12
|
+
import type { SceneProperty, TerrainProperty } from "../..";
|
|
13
|
+
import { objKeys } from "../../../utils";
|
|
13
14
|
import { toColor } from "../common";
|
|
14
15
|
|
|
15
16
|
export type Props = {
|
|
16
|
-
property?:
|
|
17
|
+
property?: SceneProperty;
|
|
17
18
|
cesiumIonAccessToken?: string;
|
|
18
19
|
};
|
|
19
20
|
|
|
@@ -21,67 +22,93 @@ export default function Globe({ property, cesiumIonAccessToken }: Props): JSX.El
|
|
|
21
22
|
const terrainProperty = useMemo(
|
|
22
23
|
(): TerrainProperty => ({
|
|
23
24
|
...property?.terrain,
|
|
25
|
+
...pick(property?.default, terrainPropertyKeys),
|
|
24
26
|
}),
|
|
25
|
-
[property?.terrain],
|
|
27
|
+
[property?.terrain, property?.default],
|
|
26
28
|
);
|
|
27
29
|
|
|
28
30
|
const terrainProvider = useMemo((): Promise<TerrainProvider> | TerrainProvider | undefined => {
|
|
29
31
|
const opts = {
|
|
30
|
-
terrain: terrainProperty?.
|
|
31
|
-
terrainType: terrainProperty?.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
terrain: terrainProperty?.terrain,
|
|
33
|
+
terrainType: terrainProperty?.terrainType,
|
|
34
|
+
terrainNormal: terrainProperty?.terrainNormal,
|
|
35
|
+
terrainCesiumIonAccessToken:
|
|
36
|
+
terrainProperty?.terrainCesiumIonAccessToken || cesiumIonAccessToken,
|
|
37
|
+
terrainCesiumIonAsset: terrainProperty?.terrainCesiumIonAsset,
|
|
38
|
+
terrainCesiumIonUrl: terrainProperty?.terrainCesiumIonUrl,
|
|
36
39
|
};
|
|
37
40
|
const provider = opts.terrain ? terrainProviders[opts.terrainType || "cesium"] : undefined;
|
|
38
41
|
return (typeof provider === "function" ? provider(opts) : provider) ?? defaultTerrainProvider;
|
|
39
42
|
}, [
|
|
40
|
-
terrainProperty?.
|
|
41
|
-
terrainProperty?.
|
|
42
|
-
terrainProperty?.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
terrainProperty?.terrain,
|
|
44
|
+
terrainProperty?.terrainType,
|
|
45
|
+
terrainProperty?.terrainCesiumIonAccessToken,
|
|
46
|
+
terrainProperty?.terrainCesiumIonAsset,
|
|
47
|
+
terrainProperty?.terrainCesiumIonUrl,
|
|
48
|
+
terrainProperty?.terrainNormal,
|
|
46
49
|
cesiumIonAccessToken,
|
|
47
50
|
]);
|
|
48
51
|
|
|
49
52
|
const baseColor = useMemo(
|
|
50
|
-
() => toColor(property?.
|
|
51
|
-
[property?.
|
|
53
|
+
() => toColor(property?.atmosphere?.globeBaseColor),
|
|
54
|
+
[property?.atmosphere?.globeBaseColor],
|
|
52
55
|
);
|
|
53
56
|
|
|
54
57
|
return (
|
|
55
58
|
<CesiumGlobe
|
|
56
59
|
baseColor={baseColor}
|
|
57
|
-
enableLighting={
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
enableLighting={
|
|
61
|
+
!!(property?.atmosphere?.enable_lighting ?? property?.globeLighting?.globeLighting)
|
|
62
|
+
}
|
|
63
|
+
showGroundAtmosphere={
|
|
64
|
+
property?.atmosphere?.ground_atmosphere ??
|
|
65
|
+
property?.globeAtmosphere?.globeAtmosphere ??
|
|
66
|
+
true
|
|
67
|
+
}
|
|
68
|
+
atmosphereLightIntensity={property?.globeAtmosphere?.globeAtmosphereIntensity}
|
|
69
|
+
atmosphereSaturationShift={property?.atmosphere?.surturation_shift}
|
|
70
|
+
atmosphereHueShift={property?.atmosphere?.hue_shift}
|
|
71
|
+
atmosphereBrightnessShift={property?.atmosphere?.brightness_shift}
|
|
63
72
|
terrainProvider={terrainProvider}
|
|
64
|
-
depthTestAgainstTerrain={!!
|
|
73
|
+
depthTestAgainstTerrain={!!terrainProperty.depthTestAgainstTerrain}
|
|
65
74
|
/>
|
|
66
75
|
);
|
|
67
76
|
}
|
|
68
77
|
|
|
78
|
+
const terrainPropertyKeys = objKeys<TerrainProperty>({
|
|
79
|
+
terrain: 0,
|
|
80
|
+
terrainType: 0,
|
|
81
|
+
terrainExaggeration: 0,
|
|
82
|
+
terrainExaggerationRelativeHeight: 0,
|
|
83
|
+
depthTestAgainstTerrain: 0,
|
|
84
|
+
terrainCesiumIonAsset: 0,
|
|
85
|
+
terrainCesiumIonAccessToken: 0,
|
|
86
|
+
terrainCesiumIonUrl: 0,
|
|
87
|
+
terrainUrl: 0,
|
|
88
|
+
});
|
|
89
|
+
|
|
69
90
|
const defaultTerrainProvider = new EllipsoidTerrainProvider();
|
|
70
91
|
|
|
71
92
|
const terrainProviders: {
|
|
72
|
-
[k in NonNullable<TerrainProperty["
|
|
93
|
+
[k in NonNullable<TerrainProperty["terrainType"]>]:
|
|
73
94
|
| TerrainProvider
|
|
74
95
|
| ((
|
|
75
|
-
opts: Pick<
|
|
96
|
+
opts: Pick<
|
|
97
|
+
TerrainProperty,
|
|
98
|
+
| "terrainCesiumIonAccessToken"
|
|
99
|
+
| "terrainCesiumIonAsset"
|
|
100
|
+
| "terrainCesiumIonUrl"
|
|
101
|
+
| "terrainNormal"
|
|
102
|
+
>,
|
|
76
103
|
) => Promise<TerrainProvider> | TerrainProvider | null);
|
|
77
104
|
} = {
|
|
78
|
-
cesium: ({
|
|
105
|
+
cesium: ({ terrainCesiumIonAccessToken, terrainNormal }) =>
|
|
79
106
|
CesiumTerrainProvider.fromUrl(
|
|
80
107
|
IonResource.fromAssetId(1, {
|
|
81
|
-
accessToken:
|
|
108
|
+
accessToken: terrainCesiumIonAccessToken,
|
|
82
109
|
}),
|
|
83
110
|
{
|
|
84
|
-
requestVertexNormals:
|
|
111
|
+
requestVertexNormals: terrainNormal,
|
|
85
112
|
requestWaterMask: false,
|
|
86
113
|
},
|
|
87
114
|
),
|
|
@@ -89,15 +116,20 @@ const terrainProviders: {
|
|
|
89
116
|
ArcGISTiledElevationTerrainProvider.fromUrl(
|
|
90
117
|
"https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer",
|
|
91
118
|
),
|
|
92
|
-
cesiumion: ({
|
|
93
|
-
|
|
119
|
+
cesiumion: ({
|
|
120
|
+
terrainCesiumIonAccessToken,
|
|
121
|
+
terrainCesiumIonAsset,
|
|
122
|
+
terrainCesiumIonUrl,
|
|
123
|
+
terrainNormal,
|
|
124
|
+
}) =>
|
|
125
|
+
terrainCesiumIonAsset
|
|
94
126
|
? CesiumTerrainProvider.fromUrl(
|
|
95
|
-
|
|
96
|
-
IonResource.fromAssetId(parseInt(
|
|
97
|
-
accessToken:
|
|
127
|
+
terrainCesiumIonUrl ||
|
|
128
|
+
IonResource.fromAssetId(parseInt(terrainCesiumIonAsset, 10), {
|
|
129
|
+
accessToken: terrainCesiumIonAccessToken,
|
|
98
130
|
}),
|
|
99
131
|
{
|
|
100
|
-
requestVertexNormals:
|
|
132
|
+
requestVertexNormals: terrainNormal,
|
|
101
133
|
},
|
|
102
134
|
)
|
|
103
135
|
: null,
|
|
@@ -14,7 +14,7 @@ test("useImageryProviders", () => {
|
|
|
14
14
|
presets,
|
|
15
15
|
cesiumIonAccessToken,
|
|
16
16
|
}),
|
|
17
|
-
{ initialProps: { tiles: [{ id: "1",
|
|
17
|
+
{ initialProps: { tiles: [{ id: "1", tile_type: "default" }] } },
|
|
18
18
|
);
|
|
19
19
|
|
|
20
20
|
expect(result.current.providers).toEqual({ "1": ["default", undefined, { hoge: undefined }] });
|
|
@@ -23,14 +23,14 @@ test("useImageryProviders", () => {
|
|
|
23
23
|
const prevImageryProvider = result.current.providers["1"][2];
|
|
24
24
|
|
|
25
25
|
// re-render with same tiles
|
|
26
|
-
rerender({ tiles: [{ id: "1",
|
|
26
|
+
rerender({ tiles: [{ id: "1", tile_type: "default" }] });
|
|
27
27
|
|
|
28
28
|
expect(result.current.providers).toEqual({ "1": ["default", undefined, { hoge: undefined }] });
|
|
29
29
|
expect(result.current.providers["1"][2]).toBe(prevImageryProvider); // 1's provider should be reused
|
|
30
30
|
expect(provider).toBeCalledTimes(1);
|
|
31
31
|
|
|
32
32
|
// update a tile URL
|
|
33
|
-
rerender({ tiles: [{ id: "1",
|
|
33
|
+
rerender({ tiles: [{ id: "1", tile_type: "default", tile_url: "a" }] });
|
|
34
34
|
|
|
35
35
|
expect(result.current.providers).toEqual({ "1": ["default", "a", { hoge: "a" }] });
|
|
36
36
|
expect(result.current.providers["1"][2]).not.toBe(prevImageryProvider);
|
|
@@ -42,8 +42,8 @@ test("useImageryProviders", () => {
|
|
|
42
42
|
// add a tile with URL
|
|
43
43
|
rerender({
|
|
44
44
|
tiles: [
|
|
45
|
-
{ id: "2",
|
|
46
|
-
{ id: "1",
|
|
45
|
+
{ id: "2", tile_type: "default" },
|
|
46
|
+
{ id: "1", tile_type: "default", tile_url: "a" },
|
|
47
47
|
],
|
|
48
48
|
});
|
|
49
49
|
|
|
@@ -58,8 +58,8 @@ test("useImageryProviders", () => {
|
|
|
58
58
|
// sort tiles
|
|
59
59
|
rerender({
|
|
60
60
|
tiles: [
|
|
61
|
-
{ id: "1",
|
|
62
|
-
{ id: "2",
|
|
61
|
+
{ id: "1", tile_type: "default", tile_url: "a" },
|
|
62
|
+
{ id: "2", tile_type: "default" },
|
|
63
63
|
],
|
|
64
64
|
});
|
|
65
65
|
|
|
@@ -73,7 +73,7 @@ test("useImageryProviders", () => {
|
|
|
73
73
|
|
|
74
74
|
// delete a tile
|
|
75
75
|
rerender({
|
|
76
|
-
tiles: [{ id: "1",
|
|
76
|
+
tiles: [{ id: "1", tile_type: "default", tile_url: "a" }],
|
|
77
77
|
cesiumIonAccessToken: "a",
|
|
78
78
|
});
|
|
79
79
|
|
|
@@ -86,7 +86,7 @@ test("useImageryProviders", () => {
|
|
|
86
86
|
|
|
87
87
|
// update a tile type
|
|
88
88
|
rerender({
|
|
89
|
-
tiles: [{ id: "1",
|
|
89
|
+
tiles: [{ id: "1", tile_type: "foobar", tile_url: "u" }],
|
|
90
90
|
cesiumIonAccessToken: "a",
|
|
91
91
|
});
|
|
92
92
|
|
|
@@ -20,11 +20,11 @@ export type ImageryLayerData = {
|
|
|
20
20
|
|
|
21
21
|
export type Tile = {
|
|
22
22
|
id: string;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
tile_url?: string;
|
|
24
|
+
tile_type?: string;
|
|
25
|
+
tile_opacity?: number;
|
|
26
|
+
tile_zoomLevel?: number[];
|
|
27
|
+
tile_zoomLevelForURL?: number[];
|
|
28
28
|
heatmap?: boolean;
|
|
29
29
|
};
|
|
30
30
|
|
|
@@ -55,13 +55,13 @@ export default function ImageryLayers({ tiles, cesiumIonAccessToken }: Props) {
|
|
|
55
55
|
id,
|
|
56
56
|
provider: providers[id]?.[2],
|
|
57
57
|
}))
|
|
58
|
-
.map(({ id, opacity,
|
|
58
|
+
.map(({ id, tile_opacity: opacity, tile_zoomLevel, provider, heatmap }, i) =>
|
|
59
59
|
provider ? (
|
|
60
60
|
<ImageryLayer
|
|
61
61
|
key={`${id}_${i}_${counter}`}
|
|
62
62
|
imageryProvider={provider}
|
|
63
|
-
minimumTerrainLevel={
|
|
64
|
-
maximumTerrainLevel={
|
|
63
|
+
minimumTerrainLevel={tile_zoomLevel?.[0]}
|
|
64
|
+
maximumTerrainLevel={tile_zoomLevel?.[1]}
|
|
65
65
|
alpha={opacity}
|
|
66
66
|
index={i}
|
|
67
67
|
colorToAlpha={heatmap ? Color.WHITE : undefined}
|
|
@@ -89,17 +89,17 @@ export function useImageryProviders({
|
|
|
89
89
|
url?: string;
|
|
90
90
|
cesiumIonAccessToken?: string;
|
|
91
91
|
heatmap?: boolean;
|
|
92
|
-
|
|
92
|
+
tile_zoomLevel?: number[];
|
|
93
93
|
}) => Promise<ImageryProvider> | ImageryProvider | null;
|
|
94
94
|
};
|
|
95
95
|
}): { providers: Providers; updated: boolean } {
|
|
96
96
|
const newTile = useCallback(
|
|
97
97
|
(t: Tile, ciat?: string) =>
|
|
98
|
-
presets[t.
|
|
99
|
-
url: t.
|
|
98
|
+
presets[t.tile_type || "default"]({
|
|
99
|
+
url: t.tile_url,
|
|
100
100
|
cesiumIonAccessToken: ciat,
|
|
101
101
|
heatmap: t.heatmap,
|
|
102
|
-
|
|
102
|
+
tile_zoomLevel: t.tile_zoomLevelForURL,
|
|
103
103
|
}),
|
|
104
104
|
[presets],
|
|
105
105
|
);
|
|
@@ -152,10 +152,10 @@ export function useImageryProviders({
|
|
|
152
152
|
: [
|
|
153
153
|
key,
|
|
154
154
|
added ||
|
|
155
|
-
prevType !== tile.
|
|
156
|
-
prevUrl !== tile.
|
|
157
|
-
(isCesiumAccessTokenUpdated && (!tile.
|
|
158
|
-
? [tile.
|
|
155
|
+
prevType !== tile.tile_type ||
|
|
156
|
+
prevUrl !== tile.tile_url ||
|
|
157
|
+
(isCesiumAccessTokenUpdated && (!tile.tile_type || tile.tile_type === "default"))
|
|
158
|
+
? [tile.tile_type, tile.tile_url, newTile(tile, cesiumIonAccessToken)]
|
|
159
159
|
: [prevType, prevUrl, prevProvider],
|
|
160
160
|
],
|
|
161
161
|
)
|
|
@@ -169,7 +169,9 @@ export function useImageryProviders({
|
|
|
169
169
|
!!added.length ||
|
|
170
170
|
!!isCesiumAccessTokenUpdated ||
|
|
171
171
|
!isEqual(prevTileKeys.current, tileKeys) ||
|
|
172
|
-
rawProviders.some(
|
|
172
|
+
rawProviders.some(
|
|
173
|
+
p => p.tile && (p.prevType !== p.tile.tile_type || p.prevUrl !== p.tile.tile_url),
|
|
174
|
+
);
|
|
173
175
|
|
|
174
176
|
prevTileKeys.current = tileKeys;
|
|
175
177
|
prevCesiumIonAccessToken.current = cesiumIonAccessToken;
|
|
@@ -4,7 +4,7 @@ import { BoundingSphere, Cartesian3, SceneTransforms, Cartesian2, JulianDate } f
|
|
|
4
4
|
import { useEffect, useState } from "react";
|
|
5
5
|
import { useCesium } from "resium";
|
|
6
6
|
|
|
7
|
-
import type {
|
|
7
|
+
import type { SceneProperty } from "../../..";
|
|
8
8
|
import { TimelineManagerRef } from "../../../../Map/useTimelineManager";
|
|
9
9
|
import { useIcon } from "../../common";
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ import Crosshair from "./crosshair.svg?react";
|
|
|
12
12
|
|
|
13
13
|
export type Props = {
|
|
14
14
|
className?: string;
|
|
15
|
-
property?:
|
|
15
|
+
property?: SceneProperty;
|
|
16
16
|
timelineManagerRef?: TimelineManagerRef;
|
|
17
17
|
};
|
|
18
18
|
|
|
@@ -29,17 +29,17 @@ export default function Indicator({
|
|
|
29
29
|
mountOnEnter: true,
|
|
30
30
|
unmountOnExit: true,
|
|
31
31
|
});
|
|
32
|
-
const {
|
|
33
|
-
const [img, w, h] = useIcon({ image:
|
|
32
|
+
const { indicator_type, indicator_image, indicator_image_scale } = property?.indicator ?? {};
|
|
33
|
+
const [img, w, h] = useIcon({ image: indicator_image, imageSize: indicator_image_scale });
|
|
34
34
|
|
|
35
35
|
useEffect(() => {
|
|
36
|
-
!(!
|
|
36
|
+
!(!indicator_type || indicator_type === "default")
|
|
37
37
|
? viewer?.selectionIndicator.viewModel.selectionIndicatorElement.setAttribute(
|
|
38
38
|
"hidden",
|
|
39
39
|
"true",
|
|
40
40
|
)
|
|
41
41
|
: viewer?.selectionIndicator.viewModel.selectionIndicatorElement.removeAttribute("hidden");
|
|
42
|
-
}, [
|
|
42
|
+
}, [indicator_type, viewer, viewer?.selectionIndicator]);
|
|
43
43
|
|
|
44
44
|
useEffect(() => {
|
|
45
45
|
if (!viewer) return;
|
|
@@ -90,7 +90,7 @@ export default function Indicator({
|
|
|
90
90
|
}, [viewer, timelineManagerRef]);
|
|
91
91
|
|
|
92
92
|
return transition !== "unmounted" && pos ? (
|
|
93
|
-
|
|
93
|
+
indicator_type === "crosshair" ? (
|
|
94
94
|
<div
|
|
95
95
|
className={className}
|
|
96
96
|
style={{
|
|
@@ -109,7 +109,7 @@ export default function Indicator({
|
|
|
109
109
|
}}>
|
|
110
110
|
<Crosshair />
|
|
111
111
|
</div>
|
|
112
|
-
) :
|
|
112
|
+
) : indicator_type === "custom" ? (
|
|
113
113
|
<img
|
|
114
114
|
src={img}
|
|
115
115
|
width={w}
|