@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
package/src/Map/types/index.ts
CHANGED
|
@@ -22,6 +22,7 @@ import type {
|
|
|
22
22
|
Feature,
|
|
23
23
|
ComputedFeature,
|
|
24
24
|
CameraPosition,
|
|
25
|
+
LUT,
|
|
25
26
|
} from "../../mantle";
|
|
26
27
|
import type {
|
|
27
28
|
CameraOptions,
|
|
@@ -38,11 +39,10 @@ import type {
|
|
|
38
39
|
LayerSelectionReason,
|
|
39
40
|
Ref as LayersRef,
|
|
40
41
|
} from "../Layers";
|
|
41
|
-
import {
|
|
42
|
+
import { SketchComponentType } from "../Sketch";
|
|
43
|
+
import { SketchAppearance, SketchType } from "../Sketch/types";
|
|
42
44
|
import type { TimelineManagerRef } from "../useTimelineManager";
|
|
43
45
|
|
|
44
|
-
import type { SceneMode, ViewerProperty } from "./viewerProperty";
|
|
45
|
-
|
|
46
46
|
export type {
|
|
47
47
|
FeatureComponentProps,
|
|
48
48
|
FeatureComponentType,
|
|
@@ -72,7 +72,6 @@ export type {
|
|
|
72
72
|
ValueType,
|
|
73
73
|
} from "../../mantle";
|
|
74
74
|
export * from "./event";
|
|
75
|
-
export * from "./viewerProperty";
|
|
76
75
|
|
|
77
76
|
export type EngineRef = {
|
|
78
77
|
name: string;
|
|
@@ -88,7 +87,7 @@ export type EngineRef = {
|
|
|
88
87
|
getLocationFromScreen: (x: number, y: number, withTerrain?: boolean) => LatLngHeight | undefined;
|
|
89
88
|
sampleTerrainHeight: (lng: number, lat: number) => Promise<number | undefined>;
|
|
90
89
|
computeGlobeHeight: (lng: number, lat: number, height?: number) => number | undefined;
|
|
91
|
-
getGlobeHeight: () =>
|
|
90
|
+
getGlobeHeight: () => void;
|
|
92
91
|
toXYZ: (
|
|
93
92
|
lng: number,
|
|
94
93
|
lat: number,
|
|
@@ -203,8 +202,7 @@ export type EngineProps = {
|
|
|
203
202
|
style?: CSSProperties;
|
|
204
203
|
isEditable?: boolean;
|
|
205
204
|
isBuilt?: boolean;
|
|
206
|
-
property?:
|
|
207
|
-
time?: string | Date;
|
|
205
|
+
property?: SceneProperty;
|
|
208
206
|
camera?: Camera;
|
|
209
207
|
cameraForceHorizontalRoll?: boolean;
|
|
210
208
|
small?: boolean;
|
|
@@ -299,18 +297,18 @@ export type MouseEventCallback = (props: MouseEventProps) => void;
|
|
|
299
297
|
export type MouseWheelEventCallback = (props: MouseEventProps) => void;
|
|
300
298
|
export type MouseEventTypes =
|
|
301
299
|
| "click"
|
|
302
|
-
| "
|
|
303
|
-
| "
|
|
304
|
-
| "
|
|
305
|
-
| "
|
|
306
|
-
| "
|
|
307
|
-
| "
|
|
308
|
-
| "
|
|
309
|
-
| "
|
|
310
|
-
| "
|
|
311
|
-
| "
|
|
312
|
-
| "
|
|
313
|
-
| "
|
|
300
|
+
| "doubleclick"
|
|
301
|
+
| "mousedown"
|
|
302
|
+
| "mouseup"
|
|
303
|
+
| "rightclick"
|
|
304
|
+
| "rightdown"
|
|
305
|
+
| "rightup"
|
|
306
|
+
| "middleclick"
|
|
307
|
+
| "middledown"
|
|
308
|
+
| "middleup"
|
|
309
|
+
| "mousemove"
|
|
310
|
+
| "mouseenter"
|
|
311
|
+
| "mouseleave"
|
|
314
312
|
| "wheel";
|
|
315
313
|
|
|
316
314
|
export type MouseEvents = {
|
|
@@ -321,18 +319,18 @@ export type MouseEvents = {
|
|
|
321
319
|
|
|
322
320
|
export type MouseEventHandles = {
|
|
323
321
|
onClick: (fn: MouseEvents["click"]) => void;
|
|
324
|
-
onDoubleClick: (fn: MouseEvents["
|
|
325
|
-
onMouseDown: (fn: MouseEvents["
|
|
326
|
-
onMouseUp: (fn: MouseEvents["
|
|
327
|
-
onRightClick: (fn: MouseEvents["
|
|
328
|
-
onRightDown: (fn: MouseEvents["
|
|
329
|
-
onRightUp: (fn: MouseEvents["
|
|
330
|
-
onMiddleClick: (fn: MouseEvents["
|
|
331
|
-
onMiddleDown: (fn: MouseEvents["
|
|
332
|
-
onMiddleUp: (fn: MouseEvents["
|
|
333
|
-
onMouseMove: (fn: MouseEvents["
|
|
334
|
-
onMouseEnter: (fn: MouseEvents["
|
|
335
|
-
onMouseLeave: (fn: MouseEvents["
|
|
322
|
+
onDoubleClick: (fn: MouseEvents["doubleclick"]) => void;
|
|
323
|
+
onMouseDown: (fn: MouseEvents["mousedown"]) => void;
|
|
324
|
+
onMouseUp: (fn: MouseEvents["mouseup"]) => void;
|
|
325
|
+
onRightClick: (fn: MouseEvents["rightclick"]) => void;
|
|
326
|
+
onRightDown: (fn: MouseEvents["rightdown"]) => void;
|
|
327
|
+
onRightUp: (fn: MouseEvents["rightup"]) => void;
|
|
328
|
+
onMiddleClick: (fn: MouseEvents["middleclick"]) => void;
|
|
329
|
+
onMiddleDown: (fn: MouseEvents["middledown"]) => void;
|
|
330
|
+
onMiddleUp: (fn: MouseEvents["middleup"]) => void;
|
|
331
|
+
onMouseMove: (fn: MouseEvents["mousemove"]) => void;
|
|
332
|
+
onMouseEnter: (fn: MouseEvents["mouseenter"]) => void;
|
|
333
|
+
onMouseLeave: (fn: MouseEvents["mouseleave"]) => void;
|
|
336
334
|
onWheel: (fn: MouseEvents["wheel"]) => void;
|
|
337
335
|
};
|
|
338
336
|
|
|
@@ -341,6 +339,186 @@ export type MouseEventCallbacks = { [key in keyof MouseEvents]: MouseEvents[key]
|
|
|
341
339
|
export type TickEvent = (cb: TickEventCallback) => void;
|
|
342
340
|
export type TickEventCallback = (current: Date, clock: { start: Date; stop: Date }) => void;
|
|
343
341
|
|
|
342
|
+
export type SceneMode = "3d" | "2d" | "columbus";
|
|
343
|
+
export type IndicatorTypes = "default" | "crosshair" | "custom";
|
|
344
|
+
|
|
345
|
+
export type TerrainProperty = {
|
|
346
|
+
terrain?: boolean;
|
|
347
|
+
terrainType?: "cesium" | "arcgis" | "cesiumion"; // default: cesium
|
|
348
|
+
terrainExaggeration?: number; // default: 1
|
|
349
|
+
terrainExaggerationRelativeHeight?: number; // default: 0
|
|
350
|
+
depthTestAgainstTerrain?: boolean;
|
|
351
|
+
terrainCesiumIonAsset?: string;
|
|
352
|
+
terrainCesiumIonAccessToken?: string;
|
|
353
|
+
terrainCesiumIonUrl?: string;
|
|
354
|
+
terrainUrl?: string;
|
|
355
|
+
terrainNormal?: boolean;
|
|
356
|
+
// TODO: Add encode option
|
|
357
|
+
// Need to specify a tile from `tiles` option with `heatmap` option.
|
|
358
|
+
heatmapType?: "custom"; // TODO: Support Cesium's terrain heatmap as built-in: https://sandcastle.cesium.com/?src=Globe%20Materials.html
|
|
359
|
+
heatmapColorLUT?: LUT;
|
|
360
|
+
heatmapMinHeight?: number;
|
|
361
|
+
heatmapMaxHeight?: number;
|
|
362
|
+
heatmapLogarithmic?: boolean;
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
export type SceneProperty = {
|
|
366
|
+
main?: {
|
|
367
|
+
sceneMode?: SceneMode; // default: scene3d
|
|
368
|
+
ion?: string;
|
|
369
|
+
vr?: boolean;
|
|
370
|
+
};
|
|
371
|
+
tiles?: {
|
|
372
|
+
id: string;
|
|
373
|
+
tile_type?: string;
|
|
374
|
+
tile_url?: string;
|
|
375
|
+
tile_zoomLevel?: number[];
|
|
376
|
+
tile_zoomLevelForURL?: number[];
|
|
377
|
+
tile_opacity?: number;
|
|
378
|
+
heatmap?: boolean;
|
|
379
|
+
}[];
|
|
380
|
+
tileLabels?: {
|
|
381
|
+
id: string;
|
|
382
|
+
labelType: "japan_gsi_optimal_bvmap"; // | "other_map"
|
|
383
|
+
style: Record<string, any>; // Function isn't allowed
|
|
384
|
+
}[];
|
|
385
|
+
terrain?: {
|
|
386
|
+
terrain?: boolean;
|
|
387
|
+
terrainType?: "cesium" | "arcgis" | "cesiumion"; // default: cesium
|
|
388
|
+
terrainCesiumIonAsset?: string;
|
|
389
|
+
terrainCesiumIonAccessToken?: string;
|
|
390
|
+
terrainCesiumIonUrl?: string;
|
|
391
|
+
terrainExaggeration?: number; // default: 1
|
|
392
|
+
terrainExaggerationRelativeHeight?: number; // default: 0
|
|
393
|
+
depthTestAgainstTerrain?: boolean;
|
|
394
|
+
};
|
|
395
|
+
globeLighting?: {
|
|
396
|
+
globeLighting?: boolean;
|
|
397
|
+
};
|
|
398
|
+
globeShadow?: {
|
|
399
|
+
globeShadow?: boolean;
|
|
400
|
+
};
|
|
401
|
+
globeAtmosphere?: {
|
|
402
|
+
globeAtmosphere?: boolean;
|
|
403
|
+
globeAtmosphereIntensity?: number; // default: 10
|
|
404
|
+
};
|
|
405
|
+
skyBox?: {
|
|
406
|
+
skyBox?: boolean;
|
|
407
|
+
};
|
|
408
|
+
sun?: {
|
|
409
|
+
sun?: boolean;
|
|
410
|
+
};
|
|
411
|
+
moon?: {
|
|
412
|
+
moon?: boolean;
|
|
413
|
+
};
|
|
414
|
+
skyAtmosphere?: {
|
|
415
|
+
skyAtmosphere?: boolean;
|
|
416
|
+
skyAtmosphereIntensity?: number; // default: 50
|
|
417
|
+
};
|
|
418
|
+
camera?: {
|
|
419
|
+
camera?: Camera;
|
|
420
|
+
allowEnterGround?: boolean;
|
|
421
|
+
fov?: number;
|
|
422
|
+
};
|
|
423
|
+
render?: { showWireframe?: boolean };
|
|
424
|
+
} & LegacySceneProperty;
|
|
425
|
+
|
|
426
|
+
type LegacySceneProperty = {
|
|
427
|
+
default?: {
|
|
428
|
+
camera?: Camera;
|
|
429
|
+
allowEnterGround?: boolean;
|
|
430
|
+
skybox?: boolean;
|
|
431
|
+
bgcolor?: string;
|
|
432
|
+
ion?: string;
|
|
433
|
+
sceneMode?: SceneMode; // default: scene3d
|
|
434
|
+
vr?: boolean;
|
|
435
|
+
} & TerrainProperty; // compat
|
|
436
|
+
cameraLimiter?: {
|
|
437
|
+
cameraLimitterEnabled?: boolean;
|
|
438
|
+
cameraLimitterShowHelper?: boolean;
|
|
439
|
+
cameraLimitterTargetArea?: Camera;
|
|
440
|
+
cameraLimitterTargetWidth?: number;
|
|
441
|
+
cameraLimitterTargetLength?: number;
|
|
442
|
+
};
|
|
443
|
+
indicator?: {
|
|
444
|
+
indicator_type: IndicatorTypes;
|
|
445
|
+
indicator_image?: string;
|
|
446
|
+
indicator_image_scale?: number;
|
|
447
|
+
};
|
|
448
|
+
tiles?: {
|
|
449
|
+
id: string;
|
|
450
|
+
tile_type?: string;
|
|
451
|
+
tile_url?: string;
|
|
452
|
+
tile_zoomLevel?: number[];
|
|
453
|
+
tile_opacity?: number;
|
|
454
|
+
}[];
|
|
455
|
+
terrain?: TerrainProperty;
|
|
456
|
+
atmosphere?: {
|
|
457
|
+
enable_sun?: boolean;
|
|
458
|
+
enableMoon?: boolean;
|
|
459
|
+
enable_lighting?: boolean;
|
|
460
|
+
ground_atmosphere?: boolean;
|
|
461
|
+
sky_atmosphere?: boolean;
|
|
462
|
+
shadows?: boolean;
|
|
463
|
+
shadowResolution?: 1024 | 2048 | 4096;
|
|
464
|
+
softShadow?: boolean;
|
|
465
|
+
shadowDarkness?: number;
|
|
466
|
+
shadowMaximumDistance?: number;
|
|
467
|
+
fog?: boolean;
|
|
468
|
+
fog_density?: number;
|
|
469
|
+
hue_shift?: number;
|
|
470
|
+
brightness_shift?: number;
|
|
471
|
+
surturation_shift?: number;
|
|
472
|
+
skyboxBrightnessShift?: number;
|
|
473
|
+
skyboxSurturationShift?: number;
|
|
474
|
+
globeShadowDarkness?: number;
|
|
475
|
+
globeImageBasedLighting?: boolean;
|
|
476
|
+
globeBaseColor?: string;
|
|
477
|
+
};
|
|
478
|
+
timeline?: {
|
|
479
|
+
animation?: boolean;
|
|
480
|
+
visible?: boolean;
|
|
481
|
+
current?: string;
|
|
482
|
+
start?: string;
|
|
483
|
+
stop?: string;
|
|
484
|
+
stepType?: "rate" | "fixed";
|
|
485
|
+
multiplier?: number;
|
|
486
|
+
step?: number;
|
|
487
|
+
rangeType?: "unbounded" | "clamped" | "bounced";
|
|
488
|
+
};
|
|
489
|
+
googleAnalytics?: {
|
|
490
|
+
enableGA?: boolean;
|
|
491
|
+
trackingId?: string;
|
|
492
|
+
};
|
|
493
|
+
theme?: {
|
|
494
|
+
themeType?: "light" | "dark" | "forest" | "custom";
|
|
495
|
+
themeTextColor?: string;
|
|
496
|
+
themeSelectColor?: string;
|
|
497
|
+
themeBackgroundColor?: string;
|
|
498
|
+
};
|
|
499
|
+
ambientOcclusion?: {
|
|
500
|
+
enabled?: boolean;
|
|
501
|
+
quality?: "low" | "medium" | "high" | "extreme";
|
|
502
|
+
intensity?: number;
|
|
503
|
+
ambientOcclusionOnly?: boolean;
|
|
504
|
+
};
|
|
505
|
+
light?: {
|
|
506
|
+
lightType?: "sunLight" | "directionalLight";
|
|
507
|
+
lightDirectionX?: number;
|
|
508
|
+
lightDirectionY?: number;
|
|
509
|
+
lightDirectionZ?: number;
|
|
510
|
+
lightColor?: string;
|
|
511
|
+
lightIntensity?: number;
|
|
512
|
+
specularEnvironmentMaps?: string;
|
|
513
|
+
sphericalHarmonicCoefficients?: [x: number, y: number, z: number][];
|
|
514
|
+
imageBasedLightIntensity?: number;
|
|
515
|
+
};
|
|
516
|
+
render?: {
|
|
517
|
+
antialias?: "low" | "medium" | "high" | "extreme";
|
|
518
|
+
debugFramePerSecond?: boolean;
|
|
519
|
+
};
|
|
520
|
+
};
|
|
521
|
+
|
|
344
522
|
export type EngineComponent = ForwardRefExoticComponent<
|
|
345
523
|
PropsWithoutRef<EngineProps> & RefAttributes<EngineRef>
|
|
346
524
|
>;
|
|
@@ -356,8 +534,12 @@ export type Engine = {
|
|
|
356
534
|
export type RequestingRenderMode = -1 | 0 | 1; // -1: force render on every postUpdate, 0: no request to render, 1: request one frame
|
|
357
535
|
|
|
358
536
|
export type SketchRef = {
|
|
359
|
-
getType: () => SketchType | undefined;
|
|
360
537
|
setType: (type: SketchType | undefined, from?: "editor" | "plugin") => void;
|
|
361
|
-
|
|
362
|
-
|
|
538
|
+
setColor: (color: string) => void;
|
|
539
|
+
setDefaultAppearance: (appearance: SketchAppearance) => void;
|
|
540
|
+
disableShadow: (disable: boolean) => void;
|
|
541
|
+
enableRelativeHeight: (enable: boolean) => void;
|
|
542
|
+
createDataOnly: (dataOnly: boolean) => void;
|
|
543
|
+
allowRightClickToAbort: (allow: boolean) => void;
|
|
544
|
+
allowAutoResetInteractionMode: (allow: boolean) => void;
|
|
363
545
|
};
|
|
@@ -62,12 +62,12 @@ export type TimelineCommit = (PlayCommand | PauseCommand | SetTimeCommand | SetO
|
|
|
62
62
|
|
|
63
63
|
export type TimelineCommitter = {
|
|
64
64
|
source:
|
|
65
|
+
| "overrideSceneProperty"
|
|
65
66
|
| "widgetContext"
|
|
66
67
|
| "pluginAPI"
|
|
67
68
|
| "featureResource"
|
|
68
69
|
| "storyTimelineBlock"
|
|
69
|
-
| "storyPage"
|
|
70
|
-
| "initialize";
|
|
70
|
+
| "storyPage";
|
|
71
71
|
id?: string;
|
|
72
72
|
};
|
|
73
73
|
|
|
@@ -193,9 +193,7 @@ export default ({ init, engineRef, timelineManagerRef }: Props) => {
|
|
|
193
193
|
onCommit,
|
|
194
194
|
offCommit,
|
|
195
195
|
handleTick,
|
|
196
|
-
|
|
197
|
-
return engineRef?.current?.tick;
|
|
198
|
-
},
|
|
196
|
+
tick: engineRef?.current?.tick,
|
|
199
197
|
};
|
|
200
198
|
}, [
|
|
201
199
|
options,
|
package/src/Map/utils.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { cloneDeep, mergeWith, omit } from "lodash-es";
|
|
2
|
+
import { type RefObject, useCallback, useRef, useState, useMemo } from "react";
|
|
2
3
|
|
|
3
4
|
export function useGet<T>(value: T): () => T {
|
|
4
5
|
const ref = useRef<T>(value);
|
|
@@ -14,6 +15,47 @@ export function wrapRef<T>(ref: RefObject<T>, keys: FunctionKeys<T>): WrappedRef
|
|
|
14
15
|
) as WrappedRef<T>;
|
|
15
16
|
}
|
|
16
17
|
|
|
18
|
+
export function mergeProperty(a: any, b: any) {
|
|
19
|
+
const a2 = cloneDeep(a);
|
|
20
|
+
return mergeWith(
|
|
21
|
+
a2,
|
|
22
|
+
b,
|
|
23
|
+
(
|
|
24
|
+
s: any,
|
|
25
|
+
v: any,
|
|
26
|
+
_k: string | number | symbol,
|
|
27
|
+
_obj: any,
|
|
28
|
+
_src: any,
|
|
29
|
+
stack: { size: number },
|
|
30
|
+
) => (stack.size > 0 || Array.isArray(v) ? v ?? s : undefined),
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function useOverriddenProperty<T extends {}>(
|
|
35
|
+
property: T | undefined,
|
|
36
|
+
): [T, (pluginId: string, property: T) => void] {
|
|
37
|
+
const [overriddenProperties, setOverrideProperty] = useState<{
|
|
38
|
+
[pluginId: string]: any;
|
|
39
|
+
}>({});
|
|
40
|
+
const { overriddenPropertyCommon, overriddenProperty } = useMemo(() => {
|
|
41
|
+
const { "": overriddenPropertyCommon, ...overriddenProperty } = overriddenProperties;
|
|
42
|
+
return { overriddenPropertyCommon, overriddenProperty };
|
|
43
|
+
}, [overriddenProperties]);
|
|
44
|
+
|
|
45
|
+
const overrideProperty = useCallback((pluginId: string, property: any) => {
|
|
46
|
+
setOverrideProperty(p => (property ? { ...p, [pluginId || ""]: property } : omit(p, pluginId)));
|
|
47
|
+
}, []);
|
|
48
|
+
|
|
49
|
+
const mergedProperty = useMemo(() => {
|
|
50
|
+
return [overriddenPropertyCommon, ...Object.values(overriddenProperty)].reduce(
|
|
51
|
+
(p, v) => mergeProperty(p, v),
|
|
52
|
+
property,
|
|
53
|
+
);
|
|
54
|
+
}, [property, overriddenPropertyCommon, overriddenProperty]);
|
|
55
|
+
|
|
56
|
+
return [mergedProperty, overrideProperty];
|
|
57
|
+
}
|
|
58
|
+
|
|
17
59
|
export type FunctionKeys<T> = {
|
|
18
60
|
[P in keyof T as T[P] extends (...args: any[]) => any ? P : never]: 1;
|
|
19
61
|
};
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { createContext } from "react";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
LayerEditEvent,
|
|
5
|
+
LayerSelectionReason,
|
|
6
|
+
LayerVisibilityEvent,
|
|
7
|
+
SceneProperty,
|
|
8
|
+
} from "../engines";
|
|
4
9
|
import { ComputedFeature, ComputedLayer } from "../mantle";
|
|
5
10
|
import {
|
|
6
11
|
LayerLoadEvent,
|
|
@@ -23,6 +28,8 @@ type CoreContext = {
|
|
|
23
28
|
};
|
|
24
29
|
selectedComputedFeature?: ComputedFeature | undefined;
|
|
25
30
|
viewport?: Viewport;
|
|
31
|
+
overriddenSceneProperty?: SceneProperty;
|
|
32
|
+
overrideSceneProperty?: (pluginId: string, property: SceneProperty) => void;
|
|
26
33
|
handleCameraForceHorizontalRollChange?: (enable?: boolean) => void;
|
|
27
34
|
handleInteractionModeChange?: (mode?: InteractionModeType | undefined) => void;
|
|
28
35
|
onSketchPluginFeatureCreate?: (cb: SketchEventCallback) => void;
|
package/src/Visualizer/hooks.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { clone } from "lodash-es";
|
|
1
2
|
import { Ref, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
|
|
2
3
|
|
|
3
4
|
import type { ComputedFeature, Feature, LatLng, SelectedFeatureInfo } from "../mantle";
|
|
@@ -6,6 +7,7 @@ import type {
|
|
|
6
7
|
LayerSelectionReason,
|
|
7
8
|
Camera,
|
|
8
9
|
ComputedLayer,
|
|
10
|
+
SceneProperty,
|
|
9
11
|
LayerEditEvent,
|
|
10
12
|
CursorType,
|
|
11
13
|
LayerVisibilityEvent,
|
|
@@ -13,22 +15,21 @@ import type {
|
|
|
13
15
|
LayerSelectWithRectStart,
|
|
14
16
|
LayerSelectWithRectMove,
|
|
15
17
|
LayerSelectWithRectEnd,
|
|
16
|
-
ViewerProperty,
|
|
17
18
|
} from "../Map";
|
|
19
|
+
import { useOverriddenProperty } from "../Map";
|
|
18
20
|
import { SketchEventCallback, SketchEventProps, SketchType } from "../Map/Sketch/types";
|
|
19
21
|
import { TimelineManagerRef } from "../Map/useTimelineManager";
|
|
20
22
|
|
|
21
23
|
import type { InteractionModeType } from "./interactionMode";
|
|
22
24
|
import { INTERACTION_MODES } from "./interactionMode";
|
|
23
|
-
import useCoreAPI from "./useCoreAPI";
|
|
24
25
|
import useViewport from "./useViewport";
|
|
25
26
|
|
|
26
27
|
export default function useHooks(
|
|
27
28
|
{
|
|
28
29
|
camera: initialCamera,
|
|
29
30
|
interactionMode: initialInteractionMode,
|
|
31
|
+
sceneProperty,
|
|
30
32
|
zoomedLayerId,
|
|
31
|
-
viewerProperty,
|
|
32
33
|
onLayerSelect,
|
|
33
34
|
onCameraChange,
|
|
34
35
|
onInteractionModeChange,
|
|
@@ -38,8 +39,8 @@ export default function useHooks(
|
|
|
38
39
|
}: {
|
|
39
40
|
camera?: Camera;
|
|
40
41
|
interactionMode?: InteractionModeType;
|
|
42
|
+
sceneProperty?: SceneProperty;
|
|
41
43
|
zoomedLayerId?: string;
|
|
42
|
-
viewerProperty?: ViewerProperty;
|
|
43
44
|
onLayerSelect?: (
|
|
44
45
|
layerId: string | undefined,
|
|
45
46
|
layer: (() => Promise<ComputedLayer | undefined>) | undefined,
|
|
@@ -110,6 +111,70 @@ export default function useHooks(
|
|
|
110
111
|
|
|
111
112
|
const timelineManagerRef: TimelineManagerRef = useRef();
|
|
112
113
|
|
|
114
|
+
// scene
|
|
115
|
+
const [overriddenSceneProperty, originalOverrideSceneProperty] =
|
|
116
|
+
useOverriddenProperty(sceneProperty);
|
|
117
|
+
|
|
118
|
+
const overrideSceneProperty = useCallback(
|
|
119
|
+
(pluginId: string, property: SceneProperty) => {
|
|
120
|
+
if (property.timeline) {
|
|
121
|
+
const filteredTimeline = clone(property.timeline);
|
|
122
|
+
delete filteredTimeline.visible;
|
|
123
|
+
if (Object.keys(filteredTimeline).length > 0) {
|
|
124
|
+
if (
|
|
125
|
+
filteredTimeline.current !== undefined ||
|
|
126
|
+
filteredTimeline.start !== undefined ||
|
|
127
|
+
filteredTimeline.stop !== undefined
|
|
128
|
+
) {
|
|
129
|
+
timelineManagerRef?.current?.commit({
|
|
130
|
+
cmd: "SET_TIME",
|
|
131
|
+
payload: {
|
|
132
|
+
start:
|
|
133
|
+
filteredTimeline.start ?? timelineManagerRef?.current?.computedTimeline.start,
|
|
134
|
+
stop: filteredTimeline.stop ?? timelineManagerRef?.current?.computedTimeline.stop,
|
|
135
|
+
current:
|
|
136
|
+
filteredTimeline.current ?? timelineManagerRef?.current?.computedTimeline.current,
|
|
137
|
+
},
|
|
138
|
+
committer: {
|
|
139
|
+
source: "overrideSceneProperty",
|
|
140
|
+
id: pluginId,
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (
|
|
145
|
+
filteredTimeline.multiplier !== undefined ||
|
|
146
|
+
filteredTimeline.stepType !== undefined ||
|
|
147
|
+
filteredTimeline.rangeType !== undefined
|
|
148
|
+
) {
|
|
149
|
+
timelineManagerRef?.current?.commit({
|
|
150
|
+
cmd: "SET_OPTIONS",
|
|
151
|
+
payload: {
|
|
152
|
+
stepType: filteredTimeline.stepType,
|
|
153
|
+
multiplier: filteredTimeline.multiplier,
|
|
154
|
+
rangeType: filteredTimeline.rangeType,
|
|
155
|
+
},
|
|
156
|
+
committer: {
|
|
157
|
+
source: "overrideSceneProperty",
|
|
158
|
+
id: pluginId,
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
if (filteredTimeline.animation !== undefined) {
|
|
163
|
+
timelineManagerRef?.current?.commit({
|
|
164
|
+
cmd: filteredTimeline.animation ? "PLAY" : "PAUSE",
|
|
165
|
+
committer: {
|
|
166
|
+
source: "overrideSceneProperty",
|
|
167
|
+
id: pluginId,
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
originalOverrideSceneProperty(pluginId, property);
|
|
174
|
+
},
|
|
175
|
+
[timelineManagerRef, originalOverrideSceneProperty],
|
|
176
|
+
);
|
|
177
|
+
|
|
113
178
|
// camera
|
|
114
179
|
const [camera, changeCamera] = useValue(initialCamera, onCameraChange);
|
|
115
180
|
|
|
@@ -241,6 +306,8 @@ export default function useHooks(
|
|
|
241
306
|
selectedLayer,
|
|
242
307
|
selectedComputedFeature,
|
|
243
308
|
viewport,
|
|
309
|
+
overriddenSceneProperty,
|
|
310
|
+
overrideSceneProperty,
|
|
244
311
|
handleCameraForceHorizontalRollChange,
|
|
245
312
|
handleInteractionModeChange: changeInteractionMode,
|
|
246
313
|
onSketchPluginFeatureCreate,
|
|
@@ -257,6 +324,8 @@ export default function useHooks(
|
|
|
257
324
|
selectedLayer,
|
|
258
325
|
selectedComputedFeature,
|
|
259
326
|
viewport,
|
|
327
|
+
overriddenSceneProperty,
|
|
328
|
+
overrideSceneProperty,
|
|
260
329
|
changeInteractionMode,
|
|
261
330
|
handleCameraForceHorizontalRollChange,
|
|
262
331
|
onLayerEdit,
|
|
@@ -280,20 +349,20 @@ export default function useHooks(
|
|
|
280
349
|
[],
|
|
281
350
|
);
|
|
282
351
|
|
|
283
|
-
useCoreAPI({ viewerProperty });
|
|
284
|
-
|
|
285
352
|
return {
|
|
286
353
|
mapRef,
|
|
287
354
|
wrapperRef,
|
|
288
355
|
selectedFeature,
|
|
289
356
|
camera,
|
|
290
357
|
featureFlags,
|
|
358
|
+
overriddenSceneProperty,
|
|
291
359
|
isLayerDragging,
|
|
292
360
|
timelineManagerRef,
|
|
293
361
|
cursor,
|
|
294
362
|
cameraForceHorizontalRoll,
|
|
295
363
|
coreContextValue,
|
|
296
364
|
containerStyle,
|
|
365
|
+
overrideSceneProperty,
|
|
297
366
|
handleLayerSelect,
|
|
298
367
|
handleLayerDrag,
|
|
299
368
|
handleLayerDrop,
|
|
@@ -15,11 +15,11 @@ export const Cesium: Story = {
|
|
|
15
15
|
args: {
|
|
16
16
|
ready: true,
|
|
17
17
|
engine: "cesium",
|
|
18
|
-
|
|
18
|
+
sceneProperty: {
|
|
19
19
|
tiles: [
|
|
20
20
|
{
|
|
21
21
|
id: "default",
|
|
22
|
-
|
|
22
|
+
tile_type: "default",
|
|
23
23
|
},
|
|
24
24
|
],
|
|
25
25
|
},
|
|
@@ -72,13 +72,57 @@ export const API: Story = {
|
|
|
72
72
|
args: {
|
|
73
73
|
ready: true,
|
|
74
74
|
engine: "cesium",
|
|
75
|
-
|
|
75
|
+
sceneProperty: {
|
|
76
76
|
tiles: [
|
|
77
77
|
{
|
|
78
78
|
id: "default",
|
|
79
|
-
|
|
79
|
+
tile_type: "default",
|
|
80
80
|
},
|
|
81
81
|
],
|
|
82
82
|
},
|
|
83
83
|
},
|
|
84
84
|
};
|
|
85
|
+
|
|
86
|
+
export const Plugin = {
|
|
87
|
+
args: {
|
|
88
|
+
ready: true,
|
|
89
|
+
engine: "cesium",
|
|
90
|
+
sceneProperty: {
|
|
91
|
+
tiles: [
|
|
92
|
+
{
|
|
93
|
+
id: "default",
|
|
94
|
+
tile_type: "default",
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
widgetAlignSystem: {
|
|
99
|
+
outer: {
|
|
100
|
+
left: {
|
|
101
|
+
top: {
|
|
102
|
+
align: "start",
|
|
103
|
+
widgets: [
|
|
104
|
+
{
|
|
105
|
+
id: "plugin",
|
|
106
|
+
pluginId: "plugin",
|
|
107
|
+
extensionId: "test",
|
|
108
|
+
...({
|
|
109
|
+
__REEARTH_SOURCECODE: `reearth.layers.add(${JSON.stringify({
|
|
110
|
+
id: "l",
|
|
111
|
+
type: "simple",
|
|
112
|
+
data: {
|
|
113
|
+
type: "geojson",
|
|
114
|
+
value: { type: "Feature", geometry: { type: "Point", coordinates: [0, 0] } },
|
|
115
|
+
},
|
|
116
|
+
marker: {
|
|
117
|
+
imageColor: "#fff",
|
|
118
|
+
},
|
|
119
|
+
})});`,
|
|
120
|
+
} as any),
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
};
|