mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 02:14:01 +00:00
59 lines
1.9 KiB
JavaScript
59 lines
1.9 KiB
JavaScript
import { createStandaloneCatalog } from './catalog.js';
|
|
import { createStandalonePlaceSearch } from './placeSearch.js';
|
|
import { createApplication } from '../app/application.js';
|
|
import { createStandaloneScene } from './scene.js';
|
|
import { createStandaloneControls } from './controls.js';
|
|
import { createStandaloneData } from './data.js';
|
|
import { createStandaloneTools } from './tools.js';
|
|
|
|
// The existing controls and layer catalog contain page-scoped state.
|
|
let constructed = false;
|
|
|
|
/** Compose the standalone application once per page. Reload to start again. */
|
|
export function createStandaloneApplication({
|
|
googleApiKey,
|
|
cesiumToken,
|
|
geospatial = {},
|
|
voice = {},
|
|
allowQaRegistration = false,
|
|
}) {
|
|
if (constructed)
|
|
throw new Error('The standalone application already owns this page');
|
|
constructed = true;
|
|
const loadingScreen = document.getElementById('loading-screen');
|
|
const loaderStatus = loadingScreen.querySelector('.loader-status');
|
|
let placeSearch;
|
|
let catalog;
|
|
return createApplication({
|
|
createScene: async (context) => {
|
|
placeSearch = createStandalonePlaceSearch({
|
|
...geospatial,
|
|
resolveApiKey: () => googleApiKey,
|
|
signal: context.signal,
|
|
});
|
|
const scene = await createStandaloneScene({
|
|
...context,
|
|
googleApiKey,
|
|
cesiumToken,
|
|
loaderStatus,
|
|
});
|
|
catalog = createStandaloneCatalog({
|
|
signal: context.signal,
|
|
surface: scene.operations.surface,
|
|
});
|
|
return scene;
|
|
},
|
|
createControls: (context) =>
|
|
createStandaloneControls({
|
|
...context,
|
|
loaderStatus,
|
|
placeSearch,
|
|
catalog,
|
|
}),
|
|
createData: (context) =>
|
|
createStandaloneData({ ...context, allowQaRegistration, catalog }),
|
|
createTools: (context) =>
|
|
createStandaloneTools({ ...context, loadingScreen, placeSearch, voice }),
|
|
});
|
|
}
|