satupeta-main/app/(modules)/maps/factories/cesium-provider.ts

30 lines
900 B
TypeScript
Raw Normal View History

2026-01-27 02:31:12 +00:00
import * as Cesium from "cesium";
import { CesiumConfig } from "../types/basemap-config";
export const createCesiumProvider = async (
config: CesiumConfig
): Promise<Cesium.ImageryProvider | Cesium.TerrainProvider> => {
switch (config.type) {
case "OpenStreetMapImageryProvider":
return new Cesium.OpenStreetMapImageryProvider(config.options);
case "ArcGisMapServerImageryProvider":
return await Cesium.ArcGisMapServerImageryProvider.fromUrl(
config.options.url
);
case "UrlTemplateImageryProvider":
return new Cesium.UrlTemplateImageryProvider(config.options);
case "terrain":
return new Cesium.OpenStreetMapImageryProvider(config.options);
default:
console.warn(`Unknown provider type: ${config.type}`);
return new Cesium.OpenStreetMapImageryProvider({
url: "https://tile.openstreetmap.org/",
});
}
};