Skip to content

feat(#35): ✨ Change to offline rendering #36

Merged
merged 8 commits into from
Oct 20, 2025
249 changes: 249 additions & 0 deletions public/data/geo/world_simplified.geojson

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions src/cameraSync.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ export function syncCameras(potreeViewer, cesiumViewer) {
cesiumViewer.scene.globe.show = showGlobe
cesiumViewer.scene.skyAtmosphere.show = showGlobe

if (cesiumViewer._countryBorders) {
cesiumViewer._countryBorders.show = showGlobe
}

// Sync Cesium camera position and orientation with Potree
cesiumViewer.camera.setView({
destination: cPos,
Expand Down
25 changes: 22 additions & 3 deletions src/cesiumViewer.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,29 @@ export function createCesiumViewer(containerId) {
selectionIndicator: false,
timeline: false,
navigationHelpButton: false,
imageryProvider: Cesium.createOpenStreetMapImageryProvider({
url: 'https://a.tile.openstreetmap.org/'
}),
imageryProvider: false,
terrainShadows: Cesium.ShadowMode.DISABLED
})

viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString('#D6EBF2').withAlpha(0.5);

return viewer
}

export async function loadCountryBorders(viewer) {
const dataSource = await Cesium.GeoJsonDataSource.load(
'/data/geo/world_simplified.geojson',
{
stroke: Cesium.Color.BLACK.withAlpha(0.2),
fill: Cesium.Color.fromCssColorString('#F2EFE9'),
strokeWidth: 1.0
}
);

dataSource.name = 'countryBorders';
dataSource.show = true;
viewer.dataSources.add(dataSource);
viewer._countryBorders = dataSource;

return dataSource;
}
4 changes: 3 additions & 1 deletion src/main.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { POTREE_POINTCLOUD_URL, POTREE_SETTINGS } from './config.js'
import { createCesiumViewer } from './cesiumViewer.js'
import { createCesiumViewer, loadCountryBorders } from './cesiumViewer.js'
import { createPotreeViewer } from './potreeViewer.js'
import { syncCameras } from './cameraSync.js'
import {
Expand All @@ -10,6 +10,8 @@ import {
async function init() {
window.cesiumViewer = createCesiumViewer('cesiumContainer')

await loadCountryBorders(window.cesiumViewer)

window.potreeViewer = await createPotreeViewer(
'potree_render_area',
POTREE_POINTCLOUD_URL,
Expand Down
Loading