44 ComputedFeature ,
55 ComputedLayer ,
66 Credits ,
7+ CustomProviderConfig ,
78 LayerSelectionReason ,
89 LazyLayer ,
910 MapRef ,
@@ -46,18 +47,33 @@ export default () => {
4647 setSelectedFeature ( ref . current ?. layers . selectedFeature ( ) ?? feature ) ;
4748 } , [ ] ) ;
4849
50+ const customProvider = useMemo ( ( ) => {
51+ const envValue = import . meta. env . EXAMPLE_CUSTOM_PROVIDER ;
52+ if ( ! envValue ) return undefined ;
53+ try {
54+ return JSON . parse ( envValue ) as CustomProviderConfig ;
55+ } catch ( error ) {
56+ console . warn ( "[example] Failed to parse EXAMPLE_CUSTOM_PROVIDER:" , error ) ;
57+ return undefined ;
58+ }
59+ } , [ ] ) ;
60+
4961 const meta = useMemo (
5062 ( ) => ( {
5163 cesiumIonAccessToken : import . meta. env . EXAMPLE_CESIUM_ION_ACCESS_TOKEN || undefined ,
5264 } ) ,
5365 [ ] ,
5466 ) ;
5567
68+ const customTileIds = customProvider ?. imagery ?. providers ?. map ( ( p : { id : string } ) => p . id ) ?? [ ] ;
69+
70+ const allTileIds = [ ...TILES , ...customTileIds ] ;
5671 const [ currentTile , setCurrentTile ] = useState (
57- TILES . includes ( DEFAULT_VIEWER_PROPERTY . tiles ?. [ 0 ] ?. type ?? "" )
72+ allTileIds . includes ( DEFAULT_VIEWER_PROPERTY . tiles ?. [ 0 ] ?. type ?? "" )
5873 ? DEFAULT_VIEWER_PROPERTY . tiles ?. [ 0 ] ?. type
5974 : undefined ,
6075 ) ;
76+ const [ cesiumIonAssetId , setCesiumIonAssetId ] = useState < number | undefined > ( undefined ) ;
6177 const [ currentCamera , setCurrentCamera ] = useState ( DEFAULT_CAMERA ) ;
6278 const [ terrainEnabled , setTerrainEnabled ] = useState ( true ) ;
6379 const [ hideUnderground , setHideUnderground ] = useState ( false ) ;
@@ -71,6 +87,7 @@ export default () => {
7187 {
7288 id : "default" ,
7389 type : currentTile ,
90+ cesiumIonAssetId : currentTile === "cesium_ion" ? cesiumIonAssetId : undefined ,
7491 opacity : 1 ,
7592 } ,
7693 ]
@@ -84,7 +101,7 @@ export default () => {
84101 depthTestAgainstTerrain : hideUnderground ,
85102 } ,
86103 } ) ,
87- [ currentTile , terrainEnabled , hideUnderground ] ,
104+ [ currentTile , cesiumIonAssetId , terrainEnabled , hideUnderground ] ,
88105 ) ;
89106
90107 const layers = useMemo (
@@ -118,7 +135,10 @@ export default () => {
118135 ! selectedFeature ?. id
119136 )
120137 return ;
121- ref . current ?. sketch . editFeature ( { layerId : selectedLayer . id , feature : selectedFeature } ) ;
138+ ref . current ?. sketch . editFeature ( {
139+ layerId : selectedLayer . id ,
140+ feature : selectedFeature ,
141+ } ) ;
122142 } , [ selectedLayer , selectedFeature ] ) ;
123143
124144 const handleCancelEditSketchFeature = useCallback ( ( ) => {
@@ -165,8 +185,12 @@ export default () => {
165185 handleAPIReady,
166186 handleSelect,
167187 meta,
188+ customProvider,
189+ customTileIds,
168190 currentTile,
169191 setCurrentTile,
192+ cesiumIonAssetId,
193+ setCesiumIonAssetId,
170194 currentCamera,
171195 setCurrentCamera,
172196 terrainEnabled,
0 commit comments