@reearth/core 0.0.7-alpha.7 → 0.0.7-alpha.70
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/LICENSE +177 -0
- package/dist/core.js +71433 -61051
- package/dist/core.umd.cjs +666 -680
- package/dist/{index-DqatWUTw.js → index-CUJ6HGQn.js} +1021 -908
- package/dist/index.d.ts +195 -73
- package/package.json +88 -74
- package/src/Map/ClusteredLayers/index.tsx +1 -1
- package/src/Map/Geoid/index.tsx +68 -0
- package/src/Map/Geoid/types.ts +8 -0
- package/src/Map/Layer/hooks.ts +7 -4
- package/src/Map/Layer/index.tsx +3 -1
- package/src/Map/Layers/hooks.ts +45 -12
- package/src/Map/Layers/index.tsx +13 -2
- package/src/Map/Layers/keys.ts +1 -0
- package/src/Map/Sketch/hooks.ts +454 -411
- package/src/Map/Sketch/index.tsx +68 -21
- package/src/Map/Sketch/sketchMachine.ts +640 -237
- package/src/Map/Sketch/sketchMachine.typegen.ts +58 -1
- package/src/Map/Sketch/types.ts +10 -20
- package/src/Map/Sketch/usePluginSketchLayer.ts +105 -0
- package/src/Map/Sketch/useSketch.ts +558 -0
- package/src/Map/Sketch/useSketchFeature.ts +198 -0
- package/src/Map/SpatialId/constants.ts +21 -0
- package/src/Map/SpatialId/hooks.ts +448 -0
- package/src/Map/SpatialId/index.tsx +63 -0
- package/src/Map/SpatialId/types.ts +68 -0
- package/src/Map/SpatialId/utils.ts +65 -0
- package/src/Map/hooks.ts +54 -8
- package/src/Map/index.tsx +42 -9
- package/src/Map/ref.ts +32 -3
- package/src/Map/types/customProvider.ts +32 -0
- package/src/Map/types/index.ts +42 -3
- package/src/Map/types/viewerProperty.ts +12 -1
- package/src/Map/useTimelineManager.ts +4 -10
- package/src/Map/utils.ts +1 -1
- package/src/Visualizer/Error.tsx +4 -1
- package/src/Visualizer/context.tsx +5 -5
- package/src/Visualizer/coreContext.tsx +3 -1
- package/src/Visualizer/hooks.ts +56 -22
- package/src/Visualizer/index.stories.tsx +15 -0
- package/src/Visualizer/index.tsx +29 -6
- package/src/Visualizer/useViewport.ts +1 -1
- package/src/engines/Cesium/Feature/Box/hooks/box.ts +4 -4
- package/src/engines/Cesium/Feature/Box/hooks/edge.ts +1 -1
- package/src/engines/Cesium/Feature/Box/hooks/side.ts +1 -1
- package/src/engines/Cesium/Feature/Box/utils.ts +6 -0
- package/src/engines/Cesium/Feature/Ellipse/index.stories.tsx +0 -1
- package/src/engines/Cesium/Feature/Frustum/getFieldOfView.ts +2 -0
- package/src/engines/Cesium/Feature/Frustum/index.stories.tsx +0 -1
- package/src/engines/Cesium/Feature/HeatMap/HeatmapMesh.tsx +1 -1
- package/src/engines/Cesium/Feature/Marker/index.tsx +1 -1
- package/src/engines/Cesium/Feature/Model/index.stories.tsx +1 -2
- package/src/engines/Cesium/Feature/Model/index.tsx +3 -3
- package/src/engines/Cesium/Feature/PhotoOverlay/hooks.ts +2 -2
- package/src/engines/Cesium/Feature/PhotoOverlay/index.tsx +3 -1
- package/src/engines/Cesium/Feature/Polygon/index.stories.tsx +0 -1
- package/src/engines/Cesium/Feature/Polygon/index.tsx +6 -4
- package/src/engines/Cesium/Feature/Raster/index.stories.tsx +0 -1
- package/src/engines/Cesium/Feature/Raster/mvt.ts +2 -1
- package/src/engines/Cesium/Feature/Resource/index.stories.tsx +0 -1
- package/src/engines/Cesium/Feature/Resource/index.tsx +1 -27
- package/src/engines/Cesium/Feature/Resource/utils.ts +86 -91
- package/src/engines/Cesium/Feature/Tileset/hooks.ts +273 -87
- package/src/engines/Cesium/Feature/Tileset/index.stories.tsx +0 -1
- package/src/engines/Cesium/Feature/Tileset/index.tsx +7 -14
- package/src/engines/Cesium/Feature/Tileset/useClippingBox.ts +2 -2
- package/src/engines/Cesium/Feature/Tileset/useDrawClipping.ts +2 -2
- package/src/engines/Cesium/Feature/context.ts +3 -0
- package/src/engines/Cesium/Feature/index.tsx +27 -10
- package/src/engines/Cesium/Feature/utils.tsx +20 -12
- package/src/engines/Cesium/PostProcesses/hbao/AmbientOcclusion.tsx +7 -4
- package/src/engines/Cesium/Sketch/ControlPoint.tsx +128 -24
- package/src/engines/Cesium/Sketch/ExtrudedControlPoints.tsx +70 -25
- package/src/engines/Cesium/Sketch/ExtrudedMeasurement.tsx +3 -1
- package/src/engines/Cesium/Sketch/ExtrudedPolygonEntity.tsx +14 -14
- package/src/engines/Cesium/Sketch/PolylineEntity.tsx +7 -4
- package/src/engines/Cesium/Sketch/SurfaceAddingPoints.tsx +60 -0
- package/src/engines/Cesium/Sketch/SurfaceControlPoints.tsx +126 -35
- package/src/engines/Cesium/Sketch/constants.ts +5 -0
- package/src/engines/Cesium/Sketch/index.tsx +68 -29
- package/src/engines/Cesium/SpatialId/CoordinateIndicator.tsx +28 -0
- package/src/engines/Cesium/SpatialId/SpatialIdSpace.tsx +33 -0
- package/src/engines/Cesium/SpatialId/VerticalSpaceIndicator.tsx +32 -0
- package/src/engines/Cesium/SpatialId/index.ts +3 -0
- package/src/engines/Cesium/common.ts +55 -18
- package/src/engines/Cesium/core/Clock.tsx +1 -1
- package/src/engines/Cesium/core/Globe/index.tsx +69 -0
- package/src/engines/Cesium/core/Globe/useTerrainProviderPromise.ts +81 -0
- package/src/engines/Cesium/core/Imagery.test.ts +299 -42
- package/src/engines/Cesium/core/Imagery.tsx +282 -54
- package/src/engines/Cesium/core/Indicator/Indicator.tsx +2 -2
- package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImagery.tsx +13 -6
- package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImageryLayer.tsx +2 -1
- package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImageryProvider.ts +3 -4
- package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapVectorMapLabel.tsx +14 -2
- package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/helpers.ts +1 -1
- package/src/engines/Cesium/core/labels/LabelImageryLayers.tsx +10 -1
- package/src/engines/Cesium/core/presets.ts +122 -48
- package/src/engines/Cesium/helpers/getGeometryFromEntity.ts +55 -0
- package/src/engines/Cesium/hooks/useCamera.ts +2 -2
- package/src/engines/Cesium/hooks/useCameraLimiter.ts +1 -1
- package/src/engines/Cesium/hooks/useEngineRef.ts +52 -5
- package/src/engines/Cesium/hooks/useExplicitRender.ts +2 -2
- package/src/engines/Cesium/hooks/useInstance.ts +1 -1
- package/src/engines/Cesium/hooks/useLayerDragDrop.ts +3 -3
- package/src/engines/Cesium/hooks/useLayerSelectWithRect.ts +2 -2
- package/src/engines/Cesium/hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts +115 -67
- package/src/engines/Cesium/hooks/useViewerProperty.ts +1 -1
- package/src/engines/Cesium/hooks.ts +68 -17
- package/src/engines/Cesium/index.stories.tsx +0 -1
- package/src/engines/Cesium/index.tsx +38 -8
- package/src/engines/Cesium/pickMany.ts +2 -0
- package/src/engines/Cesium/types.ts +1 -1
- package/src/engines/Cesium/utils/mouse.ts +1 -1
- package/src/engines/Cesium/utils/utils.ts +1 -1
- package/src/mantle/atoms/compute.test.ts +4 -4
- package/src/mantle/atoms/compute.ts +8 -4
- package/src/mantle/compat/forward.ts +1 -1
- package/src/mantle/data/geojson.ts +49 -26
- package/src/mantle/data/georss.ts +2 -2
- package/src/mantle/data/gml.ts +2 -2
- package/src/mantle/data/gpx.ts +2 -2
- package/src/mantle/data/shapefile/parseZip.ts +1 -0
- package/src/mantle/evaluator/simple/expression/README.md +392 -0
- package/src/mantle/evaluator/simple/expression/expression.test.ts +137 -0
- package/src/mantle/evaluator/simple/expression/node.ts +10 -12
- package/src/mantle/evaluator/simple/expression/variableReplacer.test.ts +178 -0
- package/src/mantle/evaluator/simple/expression/variableReplacer.ts +24 -11
- package/src/mantle/types/appearance.ts +4 -2
- package/src/mantle/types/index.ts +5 -0
- package/src/{Visualizer → shared}/interactionMode.ts +3 -2
- package/src/test/setup.ts +1 -1
- package/src/test/utils.tsx +1 -1
- package/src/types/modules.d.ts +96 -0
- package/src/utils/StringMatcher.ts +1 -1
- package/src/utils/image.ts +2 -12
- package/src/utils/use-delayed-count.ts +1 -1
- package/src/utils/use-dnd/drop.ts +1 -1
- package/src/utils/util.ts +1 -1
- package/src/utils/value.ts +2 -2
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
- package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
- package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
- package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
- package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
- package/dist/cesium/Assets/Images/ion-credit.png +0 -0
- package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
- package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
- package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
- package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
- package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
- package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
- package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
- package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
- package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
- package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
- package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
- package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
- package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
- package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
- package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
- package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
- package/dist/cesium/Assets/Textures/maki/building.png +0 -0
- package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
- package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
- package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
- package/dist/cesium/Assets/Textures/maki/car.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
- package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
- package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
- package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
- package/dist/cesium/Assets/Textures/maki/city.png +0 -0
- package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
- package/dist/cesium/Assets/Textures/maki/college.png +0 -0
- package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
- package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
- package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
- package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
- package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
- package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
- package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
- package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
- package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
- package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
- package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
- package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
- package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
- package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
- package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
- package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
- package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
- package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
- package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
- package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
- package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
- package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
- package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
- package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
- package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
- package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
- package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
- package/dist/cesium/Assets/Textures/maki/library.png +0 -0
- package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
- package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
- package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
- package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
- package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
- package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
- package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
- package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
- package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
- package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
- package/dist/cesium/Assets/Textures/maki/music.png +0 -0
- package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
- package/dist/cesium/Assets/Textures/maki/park.png +0 -0
- package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
- package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
- package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
- package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
- package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
- package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
- package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
- package/dist/cesium/Assets/Textures/maki/police.png +0 -0
- package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
- package/dist/cesium/Assets/Textures/maki/post.png +0 -0
- package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
- package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
- package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
- package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
- package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
- package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
- package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
- package/dist/cesium/Assets/Textures/maki/school.png +0 -0
- package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
- package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
- package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
- package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
- package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
- package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
- package/dist/cesium/Assets/Textures/maki/square.png +0 -0
- package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
- package/dist/cesium/Assets/Textures/maki/star.png +0 -0
- package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
- package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
- package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
- package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
- package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
- package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
- package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
- package/dist/cesium/Assets/Textures/maki/town.png +0 -0
- package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
- package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
- package/dist/cesium/Assets/Textures/maki/village.png +0 -0
- package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
- package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
- package/dist/cesium/Assets/Textures/maki/water.png +0 -0
- package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
- package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
- package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
- package/dist/cesium/Assets/Textures/pin.svg +0 -1
- package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
- package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
- package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
- package/dist/cesium/ThirdParty/Workers/package.json +0 -1
- package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
- package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
- package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
- package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
- package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
- package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
- package/dist/cesium/Widgets/Animation/Animation.css +0 -127
- package/dist/cesium/Widgets/Animation/lighter.css +0 -70
- package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
- package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
- package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
- package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
- package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
- package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
- package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
- package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
- package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
- package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
- package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
- package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
- package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
- package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
- package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
- package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
- package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
- package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
- package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
- package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
- package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
- package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
- package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
- package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
- package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
- package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
- package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
- package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
- package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
- package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
- package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
- package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
- package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
- package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
- package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
- package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
- package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
- package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
- package/dist/cesium/Widgets/lighter.css +0 -237
- package/dist/cesium/Widgets/lighterShared.css +0 -46
- package/dist/cesium/Widgets/shared.css +0 -103
- package/dist/cesium/Widgets/widgets.css +0 -1346
- package/dist/cesium/Workers/chunk-2YD5QWGR.js +0 -28
- package/dist/cesium/Workers/chunk-3T4KR75X.js +0 -26
- package/dist/cesium/Workers/chunk-46KFVW24.js +0 -26
- package/dist/cesium/Workers/chunk-4EI6PP43.js +0 -28
- package/dist/cesium/Workers/chunk-4RS52VIY.js +0 -26
- package/dist/cesium/Workers/chunk-4YLYA3DC.js +0 -26
- package/dist/cesium/Workers/chunk-5ENAGXBI.js +0 -26
- package/dist/cesium/Workers/chunk-5VIB3TI5.js +0 -26
- package/dist/cesium/Workers/chunk-6NGZLDFZ.js +0 -26
- package/dist/cesium/Workers/chunk-6RGNWVZ2.js +0 -27
- package/dist/cesium/Workers/chunk-7AZZVJ52.js +0 -26
- package/dist/cesium/Workers/chunk-AMXAQQEL.js +0 -26
- package/dist/cesium/Workers/chunk-AQW44ZPC.js +0 -26
- package/dist/cesium/Workers/chunk-CPCMDW6Z.js +0 -26
- package/dist/cesium/Workers/chunk-DNL2WDRL.js +0 -26
- package/dist/cesium/Workers/chunk-ERW7V247.js +0 -26
- package/dist/cesium/Workers/chunk-EYRIA4TP.js +0 -26
- package/dist/cesium/Workers/chunk-F7RQIJML.js +0 -26
- package/dist/cesium/Workers/chunk-FPZMU6QP.js +0 -26
- package/dist/cesium/Workers/chunk-FZDVQW7A.js +0 -26
- package/dist/cesium/Workers/chunk-GAZ2U4FO.js +0 -26
- package/dist/cesium/Workers/chunk-I44IOOT4.js +0 -26
- package/dist/cesium/Workers/chunk-IALXUAD4.js +0 -26
- package/dist/cesium/Workers/chunk-IXBUEUZL.js +0 -26
- package/dist/cesium/Workers/chunk-J3GCYV5K.js +0 -26
- package/dist/cesium/Workers/chunk-KGSZTFHZ.js +0 -26
- package/dist/cesium/Workers/chunk-KKKPU2CI.js +0 -26
- package/dist/cesium/Workers/chunk-KTEJE5KE.js +0 -26
- package/dist/cesium/Workers/chunk-KYZ3DYY6.js +0 -26
- package/dist/cesium/Workers/chunk-L2QG4MRI.js +0 -26
- package/dist/cesium/Workers/chunk-MCE3KFYN.js +0 -26
- package/dist/cesium/Workers/chunk-MMLDGXML.js +0 -26
- package/dist/cesium/Workers/chunk-MTBRPBDQ.js +0 -26
- package/dist/cesium/Workers/chunk-OKT6VBRK.js +0 -26
- package/dist/cesium/Workers/chunk-PHYDKLSY.js +0 -26
- package/dist/cesium/Workers/chunk-PWPX3224.js +0 -26
- package/dist/cesium/Workers/chunk-QHOVE6WG.js +0 -26
- package/dist/cesium/Workers/chunk-QJ6MBL22.js +0 -26
- package/dist/cesium/Workers/chunk-QKO6VIG2.js +0 -26
- package/dist/cesium/Workers/chunk-QVEE4QL2.js +0 -26
- package/dist/cesium/Workers/chunk-RXQOQZ7S.js +0 -26
- package/dist/cesium/Workers/chunk-S3ZKQKMM.js +0 -26
- package/dist/cesium/Workers/chunk-SFEUMZSK.js +0 -26
- package/dist/cesium/Workers/chunk-T75MW4X3.js +0 -26
- package/dist/cesium/Workers/chunk-TVO2A75R.js +0 -66
- package/dist/cesium/Workers/chunk-UHR36K45.js +0 -27
- package/dist/cesium/Workers/chunk-UKJCDZOR.js +0 -26
- package/dist/cesium/Workers/chunk-VKVIYER6.js +0 -26
- package/dist/cesium/Workers/chunk-VPIQWTRZ.js +0 -26
- package/dist/cesium/Workers/chunk-XSX5HRFC.js +0 -26
- package/dist/cesium/Workers/chunk-Z5WQQHSL.js +0 -26
- package/dist/cesium/Workers/chunk-Z7B2VEL5.js +0 -26
- package/dist/cesium/Workers/combineGeometry.js +0 -26
- package/dist/cesium/Workers/createBoxGeometry.js +0 -26
- package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createCircleGeometry.js +0 -26
- package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
- package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
- package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
- package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
- package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
- package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
- package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createGeometry.js +0 -26
- package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
- package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
- package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
- package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
- package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
- package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
- package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
- package/dist/cesium/Workers/createSphereGeometry.js +0 -26
- package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
- package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
- package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
- package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
- package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
- package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
- package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
- package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
- package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
- package/dist/cesium/Workers/createWallGeometry.js +0 -26
- package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
- package/dist/cesium/Workers/decodeDraco.js +0 -26
- package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
- package/dist/cesium/Workers/decodeI3S.js +0 -26
- package/dist/cesium/Workers/transcodeKTX2.js +0 -56
- package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
- package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
- package/src/engines/Cesium/core/Globe.tsx +0 -104
- /package/src/{Visualizer → shared}/featureFlags.ts +0 -0
- /package/src/{Map/Sketch/utils.ts → utils/use-window-event.ts} +0 -0
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Color,
|
|
3
|
+
ImageryLayer as CesiumImageryLayer,
|
|
3
4
|
ImageryProvider,
|
|
4
5
|
TextureMagnificationFilter,
|
|
5
6
|
TextureMinificationFilter,
|
|
7
|
+
UrlTemplateImageryProvider,
|
|
6
8
|
} from "cesium";
|
|
7
9
|
import { isEqual } from "lodash-es";
|
|
8
|
-
import { useCallback, useMemo, useRef,
|
|
9
|
-
import {
|
|
10
|
+
import { useCallback, useMemo, useRef, useEffect } from "react";
|
|
11
|
+
import { useCesium } from "resium";
|
|
10
12
|
|
|
11
|
-
import {
|
|
13
|
+
import type { CustomProviderConfig } from "../../../Map/types/customProvider";
|
|
14
|
+
|
|
15
|
+
import { isValidPresetTileType, PresetTileType, tiles as tilePresets } from "./presets";
|
|
12
16
|
|
|
13
17
|
export type ImageryLayerData = {
|
|
14
18
|
id: string;
|
|
@@ -22,6 +26,7 @@ export type Tile = {
|
|
|
22
26
|
id: string;
|
|
23
27
|
url?: string;
|
|
24
28
|
type?: string;
|
|
29
|
+
cesiumIonAssetId?: number;
|
|
25
30
|
opacity?: number;
|
|
26
31
|
zoomLevel?: number[];
|
|
27
32
|
zoomLevelForURL?: number[];
|
|
@@ -31,61 +36,223 @@ export type Tile = {
|
|
|
31
36
|
export type Props = {
|
|
32
37
|
tiles?: Tile[];
|
|
33
38
|
cesiumIonAccessToken?: string;
|
|
39
|
+
customProvider?: CustomProviderConfig;
|
|
40
|
+
onTilesChange?: () => void;
|
|
34
41
|
};
|
|
35
42
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
// NOTE: This component intentionally bypasses Resium's declarative <ImageryLayer />.
|
|
44
|
+
// Resium wraps provider creation in queueMicrotask; under React 18 Strict Mode the effect
|
|
45
|
+
// cleanup runs before that microtask resolves, so the layer reference is undefined at cleanup
|
|
46
|
+
// time and old layers are never removed — they accumulate silently behind new ones.
|
|
47
|
+
// Direct imageryLayerCollection management with a `cancelled` flag is the only safe fix.
|
|
48
|
+
export default function ImageryLayers({
|
|
49
|
+
tiles,
|
|
50
|
+
cesiumIonAccessToken,
|
|
51
|
+
customProvider,
|
|
52
|
+
onTilesChange,
|
|
53
|
+
}: Props) {
|
|
54
|
+
const { imageryLayerCollection, scene } = useCesium();
|
|
55
|
+
|
|
56
|
+
// Create a stable tiles reference that only changes when the content actually changes
|
|
57
|
+
// Normalize `undefined` to a stable empty array so `useImageryProviders` doesn't allocate a new default `[]` each render.
|
|
58
|
+
const emptyTiles = useMemo<Tile[]>(() => [], []);
|
|
59
|
+
const tilesValue = tiles ?? emptyTiles;
|
|
60
|
+
|
|
61
|
+
const prevTilesRef = useRef<Tile[]>(tilesValue);
|
|
62
|
+
const stableTiles = useMemo(() => {
|
|
63
|
+
if (!isEqual(prevTilesRef.current, tilesValue)) {
|
|
64
|
+
prevTilesRef.current = tilesValue;
|
|
65
|
+
}
|
|
66
|
+
return prevTilesRef.current;
|
|
67
|
+
}, [tilesValue]);
|
|
68
|
+
|
|
69
|
+
// Pass stableTiles to useImageryProviders to prevent providers from being recreated
|
|
70
|
+
// when tiles reference changes but content is the same
|
|
71
|
+
const { providers } = useImageryProviders({
|
|
72
|
+
tiles: stableTiles,
|
|
39
73
|
cesiumIonAccessToken,
|
|
74
|
+
customProvider,
|
|
40
75
|
presets: tilePresets,
|
|
41
76
|
});
|
|
42
77
|
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
78
|
+
// Store layers keyed by tile ID to allow incremental updates
|
|
79
|
+
const layersRef = useRef<
|
|
80
|
+
Map<
|
|
81
|
+
string,
|
|
82
|
+
{
|
|
83
|
+
layer: CesiumImageryLayer;
|
|
84
|
+
tile: Tile;
|
|
85
|
+
provider: Promise<ImageryProvider> | ImageryProvider;
|
|
86
|
+
}
|
|
87
|
+
>
|
|
88
|
+
>(new Map());
|
|
89
|
+
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
if (!imageryLayerCollection || !scene) return;
|
|
92
|
+
|
|
93
|
+
let cancelled = false;
|
|
94
|
+
const currentTileIds = new Set(stableTiles?.map(t => t.id) || []);
|
|
95
|
+
|
|
96
|
+
// Remove layers for tiles that no longer exist
|
|
97
|
+
layersRef.current.forEach(({ layer }, id) => {
|
|
98
|
+
if (!currentTileIds.has(id)) {
|
|
99
|
+
if (imageryLayerCollection.contains(layer)) {
|
|
100
|
+
imageryLayerCollection.remove(layer);
|
|
101
|
+
}
|
|
102
|
+
layersRef.current.delete(id);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// Track layers by their intended index to maintain order with async loading
|
|
107
|
+
const layersByIndex: (CesiumImageryLayer | null)[] = new Array(stableTiles?.length || 0).fill(
|
|
108
|
+
null,
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
const reorderLayers = () => {
|
|
112
|
+
if (cancelled || scene.isDestroyed()) return;
|
|
113
|
+
|
|
114
|
+
// Move each layer to its correct position based on layersByIndex
|
|
115
|
+
layersByIndex.forEach((layer, targetIndex) => {
|
|
116
|
+
if (!layer) return;
|
|
117
|
+
|
|
118
|
+
const currentIndex = imageryLayerCollection.indexOf(layer);
|
|
119
|
+
if (currentIndex === -1) return; // Layer not in collection
|
|
120
|
+
|
|
121
|
+
// Calculate where this layer should be: count non-null layers before it
|
|
122
|
+
const desiredIndex = layersByIndex.slice(0, targetIndex).filter(l => l !== null).length;
|
|
123
|
+
|
|
124
|
+
if (currentIndex !== desiredIndex) {
|
|
125
|
+
// Move layer to correct position
|
|
126
|
+
imageryLayerCollection.remove(layer, false); // Don't destroy
|
|
127
|
+
imageryLayerCollection.add(layer, desiredIndex);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
scene.requestRender();
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
stableTiles?.forEach((tile, i) => {
|
|
135
|
+
const { id, zoomLevel, opacity, heatmap } = tile;
|
|
136
|
+
const existing = layersRef.current.get(id);
|
|
137
|
+
const providerOrPromise = providers[id]?.[3];
|
|
138
|
+
|
|
139
|
+
if (!providerOrPromise) return;
|
|
140
|
+
|
|
141
|
+
// Check if we can reuse the existing layer with just an opacity update
|
|
142
|
+
if (existing) {
|
|
143
|
+
const prevTile = existing.tile;
|
|
144
|
+
const prevProvider = existing.provider;
|
|
145
|
+
// Must check provider reference - if provider changed (e.g. cesiumIonAccessToken updated),
|
|
146
|
+
// the layer needs to be recreated even if tile properties are the same
|
|
147
|
+
const canReuseLayer =
|
|
148
|
+
prevProvider === providerOrPromise &&
|
|
149
|
+
prevTile.type === tile.type &&
|
|
150
|
+
prevTile.url === tile.url &&
|
|
151
|
+
prevTile.cesiumIonAssetId === tile.cesiumIonAssetId &&
|
|
152
|
+
prevTile.zoomLevel?.[0] === zoomLevel?.[0] &&
|
|
153
|
+
prevTile.zoomLevel?.[1] === zoomLevel?.[1] &&
|
|
154
|
+
prevTile.heatmap === heatmap;
|
|
155
|
+
|
|
156
|
+
if (canReuseLayer) {
|
|
157
|
+
// Only opacity might have changed - update it directly if needed
|
|
158
|
+
const nextAlpha = opacity ?? 1;
|
|
159
|
+
if (existing.layer.alpha !== nextAlpha) {
|
|
160
|
+
existing.layer.alpha = nextAlpha;
|
|
161
|
+
scene.requestRender();
|
|
162
|
+
}
|
|
163
|
+
// Update stored tile and provider for next comparison
|
|
164
|
+
existing.tile = tile;
|
|
165
|
+
existing.provider = providerOrPromise;
|
|
166
|
+
layersByIndex[i] = existing.layer;
|
|
167
|
+
reorderLayers();
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Need to recreate the layer - remove the old one
|
|
172
|
+
if (imageryLayerCollection.contains(existing.layer)) {
|
|
173
|
+
imageryLayerCollection.remove(existing.layer);
|
|
174
|
+
}
|
|
175
|
+
layersRef.current.delete(id);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const doAdd = (provider: ImageryProvider) => {
|
|
179
|
+
if (!provider || cancelled || scene.isDestroyed()) return;
|
|
180
|
+
const layer = new CesiumImageryLayer(provider, {
|
|
181
|
+
minimumTerrainLevel: zoomLevel?.[0],
|
|
182
|
+
maximumTerrainLevel: zoomLevel?.[1],
|
|
183
|
+
alpha: opacity,
|
|
184
|
+
colorToAlpha: heatmap ? Color.WHITE : undefined,
|
|
185
|
+
colorToAlphaThreshold: heatmap ? 1 : undefined,
|
|
186
|
+
magnificationFilter: heatmap ? TextureMagnificationFilter.LINEAR : undefined,
|
|
187
|
+
minificationFilter: heatmap ? TextureMinificationFilter.NEAREST : undefined,
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
// Always append to avoid index out of bounds
|
|
191
|
+
imageryLayerCollection.add(layer);
|
|
192
|
+
layersByIndex[i] = layer;
|
|
193
|
+
// Store the provider reference to detect when provider changes (e.g. token update)
|
|
194
|
+
layersRef.current.set(id, { layer, tile, provider: providerOrPromise });
|
|
195
|
+
|
|
196
|
+
// Reorder all layers after each addition
|
|
197
|
+
reorderLayers();
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
if (providerOrPromise instanceof Promise) {
|
|
201
|
+
providerOrPromise
|
|
202
|
+
.then(doAdd)
|
|
203
|
+
.catch(err => console.error("Failed to load imagery provider:", err));
|
|
204
|
+
} else {
|
|
205
|
+
doAdd(providerOrPromise);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
scene.requestRender();
|
|
210
|
+
onTilesChange?.();
|
|
211
|
+
|
|
212
|
+
return () => {
|
|
213
|
+
cancelled = true;
|
|
214
|
+
// Don't remove layers on cleanup - they'll be managed by the next render
|
|
215
|
+
// This prevents flickering when tiles change
|
|
216
|
+
};
|
|
217
|
+
}, [providers, stableTiles, imageryLayerCollection, scene, onTilesChange]);
|
|
218
|
+
|
|
219
|
+
// Cleanup all layers on unmount
|
|
220
|
+
useEffect(() => {
|
|
221
|
+
const layers = layersRef.current;
|
|
222
|
+
return () => {
|
|
223
|
+
if (!imageryLayerCollection || !scene || scene.isDestroyed()) return;
|
|
224
|
+
layers.forEach(({ layer }) => {
|
|
225
|
+
if (imageryLayerCollection.contains(layer)) {
|
|
226
|
+
imageryLayerCollection.remove(layer);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
layers.clear();
|
|
230
|
+
};
|
|
231
|
+
}, [imageryLayerCollection, scene]);
|
|
232
|
+
|
|
233
|
+
return null;
|
|
76
234
|
}
|
|
77
235
|
|
|
78
|
-
type Providers = {
|
|
236
|
+
type Providers = {
|
|
237
|
+
[id: string]: [
|
|
238
|
+
string | undefined,
|
|
239
|
+
string | undefined,
|
|
240
|
+
number | undefined,
|
|
241
|
+
Promise<ImageryProvider> | ImageryProvider,
|
|
242
|
+
];
|
|
243
|
+
};
|
|
79
244
|
|
|
80
245
|
export function useImageryProviders({
|
|
81
246
|
tiles = [],
|
|
82
247
|
cesiumIonAccessToken,
|
|
248
|
+
customProvider,
|
|
83
249
|
presets,
|
|
84
250
|
}: {
|
|
85
251
|
tiles?: Tile[];
|
|
86
252
|
cesiumIonAccessToken?: string;
|
|
253
|
+
customProvider?: CustomProviderConfig;
|
|
87
254
|
presets: {
|
|
88
|
-
[
|
|
255
|
+
[K in PresetTileType]: (opts?: {
|
|
89
256
|
url?: string;
|
|
90
257
|
cesiumIonAccessToken?: string;
|
|
91
258
|
heatmap?: boolean;
|
|
@@ -94,24 +261,51 @@ export function useImageryProviders({
|
|
|
94
261
|
};
|
|
95
262
|
}): { providers: Providers; updated: boolean } {
|
|
96
263
|
const newTile = useCallback(
|
|
97
|
-
(t: Tile, ciat?: string) =>
|
|
98
|
-
|
|
264
|
+
(t: Tile, ciat?: string, tp?: CustomProviderConfig) => {
|
|
265
|
+
const opts = {
|
|
99
266
|
url: t.url,
|
|
100
267
|
cesiumIonAccessToken: ciat,
|
|
268
|
+
cesiumIonAssetId: t.cesiumIonAssetId,
|
|
101
269
|
heatmap: t.heatmap,
|
|
102
|
-
|
|
103
|
-
}
|
|
270
|
+
tile_zoomLevel: t.zoomLevelForURL,
|
|
271
|
+
};
|
|
272
|
+
if (isValidPresetTileType(t.type)) {
|
|
273
|
+
return presets[t.type](opts);
|
|
274
|
+
}
|
|
275
|
+
// Dynamic: check customProvider.imagery.providers for a matching id
|
|
276
|
+
const customEntry = tp?.imagery?.providers?.find(p => p.id === t.type);
|
|
277
|
+
if (customEntry) {
|
|
278
|
+
return new UrlTemplateImageryProvider({
|
|
279
|
+
url: customEntry.url,
|
|
280
|
+
credit: customEntry.credit,
|
|
281
|
+
maximumLevel: customEntry.maximumLevel,
|
|
282
|
+
minimumLevel: customEntry.minimumLevel,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
return presets["open_street_map"](opts);
|
|
286
|
+
},
|
|
104
287
|
[presets],
|
|
105
288
|
);
|
|
106
289
|
|
|
107
290
|
const prevCesiumIonAccessToken = useRef(cesiumIonAccessToken);
|
|
291
|
+
const prevCustomProvider = useRef(customProvider);
|
|
108
292
|
const tileKeys = tiles.map(t => t.id).join(",");
|
|
109
293
|
const prevTileKeys = useRef(tileKeys);
|
|
110
294
|
const prevProviders = useRef<Providers>({});
|
|
295
|
+
const zoomLevels = useMemo(
|
|
296
|
+
() =>
|
|
297
|
+
tiles.map(t => {
|
|
298
|
+
if (t.id && t.zoomLevel) return { [t.id]: t.zoomLevel };
|
|
299
|
+
return;
|
|
300
|
+
}),
|
|
301
|
+
[tiles],
|
|
302
|
+
);
|
|
303
|
+
const prevZoomLevels = useRef(zoomLevels);
|
|
111
304
|
|
|
112
|
-
// Manage
|
|
305
|
+
// Manage CustomProviders so that CustomProvider does not need to be recreated each time tiles are updated.
|
|
113
306
|
const { providers, updated } = useMemo(() => {
|
|
114
307
|
const isCesiumAccessTokenUpdated = prevCesiumIonAccessToken.current !== cesiumIonAccessToken;
|
|
308
|
+
const isTileProviderUpdated = prevCustomProvider.current !== customProvider;
|
|
115
309
|
const prevProvidersKeys = Object.keys(prevProviders.current);
|
|
116
310
|
const added = tiles.map(t => t.id).filter(t => t && !prevProvidersKeys.includes(t));
|
|
117
311
|
|
|
@@ -123,7 +317,8 @@ export function useImageryProviders({
|
|
|
123
317
|
added: added.includes(k),
|
|
124
318
|
prevType: v?.[0],
|
|
125
319
|
prevUrl: v?.[1],
|
|
126
|
-
|
|
320
|
+
prevIonAssetId: v?.[2],
|
|
321
|
+
prevProvider: v?.[3],
|
|
127
322
|
tile: tiles.find(t => t.id === k),
|
|
128
323
|
}));
|
|
129
324
|
|
|
@@ -135,6 +330,7 @@ export function useImageryProviders({
|
|
|
135
330
|
added,
|
|
136
331
|
prevType,
|
|
137
332
|
prevUrl,
|
|
333
|
+
prevIonAssetId,
|
|
138
334
|
prevProvider,
|
|
139
335
|
tile,
|
|
140
336
|
}):
|
|
@@ -143,6 +339,7 @@ export function useImageryProviders({
|
|
|
143
339
|
[
|
|
144
340
|
string | undefined,
|
|
145
341
|
string | undefined,
|
|
342
|
+
number | undefined,
|
|
146
343
|
Promise<ImageryProvider> | ImageryProvider | null | undefined,
|
|
147
344
|
],
|
|
148
345
|
]
|
|
@@ -154,28 +351,59 @@ export function useImageryProviders({
|
|
|
154
351
|
added ||
|
|
155
352
|
prevType !== tile.type ||
|
|
156
353
|
prevUrl !== tile.url ||
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
354
|
+
prevIonAssetId !== tile.cesiumIonAssetId ||
|
|
355
|
+
isTileProviderUpdated ||
|
|
356
|
+
(isCesiumAccessTokenUpdated &&
|
|
357
|
+
(tile.type?.startsWith("cesium_ion") ||
|
|
358
|
+
tile.type === "default" ||
|
|
359
|
+
tile.type === "default_road" ||
|
|
360
|
+
tile.type === "default_label" ||
|
|
361
|
+
tile.type === "black_marble"))
|
|
362
|
+
? [
|
|
363
|
+
tile.type,
|
|
364
|
+
tile.url,
|
|
365
|
+
tile.cesiumIonAssetId,
|
|
366
|
+
newTile(tile, cesiumIonAccessToken, customProvider),
|
|
367
|
+
]
|
|
368
|
+
: [prevType, prevUrl, prevIonAssetId, prevProvider],
|
|
160
369
|
],
|
|
161
370
|
)
|
|
162
371
|
.filter(
|
|
163
|
-
(
|
|
164
|
-
|
|
372
|
+
(
|
|
373
|
+
e,
|
|
374
|
+
): e is [
|
|
375
|
+
string,
|
|
376
|
+
[
|
|
377
|
+
string | undefined,
|
|
378
|
+
string | undefined,
|
|
379
|
+
number | undefined,
|
|
380
|
+
Promise<ImageryProvider> | ImageryProvider,
|
|
381
|
+
],
|
|
382
|
+
] => !!e?.[1][3],
|
|
165
383
|
),
|
|
166
384
|
);
|
|
167
385
|
|
|
168
386
|
const updated =
|
|
169
387
|
!!added.length ||
|
|
170
388
|
!!isCesiumAccessTokenUpdated ||
|
|
389
|
+
!!isTileProviderUpdated ||
|
|
171
390
|
!isEqual(prevTileKeys.current, tileKeys) ||
|
|
172
|
-
|
|
391
|
+
!isEqual(prevZoomLevels.current, zoomLevels) ||
|
|
392
|
+
rawProviders.some(
|
|
393
|
+
p =>
|
|
394
|
+
p.tile &&
|
|
395
|
+
(p.prevType !== p.tile.type ||
|
|
396
|
+
p.prevUrl !== p.tile.url ||
|
|
397
|
+
p.prevIonAssetId !== p.tile.cesiumIonAssetId),
|
|
398
|
+
);
|
|
173
399
|
|
|
174
400
|
prevTileKeys.current = tileKeys;
|
|
401
|
+
prevZoomLevels.current = zoomLevels;
|
|
175
402
|
prevCesiumIonAccessToken.current = cesiumIonAccessToken;
|
|
403
|
+
prevCustomProvider.current = customProvider;
|
|
176
404
|
|
|
177
405
|
return { providers, updated };
|
|
178
|
-
}, [cesiumIonAccessToken, tiles, tileKeys, newTile]);
|
|
406
|
+
}, [cesiumIonAccessToken, customProvider, tiles, tileKeys, newTile, zoomLevels]);
|
|
179
407
|
|
|
180
408
|
prevProviders.current = providers;
|
|
181
409
|
return { providers, updated };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="vite-plugin-svgr/client" />
|
|
2
2
|
import useTransition from "@rot1024/use-transition";
|
|
3
3
|
import { BoundingSphere, Cartesian3, SceneTransforms, Cartesian2, JulianDate } from "cesium";
|
|
4
|
-
import { useEffect, useState } from "react";
|
|
4
|
+
import { useEffect, useState, type JSX } from "react";
|
|
5
5
|
import { useCesium } from "resium";
|
|
6
6
|
|
|
7
7
|
import type { ViewerProperty } from "../../..";
|
|
@@ -74,7 +74,7 @@ export default function Indicator({
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
if (position) {
|
|
77
|
-
const pos = SceneTransforms.
|
|
77
|
+
const pos = SceneTransforms.worldToWindowCoordinates(viewer.scene, position);
|
|
78
78
|
setPos(pos);
|
|
79
79
|
setIsVisible(true);
|
|
80
80
|
} else {
|
|
@@ -12,8 +12,9 @@ import {
|
|
|
12
12
|
type Ellipsoid,
|
|
13
13
|
type Label,
|
|
14
14
|
} from "@cesium/engine";
|
|
15
|
+
import { DistanceDisplayCondition } from "cesium";
|
|
15
16
|
import { merge, omit } from "lodash-es";
|
|
16
|
-
import { type Feature } from "protomaps";
|
|
17
|
+
import { type Feature } from "protomaps-leaflet";
|
|
17
18
|
import { memo, useCallback, useEffect, useMemo, useRef, type FC } from "react";
|
|
18
19
|
import { useCesium } from "resium";
|
|
19
20
|
import { suspend } from "suspend-react";
|
|
@@ -170,6 +171,8 @@ export interface JapanGSIOptimalBVmapLabelImageryProps {
|
|
|
170
171
|
height?: number;
|
|
171
172
|
style?: AnnotationStyle;
|
|
172
173
|
labelCollection?: LabelCollection;
|
|
174
|
+
near?: number;
|
|
175
|
+
far?: number;
|
|
173
176
|
}
|
|
174
177
|
|
|
175
178
|
export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImageryProps> = memo(
|
|
@@ -180,6 +183,8 @@ export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImage
|
|
|
180
183
|
height = 50,
|
|
181
184
|
style = defaultStyle,
|
|
182
185
|
labelCollection,
|
|
186
|
+
near,
|
|
187
|
+
far,
|
|
183
188
|
}) => {
|
|
184
189
|
const cesiumContext = useCesium();
|
|
185
190
|
|
|
@@ -211,7 +216,7 @@ export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImage
|
|
|
211
216
|
return [];
|
|
212
217
|
}
|
|
213
218
|
return features.filter(
|
|
214
|
-
(feature): feature is AnnotationFeature =>
|
|
219
|
+
(feature: Feature): feature is AnnotationFeature =>
|
|
215
220
|
typeof feature.props.vt_code === "number" &&
|
|
216
221
|
// Look for annotations with 3-digits code only.
|
|
217
222
|
// https://maps.gsi.go.jp/help/pdf/vector/optbv_featurecodes.pdf
|
|
@@ -228,7 +233,7 @@ export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImage
|
|
|
228
233
|
);
|
|
229
234
|
}, [tile, imagery]);
|
|
230
235
|
|
|
231
|
-
const labelsRef = useRef<Array<[AnnotationFeature, Label]>>();
|
|
236
|
+
const labelsRef = useRef<Array<[AnnotationFeature, Label]>>(undefined);
|
|
232
237
|
const scene = cesiumContext?.scene;
|
|
233
238
|
|
|
234
239
|
const updateVisibility = useCallback(() => {
|
|
@@ -266,7 +271,7 @@ export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImage
|
|
|
266
271
|
}
|
|
267
272
|
const texts: string[] = [];
|
|
268
273
|
const labels = annotations
|
|
269
|
-
.map((feature): [AnnotationFeature, Label] | undefined => {
|
|
274
|
+
.map((feature: AnnotationFeature): [AnnotationFeature, Label] | undefined => {
|
|
270
275
|
const styleOptions = resolveStyle(feature.props.vt_code, style);
|
|
271
276
|
if (styleOptions == null) {
|
|
272
277
|
return undefined;
|
|
@@ -282,6 +287,8 @@ export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImage
|
|
|
282
287
|
horizontalOrigin: HorizontalOrigin.CENTER,
|
|
283
288
|
verticalOrigin: VerticalOrigin.BOTTOM,
|
|
284
289
|
heightReference: HeightReference.CLAMP_TO_GROUND,
|
|
290
|
+
distanceDisplayCondition:
|
|
291
|
+
near || far ? new DistanceDisplayCondition(near, far) : undefined,
|
|
285
292
|
disableDepthTestDistance: Infinity,
|
|
286
293
|
...styleOptions,
|
|
287
294
|
};
|
|
@@ -294,7 +301,7 @@ export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImage
|
|
|
294
301
|
|
|
295
302
|
const removeLabels = (): void => {
|
|
296
303
|
if (!labelCollection.isDestroyed()) {
|
|
297
|
-
labels.forEach(([, label]) => {
|
|
304
|
+
labels.forEach(([, label]: [AnnotationFeature, Label]) => {
|
|
298
305
|
labelCollection.remove(label);
|
|
299
306
|
});
|
|
300
307
|
}
|
|
@@ -308,7 +315,7 @@ export const JapanGSIOptimalBVmapLabelImagery: FC<JapanGSIOptimalBVmapLabelImage
|
|
|
308
315
|
scene?.postRender.addEventListener(removeLabels);
|
|
309
316
|
}
|
|
310
317
|
};
|
|
311
|
-
}, [style, annotations, scene, labelCollection]);
|
|
318
|
+
}, [style, annotations, scene, labelCollection, near, far]);
|
|
312
319
|
|
|
313
320
|
useEffect(() => {
|
|
314
321
|
updateVisibility();
|
|
@@ -11,7 +11,8 @@ import {
|
|
|
11
11
|
import { ImageryLayerProps } from "./types";
|
|
12
12
|
|
|
13
13
|
export interface LabelImageryLayerProps
|
|
14
|
-
extends
|
|
14
|
+
extends
|
|
15
|
+
Omit<ImageryLayerProps, "imageryProvider">,
|
|
15
16
|
JapanGSIOptimalBVmapLabelImageryProviderOptions {
|
|
16
17
|
minimumLevel?: number;
|
|
17
18
|
maximumLevel?: number;
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
type TileDiscardPolicy,
|
|
12
12
|
type TilingScheme,
|
|
13
13
|
} from "@cesium/engine";
|
|
14
|
-
import { TileCache, ZxySource } from "protomaps";
|
|
14
|
+
import { TileCache, ZxySource } from "protomaps-leaflet";
|
|
15
15
|
|
|
16
16
|
import { getTileCoords, makeKey } from "./helpers";
|
|
17
17
|
|
|
@@ -93,8 +93,7 @@ export abstract class JapanGSIOptimalBVmapImageryProviderBase implements Imagery
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
export interface JapanGSIOptimalBVmapLabelImageryProviderOptions
|
|
97
|
-
extends JapanGSIOptimalBVmapImageryProviderBaseOptions {
|
|
96
|
+
export interface JapanGSIOptimalBVmapLabelImageryProviderOptions extends JapanGSIOptimalBVmapImageryProviderBaseOptions {
|
|
98
97
|
url: string;
|
|
99
98
|
minimumDataLevel: number;
|
|
100
99
|
maximumDataLevel: number;
|
|
@@ -115,7 +114,7 @@ export class JapanGSIOptimalBVmapLabelImageryProvider extends JapanGSIOptimalBVm
|
|
|
115
114
|
this.maximumDataLevel = options.maximumDataLevel;
|
|
116
115
|
|
|
117
116
|
const source = new ZxySource(options.url, false);
|
|
118
|
-
this.tileCache = new TileCache(source,
|
|
117
|
+
this.tileCache = new TileCache(source, 256);
|
|
119
118
|
|
|
120
119
|
this.image = document.createElement("canvas");
|
|
121
120
|
this.image.width = 1;
|
|
@@ -143,7 +143,9 @@ const LabelImageryCollection: FC<{
|
|
|
143
143
|
imageriesAtom: Atom<KeyedImagery[]>;
|
|
144
144
|
style?: AnnotationStyle;
|
|
145
145
|
labelCollection?: LabelCollection;
|
|
146
|
-
|
|
146
|
+
near?: number;
|
|
147
|
+
far?: number;
|
|
148
|
+
}> = ({ imageryProvider, imageriesAtom, style, labelCollection, near, far }) => {
|
|
147
149
|
const imageries = useAtomValue(imageriesAtom);
|
|
148
150
|
return (
|
|
149
151
|
<>
|
|
@@ -155,6 +157,8 @@ const LabelImageryCollection: FC<{
|
|
|
155
157
|
descendants={imagery.descendants}
|
|
156
158
|
style={style}
|
|
157
159
|
labelCollection={labelCollection}
|
|
160
|
+
near={near}
|
|
161
|
+
far={far}
|
|
158
162
|
/>
|
|
159
163
|
</Suspense>
|
|
160
164
|
))}
|
|
@@ -164,9 +168,15 @@ const LabelImageryCollection: FC<{
|
|
|
164
168
|
|
|
165
169
|
export interface VectorMapLabelProps {
|
|
166
170
|
style?: Record<string, any>;
|
|
171
|
+
near?: number;
|
|
172
|
+
far?: number;
|
|
167
173
|
}
|
|
168
174
|
|
|
169
|
-
export const JapanGSIOptimalBVmapVectorMapLabel: FC<VectorMapLabelProps> = ({
|
|
175
|
+
export const JapanGSIOptimalBVmapVectorMapLabel: FC<VectorMapLabelProps> = ({
|
|
176
|
+
style,
|
|
177
|
+
near,
|
|
178
|
+
far,
|
|
179
|
+
}) => {
|
|
170
180
|
const [imageryProvider, setImageryProvider] =
|
|
171
181
|
useState<JapanGSIOptimalBVmapLabelImageryProvider>();
|
|
172
182
|
const setRef = useCallback((handle: CesiumComponentRef<CesiumImageryLayer> | null) => {
|
|
@@ -251,6 +261,8 @@ export const JapanGSIOptimalBVmapVectorMapLabel: FC<VectorMapLabelProps> = ({ st
|
|
|
251
261
|
imageriesAtom={imageriesAtom}
|
|
252
262
|
style={style}
|
|
253
263
|
labelCollection={labels}
|
|
264
|
+
near={near}
|
|
265
|
+
far={far}
|
|
254
266
|
/>
|
|
255
267
|
)}
|
|
256
268
|
</>
|
|
@@ -8,6 +8,8 @@ export interface TileLabelConfig {
|
|
|
8
8
|
labelType: "japan_gsi_optimal_bvmap";
|
|
9
9
|
fillColor?: string;
|
|
10
10
|
outlineColor?: string;
|
|
11
|
+
near?: number;
|
|
12
|
+
far?: number;
|
|
11
13
|
style: Record<string, any>;
|
|
12
14
|
}
|
|
13
15
|
|
|
@@ -23,7 +25,14 @@ const LabelImageryLayers = memo(
|
|
|
23
25
|
if (!label) return null;
|
|
24
26
|
switch (label.labelType) {
|
|
25
27
|
case "japan_gsi_optimal_bvmap":
|
|
26
|
-
return
|
|
28
|
+
return (
|
|
29
|
+
<JapanGSIOptimalBVmapVectorMapLabel
|
|
30
|
+
key={label.id}
|
|
31
|
+
style={label.style}
|
|
32
|
+
near={label.near}
|
|
33
|
+
far={label.far}
|
|
34
|
+
/>
|
|
35
|
+
);
|
|
27
36
|
default:
|
|
28
37
|
return null;
|
|
29
38
|
}
|