Skip to content

profile.json - Référence Complète

Version: 2.0.0

Date de dernière mise à jour: 1 avril 2026

Statut: ✅ Production Ready


Table des Matières

  1. Vue d'ensemble

  2. Structure complète

  3. Paramètres racine

  4. Section map

  5. Section Files

  6. Section ui

  7. Section basemaps

  8. Section performance

  9. Section search

  10. Section layerManagerConfig

  11. Section legendConfig

  12. Section poiConfig

  13. Section brandingConfig

  14. Section tableConfig

  15. Section scaleConfig

  16. Section storage

  17. Section poiAddConfig

  18. Section geocodingConfig

  19. Paramètres obsolètes/dépréciés


Vue d'ensemble

Le fichier profile.json est le fichier de configuration principal d'un profil GeoLeaf. Il définit :

  • L'interface utilisateur (composants visibles)

  • Les fonds de carte disponibles

  • Les paramètres de performance

  • La configuration des filtres et de la recherche

  • Les réglages des composants (table, légende, gestionnaire de couches)

⚠️ Important: Cette documentation est basée sur l'analyse du code source réel (src/modules/) et des tests unitaires (__tests__/).

Emplacement


profiles/{profile-name}/profile.json

Chargement

Le fichier est chargé par :

  • Fichier source: profile.ts

  • Fonction principale: loadActiveProfileResources()

  • Événement émis: geoleaf:profile:loaded


Structure complète

Voici la structure complète avec tous les paramètres disponibles :

jsonc

{

  "id": "string",

  "label": "string",

  "description": "string",

  "version": "string",



  "map": {

    "bounds": [[number, number], [number, number]],

    "initialMaxZoom": number,

    "padding": [number, number],

    "positionFixed": boolean,

    "boundsMargin": number,

    "minZoom": number

  },



  "Files": {

    "taxonomyFile": "string",

    "themesFile": "string",

    "layersFile": "string"

  },



  "ui": {

    "theme": "string",

    "language": "string",

    "showBaseLayerControls": boolean,

    "showLayerManager": boolean,

    "showFilterPanel": boolean,

    "showGeolocation": boolean,

    "showCoordinates": boolean,

    "showThemeSelector": boolean,

    "showLegend": boolean,

    "showCacheButton": boolean,

    "showAddPoi": boolean,

    "showScale": boolean,

    "interactiveShapes": boolean

  },



  "basemaps": {

    "{basemap-id}": {

      "id": "string",

      "label": "string",

      "type": "string (\"raster\" | \"maplibre\")",

      "url": "string (tile URL template, also used as raster fallback for maplibre)",

      "style": "string (URL style JSON MapLibre)",

      "attribution": "string",

      "minZoom": number,

      "maxZoom": number,

      "defaultBasemap": boolean,

      "offline": boolean,

      "offlineBounds": {

        "north": number,

        "south": number,

        "east": number,

        "west": number

      },

      "cacheMinZoom": number,

      "cacheMaxZoom": number

    }

  },



  "performance": {

    "maxConcurrentLayers": number,

    "layerLoadDelay": number,

    "fitBoundsOnThemeChange": boolean

  },



  "search": {

    "title": "string",

    "radiusMin": number,

    "radiusMax": number,

    "radiusStep": number,

    "radiusDefault": number,

    "searchPlaceholder": "string",

    "filters": [

      {

        "id": "string",

        "type": "string",

        "label": "string",

        "placeholder": "string",

        "searchFields": ["string"],

        "buttonLabel": "string",

        "instructionText": "string",

        "field": "string"

      }

    ],

    "actions": {

      "applyLabel": "string",

      "resetLabel": "string"

    }

  },



  "layerManagerConfig": {

    "title": "string",

    "collapsedByDefault": boolean,

    "sections": [

      {

        "id": "string",

        "label": "string",

        "order": number,

        "collapsedByDefault": boolean

      }

    ]

  },



  "legendConfig": {

    "title": "string",

    "collapsedByDefault": boolean,

    "position": "string"

  },



  "poiConfig": {

    "clusterStrategy": "string"

  },



  "brandingConfig": {

    "enabled": boolean,

    "text": "string",

    "position": "string"

  },



  "tableConfig": {

    "enabled": boolean,

    "defaultVisible": boolean,

    "pageSize": number,

    "maxRowsPerLayer": number,

    "enableExportButton": boolean,

    "virtualScrolling": boolean,

    "defaultHeight": "string",

    "minHeight": "string",

    "maxHeight": "string",

    "resizable": boolean

  },



  "scaleConfig": {

    "scaleGraphic": boolean,

    "scaleNumeric": boolean,

    "scaleNumericEditable": boolean,

    "scaleNivel": boolean,

    "position": "string"

  },



  "storage": {

    "cache": {

      "enableProfileCache": boolean,

      "enableTileCache": boolean

    }

  },



  "poiAddConfig": {

    "enabled": boolean,

    "defaultPosition": "string"

  }

}

Paramètres racine

id (string, obligatoire)

Description: Identifiant unique du profil.

Utilisation dans le code:

  • Utilisé pour charger le profil

  • Référencé dans les événements

  • Stocké dans config.data.activeProfile

Fichiers source:

  • profile.ts ligne 141

Valeurs possibles: Chaîne alphanumérique sans espaces (ex: "tourism", "my-custom-profile")

Valeur par défaut: Aucune (obligatoire)

État: ✅ Actif et fonctionnel


label (string, obligatoire)

Description: Nom d'affichage du profil pour l'interface utilisateur.

Utilisation dans le code:

  • Affiché dans les logs

  • Peut être utilisé dans l'interface de sélection de profil

Fichiers source:

  • profile.ts

Valeurs possibles: Chaîne de caractères libre (ex: "Profil tourisme", "My Custom Profile")

Valeur par défaut: Aucune (obligatoire)

État: ✅ Actif et fonctionnel


description (string, optionnel)

Description: Description détaillée du profil et de son usage.

Utilisation dans le code:

  • Utilisé pour la documentation

  • Peut être affiché dans une interface de sélection

Fichiers source:

  • Stocké dans l'objet profile mais peu utilisé directement dans le code

Valeurs possibles: Texte libre

Valeur par défaut: Chaîne vide

État: ✅ Actif (principalement documentation)


version (string, optionnel)

Description: Version du profil suivant le semantic versioning.

Utilisation dans le code:

  • Utilisé pour la détection de version (legacy vs 1.0.0)

  • Fonction isModularProfile() dans ProfileLoader

Fichiers source:

  • profile-loader.ts

Valeurs possibles: Format "X.Y.Z" (ex: "1.0.0", "1.2.5")

Valeur par défaut: "1.0.0"

État: ✅ Actif et fonctionnel


Section map

map (object, obligatoire)

Description: Paramètres d'initialisation de la carte : emprise initiale, plafond de zoom au chargement, et restriction de navigation.

Utilisation dans le code:

  • Chargé dans src/app/init.js lors de l'initialisation de la carte

  • bounds est utilisé pour le fitBounds() initial et comme emprise de maxBounds si positionFixed est activé

map.bounds (array, obligatoire)

Emprise géographique initiale au format [[sud, ouest], [nord, est]] en WGS84.

jsonc

"bounds": [[-58.39, -73.58], [-21.78, -34.67]]

map.initialMaxZoom (integer, optionnel)

Zoom maximum utilisé par fitBounds() au démarrage. Ne limite PAS le zoom utilisateur — il empêche seulement le fitBounds initial de zoomer trop fort sur une petite emprise.

  • Valeur par défaut: 12

  • Valeurs possibles: 1 à 20

  • Rétrocompatibilité: l'ancien nom maxZoom est toujours lu en fallback

⚠️ Note: Ce paramètre ne remplace pas le maxZoom des basemaps (qui contrôle la disponibilité des tuiles) ni le zoom maximum MapLibre de la carte.

map.padding (array, optionnel)

Marge en pixels [vertical, horizontal] appliquée au fitBounds() initial. Évite que l'emprise colle aux bords du conteneur.

  • Valeur par défaut: [50, 50]

map.positionFixed (boolean, optionnel)

Restreint le déplacement de la carte à l'emprise définie dans bounds. L'utilisateur ne peut pas naviguer trop loin de cette zone mais conserve une liberté de déplacement.

  • Valeur par défaut: false

  • Avantage performance: MapLibre ne chargera pas de tuiles hors emprise → réduction des requêtes réseau

  • Implémentation: utilise map.setMaxBounds() avec une marge configurable via boundsMargin (défaut 30%)

  • Comportement: effet élastique ("rubber-band") aux bords, pas un mur dur

map.boundsMargin (number, optionnel)

Marge supplémentaire autour des bounds lorsque positionFixed est true. Permet de contrôler la liberté de déplacement.

  • Valeur par défaut: 0.3 (30% de marge)

  • Plage: 0 (aucune marge, très restrictif) à 1 (100%, très libre)

  • Ignoré si positionFixed est false

map.minZoom (integer, optionnel)

Zoom minimum lorsque positionFixed est true. Empêche l'utilisateur de dézoomer trop et voir le reste du monde.

  • Valeur par défaut: 3 (si positionFixed est true)

  • Ignoré si positionFixed est false

Exemple complet

jsonc

"map": {

  "bounds": [[-58.39, -73.58], [-21.78, -34.67]],

  "initialMaxZoom": 12,

  "padding": [50, 50],

  "positionFixed": true,

  "boundsMargin": 0.3,

  "minZoom": 3

}

Section Files

Files (object, obligatoire)

Description: Définit les chemins vers les fichiers de configuration associés au profil.

Utilisation dans le code:

  • Chargés en parallèle lors de l'initialisation du profil modulaire

  • profile-loader.ts

État: ✅ Actif et fonctionnel (profils 1.0.0+)


Files.taxonomyFile (string, obligatoire)

Description: Chemin vers le fichier de taxonomie (catégories/sous-catégories).

Utilisation dans le code:

javascript
// profile-loader.js ligne 67

const taxonomyUrl = `${baseUrl}/${profile.Files.taxonomyFile}?t=${timestamp}`;

Fichiers source:

  • profile-loader.ts ligne 67

Valeurs possibles: Chemin relatif au répertoire du profil (ex: "taxonomy.json")

Valeur par défaut: "taxonomy.json"

État: ✅ Actif et fonctionnel


Files.themesFile (string, obligatoire)

Description: Chemin vers le fichier de thèmes (presets de visibilité des couches).

Utilisation dans le code:

javascript
// profile-loader.js ligne 68

const themesUrl = `${baseUrl}/${profile.Files.themesFile}?t=${timestamp}`;

Fichiers source:

  • profile-loader.ts ligne 68

Valeurs possibles: Chemin relatif (ex: "themes.json")

Valeur par défaut: "themes.json"

État: ✅ Actif et fonctionnel


Files.layersFile (string, optionnel)

Description: Chemin vers le fichier de définition des couches GeoJSON.

Utilisation dans le code:

javascript
// profile-loader.js ligne 69

const layersUrl = `${baseUrl}/${profile.Files.layersFile}?t=${timestamp}`;

Fichiers source:

  • profile-loader.ts ligne 69

Valeurs possibles: Chemin relatif (ex: "layers.json")

Valeur par défaut: "layers.json"

État: ✅ Actif et fonctionnel


Section ui

⚠️ Déprécié v2.0.0 : La section ui inline dans profile.json est dépréciée. Depuis v2.0.0, la configuration UI doit être définie dans ui.json (référencé par Files.uiFile). La compatibilité inline est maintenue pour rétrocompatibilité, mais ui.json est recommandé pour tous les nouveaux projets.

ui (object, optionnel)

Description: Configuration de l'interface utilisateur et des composants visibles.

État: ✅ Actif et fonctionnel


ui.theme (string, optionnel)

Description: Thème visuel de l'application.

Utilisation dans le code:

javascript
// geoleaf.core.ts ligne 132

const uiConfig = global.GeoLeaf.Config.get("ui") || {};

const theme = uiConfig.theme || "light";

Fichiers source:

  • geoleaf.core.ts ligne 132

  • theme.ts

Valeurs possibles:

  • "light" - Thème clair

  • "dark" - Thème sombre

Valeur par défaut: "light"

État: ✅ Actif et fonctionnel


ui.language (string, optionnel)

Description: Langue de l'interface utilisateur.

Utilisation dans le code:

  • Stocké dans la configuration

  • Peut influencer les labels et textes

Fichiers source:

  • Pas d'utilisation directe détectée dans le code actuel

Valeurs possibles: Codes ISO 639-1 (ex: "fr", "en", "es")

Valeur par défaut: "fr"

État: ⚠️ Défini mais peu utilisé directement (préparation i18n)


ui.showBaseLayerControls (boolean, optionnel)

Description: Affiche les contrôles de sélection des fonds de carte.

Utilisation dans le code:

javascript
// geoleaf.baselayers.ts ligne 217

const showControls = config && config.ui && config.ui.showBaseLayerControls !== false;

Fichiers source:

  • geoleaf.baselayers.ts ligne 217

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel

Tests:

  • __tests__/baselayers/baselayers.test.js ligne 307

ui.showLayerManager (boolean, optionnel)

Description: Affiche le gestionnaire de couches.

Utilisation dans le code:

  • Utilisé pour conditionner l'affichage du composant LayerManager

Fichiers source:

  • geoleaf.layer-manager.ts

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


ui.showFilterPanel (boolean, optionnel)

Description: Affiche le panneau de filtrage des POI.

Utilisation dans le code:

javascript
// filter-panel/renderer.test.js ligne 425

mockGeoLeaf.Config.get.mockReturnValue({ showFilterPanel: true });

Fichiers source:

  • renderer.ts

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel

Tests:

  • __tests__/ui/filter-panel/renderer.test.js ligne 424

ui.showGeolocation (boolean, optionnel)

Description: Affiche le bouton de géolocalisation GPS.

Renommage v2.0.0 : Anciennement enableGeolocation. Les deux noms sont acceptés pour la rétrocompatibilité, mais showGeolocation est recommandé.

Utilisation dans le code:

javascript
// ui/controls.js (ligne 164 dans les tests)

const config = { ui: { showGeolocation: true } };

Fichiers source:

  • controls.ts

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel

Tests:


ui.showScale (boolean, optionnel)

Description: Affiche la barre d'échelle. La configuration avancée (graphique, édition, position) est contrôlée par le bloc scaleConfig dans ui.json.

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


ui.showCoordinates (boolean, optionnel)

Description: Affiche l'indicateur de coordonnées.

Utilisation dans le code:

javascript
// geoleaf.core.ts ligne 132

const showCoordinates = uiConfig ? uiConfig.showCoordinates !== false : true;

Fichiers source:

  • geoleaf.core.ts

  • coordinates-display.ts

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel

Tests:


ui.showThemeSelector (boolean, optionnel)

Description: Affiche le sélecteur de thèmes.

Utilisation dans le code:

javascript
// themes/theme-selector.js ligne 124

const uiConfig = GeoLeaf.Config && GeoLeaf.Config.get ? GeoLeaf.Config.get("ui") : null;

Fichiers source:

  • theme-selector.ts ligne 124

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


ui.showLegend (boolean, optionnel)

Description: Affiche le composant de légende.

Utilisation dans le code:

javascript
// geoleaf.core.ts ligne 133

const showLegend = uiConfig ? uiConfig.showLegend !== false : true;

Fichiers source:

  • geoleaf.core.ts ligne 133

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


ui.showCacheButton (boolean, optionnel)

Description: Affiche le bouton de gestion du cache hors ligne.

Utilisation dans le code:

javascript
// ui/cache-button.test.js ligne 154

const showCacheButton = cfg?.ui?.showCacheButton !== false;

Fichiers source:

  • src/modules/ui/cache-button.js

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel

Tests:


ui.showAddPoi (boolean, optionnel)

Description: Affiche le bouton d'ajout de POI.

Utilisation dans le code:

javascript
// integration/controls-simple.test.js ligne 287

const config = { ui: { showAddPoi: true } };

Fichiers source:

  • controls.ts

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel

Tests:

  • __tests__/integration/controls-simple.test.js ligne 287

ui.interactiveShapes (boolean, optionnel)

Description: Rend les formes géométriques (polygones, lignes) interactives (cliquables).

Utilisation dans le code:

javascript
// ui/filter-panel/proximity.js ligne 212

const interactiveShapes = GeoLeaf.Config.get("ui.interactiveShapes", false);

Fichiers source:

  • proximity.ts ligne 212

  • controls.ts ligne 348

  • layer-config-manager.ts ligne 115

  • geoleaf.route.ts ligne 144

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel


Section basemaps

⚠️ Migration v2.0.0 : La définition des fonds de carte inline dans profile.json est maintenue, mais il est recommandé de les déplacer dans un fichier basemaps.json dédié (référencé par Files.basemapsFile) pour faciliter la réutilisation entre profils.

basemaps (object, obligatoire)

Description: Définition des fonds de carte disponibles.

Structure: Objet avec clés = ID du fond de carte, valeurs = configuration du fond de carte.

Utilisation dans le code:

javascript
// geoleaf.baselayers.ts ligne 218

basemaps: global.GeoLeaf.Config.get("basemaps") || {};

Fichiers source:

  • geoleaf.baselayers.ts

  • src/modules/storage/cache/resource-enumerator.js ligne 211

État: ✅ Actif et fonctionnel


basemaps.{id}.id (string, obligatoire)

Description: Identifiant unique du fond de carte.

Valeurs possibles: Chaîne alphanumérique (ex: "street", "satellite", "topo")

Valeur par défaut: Aucune (obligatoire)

État: ✅ Actif et fonctionnel


basemaps.{id}.label (string, obligatoire)

Description: Nom d'affichage du fond de carte dans l'interface.

Valeurs possibles: Chaîne de caractères libre (ex: "Street", "Satellite", "Topographique")

Valeur par défaut: Aucune (obligatoire)

État: ✅ Actif et fonctionnel


basemaps.{id}.url (string, obligatoire)

Description: Template d'URL des tuiles du fond de carte.

Format: Utilise les placeholders {s}, {z}, {x}, {y}

Exemple:


https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png

Valeurs possibles: URL valide avec placeholders MapLibre ({z}, {x}, {y})

Valeur par défaut: Aucune (obligatoire)

État: ✅ Actif et fonctionnel


basemaps.{id}.attribution (string, obligatoire)

Description: Texte d'attribution/copyright du fond de carte (HTML autorisé).

Exemple:


&copy; <a href='https://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors

Valeurs possibles: Chaîne HTML

Valeur par défaut: Aucune (obligatoire)

État: ✅ Actif et fonctionnel


basemaps.{id}.minZoom (number, optionnel)

Description: Niveau de zoom minimum pour ce fond de carte.

Utilisation dans le code:

javascript
// geoleaf.baselayers.ts ligne 103

if (typeof definition.minZoom === "number") {
    opts.minZoom = definition.minZoom;
}

Fichiers source:

  • geoleaf.baselayers.ts ligne 100-107

Valeurs possibles: Nombre entier entre 0 et 20 (généralement 0-5 pour fonds de carte)

Valeur par défaut: 0

État: ✅ Actif et fonctionnel


basemaps.{id}.maxZoom (number, optionnel)

Description: Niveau de zoom maximum pour ce fond de carte.

Utilisation dans le code:

javascript
// geoleaf.baselayers.ts ligne 108

opts.maxZoom = typeof definition.maxZoom === "number" ? definition.maxZoom : 19;

Fichiers source:

  • geoleaf.baselayers.ts ligne 108

Valeurs possibles: Nombre entier entre 1 et 20 (généralement 17-19 pour OSM)

Valeur par défaut: 19

État: ✅ Actif et fonctionnel


basemaps.{id}.defaultBasemap (boolean, optionnel)

Description: Indique si ce fond de carte est sélectionné par défaut au chargement.

Utilisation dans le code:

  • Utilisé lors de l'initialisation de la carte pour sélectionner le fond par défaut

Fichiers source:

  • geoleaf.baselayers.ts

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel


basemaps.{id}.offline (boolean, optionnel)

Description: Indique si ce fond de carte est disponible en mode hors ligne (cache).

Utilisation dans le code:

  • Utilisé par le système de cache pour déterminer si les tuiles doivent être mises en cache

Fichiers source:

  • src/modules/storage/cache/resource-enumerator.js

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel


basemaps.{id}.offlineBounds (object, optionnel)

Description: Limites géographiques pour le cache hors ligne de ce fond de carte.

Structure:

jsonc

{

  "north": number,

  "south": number,

  "east": number,

  "west": number

}

Prérequis: offline: true

Exemple:

json
{
    "north": -22.0,

    "south": -56.0,

    "east": -53.5,

    "west": -73.5
}

Valeurs possibles: Coordonnées WGS84 (latitude/longitude en degrés décimaux)

Valeur par défaut: Aucun

État: ✅ Actif et fonctionnel


basemaps.{id}.cacheMinZoom (number, optionnel)

Description: Niveau de zoom minimum pour le cache hors ligne.

Prérequis: offline: true

Valeurs possibles: Nombre entier entre 0 et cacheMaxZoom

Valeur par défaut: 4

État: ✅ Actif et fonctionnel


basemaps.{id}.cacheMaxZoom (number, optionnel)

Description: Niveau de zoom maximum pour le cache hors ligne.

Prérequis: offline: true

Valeurs possibles: Nombre entier entre cacheMinZoom et 20

Valeur par défaut: 12

État: ✅ Actif et fonctionnel


basemaps.{id}.type (string, optionnel)

Description: Type de basemap. Permet de distinguer les basemaps raster classiques des basemaps vectorielles MapLibre GL.

Valeurs possibles:

  • "tile" — Basemap raster classique via source MapLibre GL JS de type "raster" (défaut implicite)

  • "maplibre" — Basemap vectorielle WebGL via style MapLibre GL JS (fichier JSON de style)

Valeur par défaut: "tile" (implicite quand absent)

Comportement: Si type: "maplibre" (ou si style est présent), le module Baselayers crée une source vectorielle MapLibre GL. Si le style n'est pas chargé, un fallback vers la source raster est utilisé.

Ajouté en: v2.0.0

État: ✅ Actif et fonctionnel


basemaps.{id}.style (string, requis si type "maplibre")

Description: URL du style JSON MapLibre GL (ou objet style inline). Définit les sources de tuiles vectorielles et les layers de rendu.

Prérequis: type: "maplibre" (ou implicite si style est fourni)

Exemple:


https://tiles.openfreemap.org/styles/liberty

Providers gratuits:

  • OpenFreeMap : https://tiles.openfreemap.org/styles/liberty (100% gratuit)

  • OpenFreeMap Dark : https://tiles.openfreemap.org/styles/dark

  • MapTiler (freemium) : https://api.maptiler.com/maps/streets-v2/style.json?key=KEY

Valeur par défaut: Aucune (requis pour les basemaps MapLibre)

Ajouté en: v2.0.0

État: ✅ Actif et fonctionnel


basemaps.{id}.fallbackUrl (string, optionnel)

Description: URL de tuiles raster de secours (fallback si le style MapLibre n'est pas disponible).

Prérequis: type: "maplibre" (ignoré pour les basemaps raster)

Exemple:


https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png

Comportement: Si MapLibre GL JS n'est pas chargé (CDN manquant, erreur réseau), la basemap utilise cette URL raster en fallback. Si fallbackUrl n'est pas fourni, le fallback utilise la basemap street par défaut (OSM).

Valeur par défaut: URL de la basemap street par défaut

Ajouté en: v2.0.0

État: ✅ Actif et fonctionnel


Section performance

performance (object, optionnel)

Description: Paramètres d'optimisation de performance pour le chargement des couches.

État: ✅ Actif et fonctionnel


performance.maxConcurrentLayers (number, optionnel)

Description: Nombre maximum de couches pouvant être chargées en parallèle.

Utilisation dans le code:

javascript
// themes/theme-applier.js ligne 102

const maxLayers = perfConfig.maxConcurrentLayers || 10;

Fichiers source:

  • src/modules/themes/theme-applier.js ligne 102

Valeurs possibles: Nombre entier > 0 (généralement 5-15)

Valeur par défaut: 10

État: ✅ Actif et fonctionnel


performance.layerLoadDelay (number, optionnel)

Description: Délai en millisecondes entre le chargement de chaque couche pour éviter la surcharge.

Utilisation dans le code:

javascript
// themes/theme-applier.js ligne 103

const loadDelay = perfConfig.layerLoadDelay || 200;

Fichiers source:

  • src/modules/themes/theme-applier.js ligne 103

Valeurs possibles: Nombre entier en millisecondes (généralement 100-500)

Valeur par défaut: 200

État: ✅ Actif et fonctionnel


performance.fitBoundsOnThemeChange (boolean, optionnel)

Description: Ajuste automatiquement la vue de la carte aux limites des données lors du changement de thème.

Utilisation dans le code:

javascript
// themes/theme-applier.js ligne 104

const enableFitBounds = perfConfig.fitBoundsOnThemeChange !== false;

Fichiers source:

  • src/modules/themes/theme-applier.js ligne 104

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel


Note v2.0.0 : Ces paramètres sont désormais dans ui.json sous la clé searchConfig. La clé search reste acceptée inline dans profile.json pour la rétrocompatibilité. Dans ui.json, utiliser searchConfig (voir CONFIGURATION_GUIDE.md — searchConfig).

search (object, optionnel)

Description: Configuration du panneau de recherche et de filtrage des POI.

Note: Supporte aussi l'ancien format profile.panels.search pour la rétrocompatibilité.

Utilisation dans le code:

javascript
// ui/filter-panel/renderer.js ligne 52

const searchPanel = (profile.panels && profile.panels.search) || profile.search;

Fichiers source:

  • renderer.ts ligne 51-52

  • filter-control-builder.ts ligne 385

État: ✅ Actif et fonctionnel


search.title (string, optionnel)

Description: Titre du panneau de filtrage.

Utilisation dans le code:

javascript
// ui/filter-panel/renderer.js ligne 93

textContent: searchPanel.title || "Filtres";

Fichiers source:

  • renderer.ts ligne 93

Valeurs possibles: Chaîne de caractères libre

Valeur par défaut: "Filtres"

État: ✅ Actif et fonctionnel


search.radiusMin (number, optionnel)

Description: Rayon minimum (en km) pour la recherche par proximité.

Utilisation dans le code:

javascript
// ui/filter-control-builder.js ligne 387

if (typeof searchConfig.radiusMin === "number" && searchConfig.radiusMin > 0) {
    minRadius = searchConfig.radiusMin;
}

Fichiers source:

  • filter-control-builder.ts ligne 387

Valeurs possibles: Nombre > 0 (généralement 1-10)

Valeur par défaut: 1

État: ✅ Actif et fonctionnel


search.radiusMax (number, optionnel)

Description: Rayon maximum (en km) pour la recherche par proximité.

Utilisation dans le code:

javascript
// ui/filter-control-builder.js ligne 390

if (typeof searchConfig.radiusMax === "number" && searchConfig.radiusMax > 0) {
    maxRadius = searchConfig.radiusMax;
}

Fichiers source:

  • filter-control-builder.ts ligne 390

Valeurs possibles: Nombre > radiusMin (généralement 50-100)

Valeur par défaut: 50

État: ✅ Actif et fonctionnel


search.radiusStep (number, optionnel)

Description: Pas d'incrémentation pour le curseur de rayon de recherche.

Utilisation dans le code:

javascript
// ui/filter-control-builder.js ligne 393

if (typeof searchConfig.radiusStep === "number" && searchConfig.radiusStep > 0) {
    stepRadius = searchConfig.radiusStep;
}

Fichiers source:

  • filter-control-builder.ts ligne 393

Valeurs possibles: Nombre > 0 (généralement 1-5)

Valeur par défaut: 1

État: ✅ Actif et fonctionnel


search.radiusDefault (number, optionnel)

Description: Rayon par défaut (en km) pour la recherche par proximité.

Utilisation dans le code:

javascript
// ui/filter-control-builder.js ligne 396

if (typeof searchConfig.radiusDefault === "number" && searchConfig.radiusDefault > 0) {
    defaultRadius = searchConfig.radiusDefault;
}

Fichiers source:

  • filter-control-builder.ts ligne 396

Valeurs possibles: Nombre entre radiusMin et radiusMax (généralement 10-20)

Valeur par défaut: 10

État: ✅ Actif et fonctionnel


search.searchPlaceholder (string, optionnel)

Description: Texte de placeholder pour le champ de recherche textuelle.

Valeurs possibles: Chaîne de caractères libre

Valeur par défaut: "Rechercher un POI..."

État: ✅ Actif et fonctionnel


search.filters (array, optionnel)

Description: Liste des filtres disponibles dans le panneau de recherche.

Structure de chaque filtre:

json
{
    "id": "string",

    "type": "string",

    "label": "string",

    "placeholder": "string",

    "searchFields": ["string"],

    "buttonLabel": "string",

    "instructionText": "string",

    "field": "string"
}

Types de filtres disponibles:

  • "search" - Recherche textuelle

  • "proximity" - Recherche par proximité géographique

  • "tree" - Arbre de catégories

  • "multiselect-tags" - Sélection multiple de tags

Utilisation dans le code:

javascript
// ui/filter-panel/renderer.js ligne 55

const filters = searchPanel && Array.isArray(searchPanel.filters) ? searchPanel.filters : null;

Fichiers source:

  • renderer.ts ligne 55

  • filter-control-builder.ts

État: ✅ Actif et fonctionnel


search.actions (object, optionnel)

Description: Labels des boutons d'action du panneau de filtrage.

Structure:

json
{
    "applyLabel": "string",

    "resetLabel": "string"
}

Valeurs par défaut:

  • applyLabel: "Appliquer"

  • resetLabel: "Réinitialiser"

État: ✅ Actif et fonctionnel


Section layerManagerConfig

Note v2.0.0 : Ces paramètres sont désormais dans ui.json. Ils restent acceptés inline dans profile.json pour la rétrocompatibilité.

layerManagerConfig (object, optionnel)

Description: Configuration du gestionnaire de couches.

Utilisation dans le code:

javascript
// geoleaf.layer-manager.ts ligne 149

const layerManagerConfig = GeoLeaf.Config.get("layerManagerConfig");

Fichiers source:

  • geoleaf.layer-manager.ts ligne 149

État: ✅ Actif et fonctionnel


layerManagerConfig.title (string, optionnel)

Description: Titre du gestionnaire de couches.

Valeurs possibles: Chaîne de caractères libre

Valeur par défaut: "Couches"

État: ✅ Actif et fonctionnel


layerManagerConfig.collapsedByDefault (boolean, optionnel)

Description: État replié initial du gestionnaire de couches.

Utilisation dans le code:

javascript
// geoleaf.layer-manager.ts ligne 152

collapsed: layerManagerConfig?.collapsedByDefault;

Fichiers source:

  • geoleaf.layer-manager.ts ligne 152

  • control.ts ligne 111

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


layerManagerConfig.sections (array, optionnel)

Description: Liste des sections du gestionnaire de couches.

Structure de chaque section:

jsonc

{

  "id": "string",

  "label": "string",

  "order": number,

  "collapsedByDefault": boolean

}

Utilisation dans le code:

javascript
// geoleaf.layer-manager.ts ligne 173

collapsedByDefault: s.collapsedByDefault;

Fichiers source:

  • geoleaf.layer-manager.ts ligne 162-176

  • renderer.ts ligne 61-62

État: ✅ Actif et fonctionnel


Section legendConfig

Note v2.0.0 : Ces paramètres sont désormais dans ui.json. Ils restent acceptés inline dans profile.json pour la rétrocompatibilité.

legendConfig (object, optionnel)

Description: Configuration du composant de légende.

Utilisation dans le code:

javascript
// geoleaf.legend.ts ligne 158

const legendConfig = GeoLeaf.Config.get("legendConfig");

Fichiers source:

  • geoleaf.legend.ts ligne 158

État: ✅ Actif et fonctionnel


legendConfig.title (string, optionnel)

Description: Titre de la légende.

Valeurs possibles: Chaîne de caractères libre

Valeur par défaut: "Légende"

État: ✅ Actif et fonctionnel


legendConfig.collapsedByDefault (boolean, optionnel)

Description: État replié initial de la légende.

Utilisation dans le code:

javascript
// geoleaf.legend.ts ligne 163

collapsed: (legendConfig && legendConfig.collapsedByDefault) || false;

Fichiers source:

  • geoleaf.legend.ts ligne 163

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


legendConfig.position (string, optionnel)

Description: Position de la légende sur la carte.

Valeurs possibles:

  • "topleft"

  • "topright"

  • "bottomleft"

  • "bottomright"

Valeur par défaut: "bottomleft"

État: ✅ Actif et fonctionnel


Section poiConfig

poiConfig (object, optionnel)

Description: Configuration des Points d'Intérêt (POI) et de leur clustering.

Utilisation dans le code:

javascript
// geojson/clustering.js ligne 25

return Config.get("poiConfig") || {};

Fichiers source:

  • clustering.ts ligne 25

État: ✅ Actif et fonctionnel


poiConfig.enabled (boolean, optionnel)

Description: Active ou désactive le système de POI.

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel


poiConfig.clustering (boolean, optionnel)

Description: Active le regroupement visuel (clustering) des marqueurs POI.

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


poiConfig.clusterRadius (number, optionnel)

Description: Rayon en pixels en dessous duquel deux marqueurs sont regroupés dans un cluster.

Valeur par défaut: 80

État: ✅ Actif et fonctionnel


poiConfig.disableClusteringAtZoom (number, optionnel)

Description: Niveau de zoom à partir duquel le clustering est désactivé (les marqueurs individuels s'affichent).

Valeur par défaut: 12

État: ✅ Actif et fonctionnel


poiConfig.clusterStrategy (string, optionnel)

Description: Stratégie de clustering des POI.

Utilisation dans le code:

javascript
// geojson/clustering.js ligne 123

const strategy = poiConfig.clusterStrategy || "unified";

Fichiers source:

  • clustering.ts ligne 123, 131

  • loader.ts ligne 495

Valeurs possibles:

  • "unified" - Cluster unique partagé entre toutes les couches (défaut)

  • "by-source" - Cluster indépendant par source de données

Valeur par défaut: "unified"

État: ✅ Actif et fonctionnel

Tests:


Section brandingConfig

Note v2.0.0 : Ces paramètres sont désormais dans ui.json. Ils restent acceptés inline dans profile.json pour la rétrocompatibilité.

brandingConfig (object, optionnel)

Description: Configuration du bandeau d'attribution/branding.

Utilisation dans le code:

javascript
// ui/branding.js ligne 72

const brandingConfig = GeoLeaf.Config?.get("brandingConfig");

Fichiers source:

  • branding.ts ligne 72

État: ✅ Actif et fonctionnel


brandingConfig.enabled (boolean, optionnel)

Description: Active/désactive le bandeau de branding.

Utilisation dans le code:

javascript
// ui/branding.js ligne 74

if (brandingConfig === false || (brandingConfig && brandingConfig.enabled === false)) {
    return;
}

Fichiers source:

  • branding.ts ligne 74

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


brandingConfig.text (string, optionnel)

Description: Texte du bandeau de branding (HTML autorisé).

Utilisation dans le code:

javascript
// ui/branding.js ligne 82

this._options.text = brandingConfig.text;

Fichiers source:

  • branding.ts ligne 81-82

Valeurs possibles: Chaîne HTML

Valeur par défaut: "Propulsé par © GeoLeaf"

État: ✅ Actif et fonctionnel


brandingConfig.position (string, optionnel)

Description: Position du bandeau de branding sur la carte.

Utilisation dans le code:

javascript
// ui/branding.js ligne 85

this._options.position = brandingConfig.position;

Fichiers source:

  • branding.ts ligne 84-85

Valeurs possibles:

  • "topleft"

  • "topright"

  • "bottomleft"

  • "bottomright"

Valeur par défaut: "bottomleft"

État: ✅ Actif et fonctionnel


Section tableConfig

Note v2.0.0 : Ces paramètres sont désormais dans ui.json. Ils restent acceptés inline dans profile.json pour la rétrocompatibilité.

tableConfig (object, optionnel)

Description: Configuration de la table de données tabulaires.

Utilisation dans le code:

javascript
// geoleaf.table.ts ligne 90

const globalConfig = GeoLeaf.Config ? GeoLeaf.Config.get("tableConfig") : null;

Fichiers source:

  • geoleaf.table.ts ligne 90

  • panel.ts

  • renderer.ts

État: ✅ Actif et fonctionnel


tableConfig.enabled (boolean, optionnel)

Description: Active/désactive le module table.

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


tableConfig.defaultVisible (boolean, optionnel)

Description: Table visible par défaut au chargement.

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel


tableConfig.pageSize (number, optionnel)

Description: Nombre de lignes par page dans la table.

Utilisation dans le code:

javascript
// geoleaf.table.ts ligne 94

pageSize: 50;

Fichiers source:

  • geoleaf.table.ts ligne 94

  • renderer.ts ligne 84-85

Valeurs possibles: Nombre entier > 0 (généralement 25-100)

Valeur par défaut: 50

État: ✅ Actif et fonctionnel

Tests:

  • __tests__/table/index.test.js ligne 81

tableConfig.maxRowsPerLayer (number, optionnel)

Description: Nombre maximum de lignes à afficher par couche.

Utilisation dans le code:

javascript
// geoleaf.table.ts ligne 305

const maxRows = this._config.maxRowsPerLayer || 1000;

Fichiers source:

  • geoleaf.table.ts ligne 95, 305

Valeurs possibles: Nombre entier > 0 (généralement 500-10000)

Valeur par défaut: 10000

État: ✅ Actif et fonctionnel

Tests:

  • __tests__/table/index.test.js ligne 82

tableConfig.enableExportButton (boolean, optionnel)

Description: Affiche le bouton d'export CSV/JSON.

Utilisation dans le code:

javascript

// table/panel.js ligne 194

if (config.enableExportButton) {

Fichiers source:

  • panel.ts ligne 194

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel

Tests:

  • __tests__/table/panel.test.js ligne 183

tableConfig.virtualScrolling (boolean, optionnel)

Description: Active le scrolling virtuel pour les grandes listes.

Utilisation dans le code:

javascript

// table/renderer.js ligne 84

if (config.virtualScrolling && features.length > config.pageSize) {

Fichiers source:

  • renderer.ts ligne 84

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


tableConfig.defaultHeight (string, optionnel)

Description: Hauteur par défaut de la table.

Utilisation dans le code:

javascript
// table/panel.js ligne 31

container.style.height = config.defaultHeight || "40%";

Fichiers source:

  • panel.ts ligne 31

Valeurs possibles: Valeur CSS (ex: "40%", "300px")

Valeur par défaut: "40%"

État: ✅ Actif et fonctionnel

Tests:

  • __tests__/table/index.test.js ligne 83

tableConfig.minHeight (string, optionnel)

Description: Hauteur minimale de la table (pour redimensionnement).

Utilisation dans le code:

javascript
// table/panel.js ligne 97

const minHeightPx = parseHeight(config.minHeight || "20%", viewportHeight);

Fichiers source:

  • panel.ts ligne 97

Valeurs possibles: Valeur CSS (ex: "20%", "150px")

Valeur par défaut: "20%"

État: ✅ Actif et fonctionnel


tableConfig.maxHeight (string, optionnel)

Description: Hauteur maximale de la table (pour redimensionnement).

Utilisation dans le code:

javascript
// table/panel.js ligne 98

const maxHeightPx = parseHeight(config.maxHeight || "80%", viewportHeight);

Fichiers source:

  • panel.ts ligne 98

Valeurs possibles: Valeur CSS (ex: "60%", "600px")

Valeur par défaut: "60%"

État: ✅ Actif et fonctionnel


tableConfig.resizable (boolean, optionnel)

Description: Permet le redimensionnement manuel de la table par l'utilisateur.

Utilisation dans le code:

javascript

// table/panel.js ligne 34

if (config.resizable) {

Fichiers source:

  • panel.ts ligne 34

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


Section scaleConfig

Note v2.0.0 : Ces paramètres sont désormais dans ui.json. Ils restent acceptés inline dans profile.json pour la rétrocompatibilité.

scaleConfig (object, optionnel)

Description: Configuration du contrôle d'échelle de la carte.

Utilisation dans le code:

javascript

// map/scale-control.js ligne 435

? GeoLeaf.Config.get('scaleConfig')

Fichiers source:

  • scale-control.ts ligne 435

Documentation:

État: ✅ Actif et fonctionnel


scaleConfig.scaleGraphic (boolean, optionnel)

Description: Affiche l'échelle graphique (barre graduée).

Utilisation dans le code:

javascript

// map/scale-control.js ligne 59

if (this._config.scaleGraphic !== false) {

Fichiers source:

  • scale-control.ts ligne 59, 438

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


scaleConfig.scaleNumeric (boolean, optionnel)

Description: Affiche l'échelle numérique (ratio 1:xxxxx).

Utilisation dans le code:

javascript

// map/scale-control.js ligne 65

if (this._config.scaleNumeric || this._config.scaleNivel) {

Fichiers source:

  • scale-control.ts ligne 65, 160, 438

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


scaleConfig.scaleNumericEditable (boolean, optionnel)

Description: Permet l'édition manuelle de l'échelle numérique (zoom direct).

Prérequis: scaleNumeric: true

Utilisation dans le code:

javascript

// map/scale-control.js ligne 161

if (this._config.scaleNumericEditable) {

Fichiers source:

  • scale-control.ts ligne 161, 285

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


scaleConfig.scaleNivel (boolean, optionnel)

Description: Affiche l'indicateur de niveau de zoom.

Utilisation dans le code:

javascript

// map/scale-control.js ligne 169

if (this._config.scaleNivel) {

Fichiers source:

  • scale-control.ts ligne 65, 169, 438

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


scaleConfig.position (string, optionnel)

Description: Position du contrôle d'échelle sur la carte.

Valeurs possibles:

  • "topleft"

  • "topright"

  • "bottomleft"

  • "bottomright"

Valeur par défaut: "bottomleft"

État: ✅ Actif et fonctionnel


Section storage

storage (object, optionnel)

Description: Configuration du système de stockage et cache hors ligne.

État: ✅ Actif et fonctionnel


storage.enableOfflineDetector (boolean, optionnel)

Description: Active la détection de la connectivité réseau (mode hors ligne). Affiche une notification quand la connexion est perdue ou rétablie.

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel


storage.enableServiceWorker (boolean, optionnel)

Description: Enregistre un Service Worker pour la mise en cache des ressources statiques (nécessite HTTPS). Utilisé par le plugin @geoleaf-plugins/storage.

Valeurs possibles: true | false

Valeur par défaut: false

État: ✅ Actif et fonctionnel


storage.cache (object, optionnel)

Description: Configuration du cache hors ligne.


storage.cache.enableProfileCache (boolean, optionnel)

Description: Active le cache des ressources du profil (fichiers JSON, GeoJSON).

Utilisation dans le code:

javascript
// storage/cache/layer-selector.js ligne 97

const profileCacheEnabled = Config.get("storage.cache.enableProfileCache", false);

Fichiers source:

  • src/modules/storage/cache/layer-selector.js ligne 97

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


storage.cache.enableTileCache (boolean, optionnel)

Description: Active le cache des tuiles des fonds de carte.

Utilisation dans le code:

javascript
// storage/cache/layer-selector.js ligne 98

const tileCacheEnabled = Config.get("storage.cache.enableTileCache", false);

Fichiers source:

  • src/modules/storage/cache/layer-selector.js ligne 98, 653

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


Section poiAddConfig

Note v2.0.0 : Ces paramètres sont désormais dans ui.json. Ils restent acceptés inline dans profile.json pour la rétrocompatibilité.

poiAddConfig (object, optionnel)

Description: Configuration de la fonctionnalité d'ajout de POI par l'utilisateur.

État: ✅ Actif et fonctionnel


poiAddConfig.enabled (boolean, optionnel)

Description: Active/désactive la fonctionnalité d'ajout de POI.

Valeurs possibles: true | false

Valeur par défaut: true

État: ✅ Actif et fonctionnel


poiAddConfig.defaultPosition (string, optionnel)

Description: Méthode par défaut pour positionner un nouveau POI.

Utilisation dans le code:

javascript
// ui/controls.js ligne 532

const defaultPosition = config?.poiAddConfig?.defaultPosition || "placement-mode";

Fichiers source:

  • controls.ts ligne 532, 534

Valeurs possibles:

  • "geolocation" - Utilise la position GPS de l'utilisateur

  • "placement-mode" - Mode placement manuel sur la carte (clic)

  • "map-center" - Centre actuel de la carte

Valeur par défaut: "placement-mode"

État: ✅ Actif et fonctionnel

Tests:

  • Voir les tests unitaires dans __tests__/poi/

Section geocodingConfig

Disponible depuis : v3.39.0

geocodingConfig (object, optionnel)

Description : Configure le contrôle de recherche d’adresse intégré à la carte. Désactivé par défaut (enabled: false).

Façade publique : GeoLeaf.Geocoding

Événement émis : geoleaf:geocoding:result

État : ✅ Actif et fonctionnel


geocodingConfig.enabled (boolean, optionnel)

Description : Active le contrôle de recherche d’adresse sur la carte.

Valeur par défaut : false

État : ✅ Actif et fonctionnel


geocodingConfig.provider (string, optionnel)

Description : Provider de géocodage. Valeurs prédéfinies : "addok" (BAN France, défaut), "nominatim" (OSM, mondial), "photon" (Komoot, mondial). Accepte également une URL HTTPS custom retournant un GeoJSON FeatureCollection.

Valeur par défaut : "addok"

État : ✅ Actif et fonctionnel


geocodingConfig.position (string, optionnel)

Description : Position du contrôle sur la carte.

Valeurs possibles : "top-left" | "top-right" | "bottom-left" | "bottom-right"

Valeur par défaut : "top-right"

État : ✅ Actif et fonctionnel


geocodingConfig.placeholder (string, optionnel)

Description : Texte du champ de saisie.

Valeur par défaut : "Rechercher une adresse…"

État : ✅ Actif et fonctionnel


geocodingConfig.minChars (number, optionnel)

Description : Nombre minimum de caractères avant déclenchement de la recherche.

Valeur par défaut : 3

État : ✅ Actif et fonctionnel


geocodingConfig.resultLimit (number, optionnel)

Description : Nombre maximum de résultats affichés.

Valeur par défaut : 5

État : ✅ Actif et fonctionnel


geocodingConfig.debounceMs (number, optionnel)

Description : Délai en ms entre la saisie et le déclenchement de la requête (pour éviter les appels excessifs).

Valeur par défaut : 300

État : ✅ Actif et fonctionnel


geocodingConfig.flyToZoom (number, optionnel)

Description : Niveau de zoom lors du survol vers un résultat ponctuel.

Valeur par défaut : 15

État : ✅ Actif et fonctionnel


Ces paramètres existent dans le code pour assurer la rétrocompatibilité mais ne devraient plus être utilisés dans les nouveaux profils.

⚠️ panels (object, déprécié)

Raison de dépréciation: Remplacé par la structure plate au premier niveau

Ancien format:

jsonc
{
    "panels": {
        "search": {
            /* config */
        },

        "detail": {
            /* config */
        },

        "route": {
            /* config */
        },

        "poi": {
            /* config */
        },
    },
}

Nouveau format:

jsonc
{
    "search": {
        /* config */
    },
}

Support actuel:

javascript
// ui/filter-panel/renderer.js ligne 52

const searchPanel = (profile.panels && profile.panels.search) || profile.search;

État: ⚠️ Supporté pour rétrocompatibilité mais déprécié

Migration: Déplacer profile.panels.search vers profile.search


⚠️ defaultSettings.routeConfig (object, déprécié)

Raison de dépréciation: Configuration de routes déplacée vers un autre système

Utilisation dans le code:

javascript

// geoleaf.route.ts ligne 371

if (activeProfile && activeProfile.defaultSettings && activeProfile.defaultSettings.routeConfig) {

Fichiers source:

  • geoleaf.route.ts ligne 371-384

État: ⚠️ Supporté pour rétrocompatibilité


ℹ️ Flags de mapping (rétrocompatibilité)

Ces paramètres ne sont PAS dans profile.json mais dans la configuration racine (geoleaf.config.tson ou dans config.data).

Noms supportés (par ordre de priorité):

  1. config.data.enableProfilePoiMappingRecommandé (utiliser celui-ci)

  2. config.data.useProfilePoiMapping ⚠️ Déprécié — utiliser enableProfilePoiMapping

  3. config.data.useMapping ⚠️ Déprécié — utiliser enableProfilePoiMapping

Utilisation dans le code:

javascript

// config/profile.js ligne 87-101

isProfilePoiMappingEnabled() {

    // Cherche plusieurs noms pour rétrocompatibilité (priorité décroissante)

    if (typeof dataCfg.enableProfilePoiMapping === "boolean") {

        return dataCfg.enableProfilePoiMapping;  // Préféré

    }

    if (typeof dataCfg.useProfilePoiMapping === "boolean") {

        return dataCfg.useProfilePoiMapping;     // Fallback

    }

    if (typeof dataCfg.useMapping === "boolean") {

        return dataCfg.useMapping;               // Fallback

    }

    return true;

}

Fichiers source:

  • profile.ts ligne 87-101

État: ✅ Supportés pour rétrocompatibilité, mais utiliser enableProfilePoiMapping


Paramètres manquants dans profile.json

CesArchitecture des fichiers de configuration

Cette section clarifie la structure et l'organisation des fichiers de configuration dans GeoLeaf pour éviter toute confusion entre les différents fichiers.

📁 Hiérarchie des fichiers de configuration


profiles/{profile-name}/

├── profile.json          ← Configuration principale du profil (THIS FILE)

├── taxonomy.json         ← Catégories, tags, métadonnées (SEPARATE)

├── themes.json          ← Présets de visibilité des couches (SEPARATE)

├── layers.json          ← Définition des couches GeoJSON (SEPARATE)

└── [autres fichiers]



geoleaf.config.tson      ← Configuration globale de l'application (ROOT)

🔄 Responsabilités de chaque fichier

profile.json (Ce fichier)

  • ✅ Configuration UI: Visibilité des composants, thèmes, langues

  • ✅ Configuration Performance: Limites de chargement, délais

  • ✅ Configuration Basemaps: Fonds de carte disponibles

  • ✅ Configuration Composants: Tables, légende, gestionnaire de couches

  • ✅ Configuration Filtres/Recherche: Paramètres de recherche et filtrage

  • Références vers taxonomie/thèmes/couches (via Files)

  • ⚠️ defaultSettings.routeConfig : Configuration de routage (déprécié)

taxonomy.json

  • ✅ Catégories et hiérarchie

  • Métadonnées des icônes (sprites, formats)

  • ✅ Tags et classifications

  • ✅ Propriétés de couches non spatiales

themes.json

  • ✅ Presets de visibilité (groupes de couches)

  • ✅ Thèmes cartographiques

  • ✅ Configurations de styles alternatifs (par thème)

layers.json

  • ✅ Définitions GeoJSON des couches

  • Métadonnées de chaque couche: Styles, icônes, attributs

  • ✅ Configuration spécifique par couche

  • ✅ Chemins vers fichiers de données

🎨 Où vit chaque paramètre?

| Paramètre | Fichier | Utilisation |

| ----------------------------- | ----------------- | -------------------------------------------- |

| icons | taxonomy.json | Métadonnées des sprites/icônes |

| stylesConfig | profile.json | Configuration globale des styles alternatifs |

| Directory | layers.json | Templates de chemins (définis par couche) |

| defaultSettings.routeConfig | profile.json | Configuration de routage (déprécié) |

| ui.* | profile.json | Configuration UI |

| basemaps | profile.json | Fonds de carte |

| Tous les autres | profile.json | Voir section structure |

✅ Validation

  • profile.json contient uniquement les paramètres documentés dans ce fichier

  • Chaque paramètre a un usage clair et vérifié dans le code source

  • Aucun paramètre "fantôme" ou inutilisé

  • Architecture cohérente et maintenabl

Tableau récapitulatif

| Section | Paramètre | Type | Défaut | État | Obligatoire |

| ------------------ | ------------------------ | ------- | ---------------- | ---- | ----------- |

| Racine | id | string | - | ✅ | Oui |

| Racine | label | string | - | ✅ | Oui |

| Racine | description | string | "" | ✅ | Non |

| Racine | version | string | "1.0.0" | ✅ | Non |

| Files | taxonomyFile | string | "taxonomy.json" | ✅ | Oui |

| Files | themesFile | string | "themes.json" | ✅ | Oui |

| Files | layersFile | string | "layers.json" | ✅ | Non |

| ui | theme | string | "light" | ✅ | Non |

| ui | language | string | "fr" | ⚠️ | Non |

| ui | showBaseLayerControls | boolean | false | ✅ | Non |

| ui | showLayerManager | boolean | true | ✅ | Non |

| ui | showFilterPanel | boolean | true | ✅ | Non |

| ui | showGeolocation | boolean | true | ✅ | Non | | ui | showScale | boolean | true | ✅ | Non |

| ui | showCoordinates | boolean | true | ✅ | Non |

| ui | showThemeSelector | boolean | true | ✅ | Non |

| ui | showLegend | boolean | true | ✅ | Non |

| ui | showCacheButton | boolean | false | ✅ | Non |

| ui | showAddPoi | boolean | false | ✅ | Non |

| ui | interactiveShapes | boolean | false | ✅ | Non |

| basemaps | {id}.id | string | - | ✅ | Oui |

| basemaps | {id}.label | string | - | ✅ | Oui |

| basemaps | {id}.url | string | - | ✅ | Oui |

| basemaps | {id}.attribution | string | - | ✅ | Oui |

| basemaps | {id}.minZoom | number | 0 | ✅ | Non |

| basemaps | {id}.maxZoom | number | 19 | ✅ | Non |

| basemaps | {id}.defaultBasemap | boolean | false | ✅ | Non |

| basemaps | {id}.offline | boolean | false | ✅ | Non |

| basemaps | {id}.offlineBounds | object | - | ✅ | Non |

| basemaps | {id}.cacheMinZoom | number | 4 | ✅ | Non |

| basemaps | {id}.cacheMaxZoom | number | 12 | ✅ | Non |

| performance | maxConcurrentLayers | number | 10 | ✅ | Non |

| performance | layerLoadDelay | number | 200 | ✅ | Non |

| performance | fitBoundsOnThemeChange | boolean | false | ✅ | Non |

| search | title | string | "Filtres" | ✅ | Non |

| search | radiusMin | number | 1 | ✅ | Non |

| search | radiusMax | number | 50 | ✅ | Non |

| search | radiusStep | number | 1 | ✅ | Non |

| search | radiusDefault | number | 10 | ✅ | Non |

| search | searchPlaceholder | string | "Rechercher..." | ✅ | Non |

| search | filters | array | [] | ✅ | Non |

| search | actions | object | {...} | ✅ | Non |

| layerManagerConfig | title | string | "Couches" | ✅ | Non |

| layerManagerConfig | collapsedByDefault | boolean | true | ✅ | Non |

| layerManagerConfig | sections | array | [] | ✅ | Non |

| legendConfig | title | string | "Légende" | ✅ | Non |

| legendConfig | collapsedByDefault | boolean | true | ✅ | Non |

| legendConfig | position | string | "bottomleft" | ✅ | Non |

| poiConfig | clusterStrategy | string | "unified" | ✅ | Non |

| brandingConfig | enabled | boolean | true | ✅ | Non |

| brandingConfig | text | string | "..." | ✅ | Non |

| brandingConfig | position | string | "bottomleft" | ✅ | Non |

| tableConfig | enabled | boolean | true | ✅ | Non |

| tableConfig | defaultVisible | boolean | false | ✅ | Non |

| tableConfig | pageSize | number | 50 | ✅ | Non |

| tableConfig | maxRowsPerLayer | number | 10000 | ✅ | Non |

| tableConfig | enableExportButton | boolean | true | ✅ | Non |

| tableConfig | virtualScrolling | boolean | true | ✅ | Non |

| tableConfig | defaultHeight | string | "40%" | ✅ | Non |

| tableConfig | minHeight | string | "20%" | ✅ | Non |

| tableConfig | maxHeight | string | "60%" | ✅ | Non |

| tableConfig | resizable | boolean | true | ✅ | Non |

| scaleConfig | scaleGraphic | boolean | true | ✅ | Non |

| scaleConfig | scaleNumeric | boolean | true | ✅ | Non |

| scaleConfig | scaleNumericEditable | boolean | true | ✅ | Non |

| scaleConfig | scaleNivel | boolean | true | ✅ | Non |

| scaleConfig | position | string | "bottomleft" | ✅ | Non |

| storage.cache | enableProfileCache | boolean | true | ✅ | Non |

| storage.cache | enableTileCache | boolean | true | ✅ | Non |

| poiAddConfig | enabled | boolean | true | ✅ | Non |

| poiAddConfig | defaultPosition | string | "placement-mode" | ✅ | Non |

| geocodingConfig | enabled | boolean | false | ✅ | Non |

| geocodingConfig | provider | string | "addok" | ✅ | Non |

| geocodingConfig | position | string | "top-right" | ✅ | Non |

| geocodingConfig | placeholder | string | "Rechercher une adresse…" | ✅ | Non |

| geocodingConfig | minChars | number | 3 | ✅ | Non |

| geocodingConfig | resultLimit | number | 5 | ✅ | Non |

| geocodingConfig | debounceMs | number | 300 | ✅ | Non |

| geocodingConfig | flyToZoom | number | 15 | ✅ | Non |

Légende:

  • ✅ : Actif et fonctionnel

  • ⚠️ : Défini mais peu utilisé

  • ❌ : Non présent/manquant

  • 🔶 : Déprécié


Notes finales

Points d'attention

  1. Nomenclature des sections : La section Files utilise des noms avec suffixe "File" (taxonomyFile, themesFile) ce qui est cohérent.

  2. Rétrocompatibilité : Le code supporte l'ancienne structure profile.panels.search mais la nouvelle structure profile.search est recommandée.

  3. Paramètres data.* : Les paramètres comme data.activeProfile, data.profilesBasePath, data.enableProfilePoiMapping ne sont PAS dans profile.json mais dans geoleaf.config.tson ou passés via init().

  4. Position des contrôles : Toutes les positions utilisent les valeurs standard MapLibre GL JS : "top-left", "top-right", "bottom-left", "bottom-right".

  5. Cache hors ligne : Les paramètres offline, offlineBounds, cacheMinZoom, cacheMaxZoom dans basemaps sont pleinement fonctionnels.

Recommandations

  1. Ajouter defaultSettings pour centraliser les paramètres par défaut de la carte.

  2. Documenter Directory si ce pattern est utilisé pour les couches.

  3. Considérer l'ajout de stylesConfig pour supporter les styles alternatifs.

  4. Maintenir la rétrocompatibilité avec panels.* pendant au moins une version majeure.

  5. Migration useMappingenableProfilePoiMapping dans les exemples et documentation.


Fichier mis à jour le mars 2026

Basé sur l'analyse du code source GeoLeaf JS v2.0.0

Released under the MIT License.