aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/app/maps
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/app/maps')
-rw-r--r--src/frontend/app/maps/styleloader.ts26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/frontend/app/maps/styleloader.ts b/src/frontend/app/maps/styleloader.ts
index 43118a0..8109e0b 100644
--- a/src/frontend/app/maps/styleloader.ts
+++ b/src/frontend/app/maps/styleloader.ts
@@ -1,10 +1,17 @@
import type { StyleSpecification } from "react-map-gl/maplibre";
import type { Theme } from "~/AppContext";
+export interface StyleLoaderOptions {
+ includeTraffic?: boolean;
+}
+
export async function loadStyle(
styleName: string,
- colorScheme: Theme
+ colorScheme: Theme,
+ options?: StyleLoaderOptions
): Promise<StyleSpecification> {
+ const { includeTraffic = true } = options || {};
+
if (colorScheme == "system") {
const isDarkMode = window.matchMedia(
"(prefers-color-scheme: dark)"
@@ -21,6 +28,15 @@ export async function loadStyle(
}
const style = await resp.json();
+
+ // Remove traffic layers if not requested
+ if (!includeTraffic) {
+ style.layers = (style.layers || []).filter(
+ (layer: any) => !layer.id?.startsWith("vigo_traffic")
+ );
+ delete style.sources?.vigo_traffic;
+ }
+
return style as StyleSpecification;
}
@@ -33,6 +49,14 @@ export async function loadStyle(
const style = await resp.json();
+ // Remove traffic layers if not requested
+ if (!includeTraffic) {
+ style.layers = (style.layers || []).filter(
+ (layer: any) => !layer.id?.startsWith("vigo_traffic")
+ );
+ delete style.sources?.vigo_traffic;
+ }
+
const baseUrl = window.location.origin;
const spritePath = style.sprite;