SPB Git forge

spb/ka-maps

Public
6commits 1branches 0releases
448.0 KBsize
maindefault branch
29 days agolast push
TypeScript 87.7% CSS 12.3%
3.2 KB · 83 lines typescript
Raw Blame History
1/**2 * Author: Simon-Pierre Boucher3 * Contact: contact@spboucher.ai4 * Project: Groupe Ka / Ka Maps5 *6 * Fond de carte Ka Maps : Mapbox Standard, configuré pour l'immobilier.7 * Le style Standard apporte les bâtiments 3D photoréalistes, les repères8 * et l'éclairage dynamique. Chaque produit choisit son niveau de réalisme9 * via KaBasemapOptions (thème pleine couleur ou « faded », préréglage de10 * lumière, repères 3D) — le jour/nuit bascule via lightPreset (Ka Light /11 * Ka Dark) sans recharger le style.12 */1314import type { Map as MapboxMap } from "mapbox-gl";15import type { KaMapMode, KaMapTheme } from "../theming/tokens.js";1617/** Style Mapbox Standard — 3D natif, repères, éclairage. */18export const KA_STYLE_URL = "mapbox://styles/mapbox/standard";1920export const KA_ATTRIBUTION = "© Mapbox © OpenStreetMap";2122/** Réglages produit du fond Mapbox Standard. */23export interface KaBasemapOptions {24  /** "default" = pleine couleur réaliste ; "faded" = atténué (les prix25   *  dominent) ; "monochrome" = neutre. Défaut : "faded". */26  theme?: "default" | "faded" | "monochrome";27  /** Préréglage lumière du mode clair (le mode sombre force "dusk").28   *  "day" à midi, "dawn" pour une lumière rasante plus sculpturale. */29  lightPreset?: "dawn" | "day" | "dusk" | "night";30  /** Repères 3D emblématiques (stades, ponts, églises…). Défaut : true. */31  showLandmarks?: boolean;32  /** Étiquettes de commerces/POI. Défaut : false (la carte montre des33   *  propriétés, pas des commerces). */34  showPointOfInterestLabels?: boolean;35  /** Couleur du bâtiment « sélectionné » (état select du featureset36   *  buildings) — utilisée par KaMap.focusBuilding. */37  colorBuildingSelect?: string;38  /** Couleur du bâtiment « survolé » (état highlight). */39  colorBuildingHighlight?: string;40}4142/**43 * Retourne l'URL de style pour un mode/thème. (Signature conservée : le44 * jour/nuit et les réglages passent par applyKaBasemapConfig, pas par un45 * style différent.)46 */47export function buildKaStyle(_mode: KaMapMode, _theme: KaMapTheme): string {48  return KA_STYLE_URL;49}5051/**52 * Applique les réglages du fond Standard — à appeler après style.load et à53 * chaque changement de mode. Les propriétés absentes d'une future version54 * du style sont ignorées (non bloquant).55 */56export function applyKaBasemapConfig(57  map: MapboxMap,58  mode: KaMapMode,59  basemap?: KaBasemapOptions,60): void {61  const set = (key: string, value: unknown) => {62    try {63      map.setConfigProperty("basemap", key, value);64    } catch {65      // propriété absente sur une future version du style : non bloquant66    }67  };68  set("theme", basemap?.theme ?? "faded");69  set(70    "lightPreset",71    mode === "dark" ? "dusk" : basemap?.lightPreset ?? "day",72  );73  set("showPointOfInterestLabels", basemap?.showPointOfInterestLabels ?? false);74  set("showTransitLabels", false);75  set("showPedestrianRoads", true);76  set("show3dObjects", true);77  set("showLandmarkIcons", basemap?.showLandmarks ?? true);78  if (basemap?.colorBuildingSelect)79    set("colorBuildingSelect", basemap.colorBuildingSelect);80  if (basemap?.colorBuildingHighlight)81    set("colorBuildingHighlight", basemap.colorBuildingHighlight);82}83