fix(web): add shared DemSource singleton, add ErrorBoundary, and conditional view rendering to prevent WebGL crash

This commit is contained in:
Hamza-Ayed
2026-08-18 12:35:17 +03:00
parent ba4ae15eab
commit c9b3249aa5
5 changed files with 119 additions and 70 deletions
+27
View File
@@ -0,0 +1,27 @@
import maplibregl from 'maplibre-gl';
import mlcontour from 'maplibre-contour';
let sharedDemSource: any = null;
let isConfigured = false;
export function getSharedDemSource() {
if (!sharedDemSource) {
sharedDemSource = new mlcontour.DemSource({
url: 'https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png',
encoding: 'terrarium',
maxzoom: 15,
worker: true,
cacheSize: 100,
});
if (!isConfigured) {
try {
sharedDemSource.setupMaplibre(maplibregl);
isConfigured = true;
} catch (e) {
console.warn('DemSource setup warning:', e);
}
}
}
return sharedDemSource;
}