Skip to content

Commit b2f7fe8

Browse files
fix: use OpenStreetMap imagery to resolve Cesium Ion 401 error
1 parent 91fb9c0 commit b2f7fe8

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

src/components/Globe.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
"use client";
22

33
import React, { useEffect, useState, useRef, useMemo, memo } from "react";
4-
import { Viewer, Scene } from "resium";
4+
import { Viewer, Scene, ImageryLayer } from "resium";
55
import * as Cesium from "cesium";
66
import "cesium/Build/Cesium/Widgets/widgets.css";
7+
8+
// Use OpenStreetMap instead of Cesium Ion (no API key required)
9+
const osmImageryProvider = new Cesium.OpenStreetMapImageryProvider({
10+
url: "https://tile.openstreetmap.org/",
11+
credit: "© OpenStreetMap contributors"
12+
});
713
import SatelliteLayer from "./SatelliteLayer";
814
import { SpaceObject } from "@/lib/space-objects";
915
import * as satellite from "satellite.js";
@@ -54,6 +60,17 @@ const Globe: React.FC<GlobeProps> = ({ objects = [], onSelect, selectedObject, o
5460
setMounted(true);
5561
}, []);
5662

63+
// Remove default Cesium Ion imagery and use OpenStreetMap
64+
useEffect(() => {
65+
if (viewerRef && !viewerRef.isDestroyed()) {
66+
const layers = viewerRef.imageryLayers;
67+
// Remove default Cesium Ion layer (first layer)
68+
if (layers.length > 1) {
69+
layers.remove(layers.get(0), false);
70+
}
71+
}
72+
}, [viewerRef]);
73+
5774
// Sync Cesium Clock settings from Zustand store
5875
useEffect(() => {
5976
if (!viewerRef || viewerRef.isDestroyed()) return;
@@ -223,6 +240,7 @@ const Globe: React.FC<GlobeProps> = ({ objects = [], onSelect, selectedObject, o
223240
creditContainer={creditContainer}
224241
>
225242
<Scene highDynamicRange={true} />
243+
<ImageryLayer imageryProvider={osmImageryProvider} />
226244

227245
<SatelliteLayer
228246
objects={objects}

0 commit comments

Comments
 (0)