GeoLeaf — Configuration des plugins dans un profil
Version : 2.0.0 Dernière mise à jour : mars 2026
Vue d'ensemble
Certaines clés de configuration dans profile.json et ui.json n'ont d'effet que lorsque le plugin correspondant est chargé. Sans le plugin, la clé est lue sans erreur et ignorée silencieusement. Cette conception permet de définir les configurations à l'avance et de charger les plugins optionnellement selon l'environnement.
| Clé de profil | Plugin requis | Effet quand le plugin est chargé |
|---|---|---|
ui.showCacheButton | @geoleaf-plugins/storage | Affiche le bouton de gestion du cache offline |
ui.showAddPoi | @geoleaf-plugins/addpoi | Affiche le bouton d'ajout de POI |
storage | @geoleaf-plugins/storage | Configure le cache offline (tiles, profil) |
poiAddConfig | @geoleaf-plugins/addpoi | Configure le formulaire d'ajout de POI |
Note :
@geoleaf-plugins/storageet@geoleaf-plugins/addpoisont des plugins commerciaux distribués vianpm.pkg.github.com.@geoleaf/connector(authentification HTTP) est MIT et distribué vianpmjs.org.
Plugin Storage — @geoleaf-plugins/storage
Activer le bouton cache
Dans ui.json → section ui :
{
"ui": {
"showCacheButton": true
}
}Sans ce flag à true, le bouton n'apparaît pas même si le plugin est chargé.
Bloc storage dans profile.json
Configure le comportement du cache offline :
{
"storage": {
"enableOfflineDetector": true,
"enableServiceWorker": false,
"cache": {
"enableProfileCache": true,
"enableTileCache": true
}
}
}| Clé | Type | Défaut | Description |
|---|---|---|---|
enableOfflineDetector | boolean | false | Surveille la connectivité réseau et affiche un indicateur offline |
enableServiceWorker | boolean | false | Active la mise en cache via Service Worker (complémentaire à IndexedDB) |
cache.enableProfileCache | boolean | true | Met en cache les fichiers du profil (JSON de config, taxonomie, etc.) |
cache.enableTileCache | boolean | true | Met en cache les tuiles cartographiques (raster + vecteur) |
Cache par couche (dans basemaps.json)
La configuration du cache peut être affinée au niveau de chaque fond de carte :
{
"basemaps": {
"osm": {
"label": "OpenStreetMap",
"type": "tile",
"url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"offline": true,
"cacheMinZoom": 8,
"cacheMaxZoom": 16,
"offlineBounds": {
"north": 48.9,
"south": 48.8,
"east": 2.4,
"west": 2.3
}
}
}
}| Clé | Description |
|---|---|
offline | Autorise la mise en cache offline pour ce fond de carte |
cacheMinZoom | Niveau de zoom minimum à précharger |
cacheMaxZoom | Niveau de zoom maximum à précharger |
offlineBounds | Emprise géographique à mettre en cache (north, south, east, west) |
Plugin AddPOI — @geoleaf-plugins/addpoi
Activer le bouton d'ajout
Dans ui.json → section ui :
{
"ui": {
"showAddPoi": true
}
}Bloc poiAddConfig dans profile.json
Configure le comportement du formulaire d'ajout de POI :
{
"poiAddConfig": {
"enabled": true,
"defaultPosition": "geolocation"
}
}| Clé | Type | Valeurs | Description |
|---|---|---|---|
enabled | boolean | true / false | Active ou désactive la fonctionnalité d'ajout |
defaultPosition | string | "geolocation" / "center" | Position initiale du nouveau POI : position GPS de l'utilisateur ou centre de la carte |
Configuration avancée : Le formulaire d'ajout, les champs personnalisés et l'endpoint d'envoi sont configurés directement dans le plugin. Voir la documentation
@geoleaf-plugins/addpoipour les options complètes.
Exemple : profil avec les deux plugins activés
profile.json
{
"id": "mon-profil",
"label": "Mon Profil",
"version": "1.0.0",
"map": {
"center": [48.8566, 2.3522],
"zoom": 12
},
"Files": {
"taxonomyFile": "taxonomy.json",
"layersFile": "layers.json",
"basemapsFile": "basemaps.json",
"uiFile": "ui.json"
},
"clusteringConfig": {
"enabled": true,
"strategy": "by-layer",
"maxClusterRadius": 80,
"disableClusteringAtZoom": 16
},
"storage": {
"enableOfflineDetector": true,
"enableServiceWorker": false,
"cache": {
"enableProfileCache": true,
"enableTileCache": true
}
},
"poiAddConfig": {
"enabled": true,
"defaultPosition": "geolocation"
}
}ui.json
{
"ui": {
"theme": "auto",
"language": "fr",
"showLayerManager": true,
"showFilterPanel": true,
"showLegend": true,
"showTable": true,
"showThemeSelector": true,
"enableGeolocation": true,
"showCacheButton": true,
"showAddPoi": true,
"permalink": {
"enabled": true,
"mode": "hash"
}
},
"search": {
"title": "Filtrer",
"searchPlaceholder": "Rechercher...",
"filters": [
{
"id": "searchText",
"type": "search",
"label": "Recherche textuelle",
"placeholder": "Nom...",
"searchFields": ["properties.name"]
}
]
}
}Chargement des plugins (ESM)
import "@geoleaf/core";
import "@geoleaf/connector"; // optionnel — si API auth requise
import "@geoleaf-plugins/storage"; // débloque showCacheButton + storage.*
import "@geoleaf-plugins/addpoi"; // débloque showAddPoi + poiAddConfig.*
GeoLeaf.init({
map: { target: "map" },
data: {
activeProfile: "mon-profil",
profilesBasePath: "./profiles/",
},
});
GeoLeaf.boot();Ordre d'import : les plugins doivent être importés après
@geoleaf/core. Voir PLUGIN_DEVELOPMENT_GUIDE.md → section "Ordre de chargement".
Règle fondamentale : dégradation silencieuse
Les clés storage, poiAddConfig, showCacheButton et showAddPoi sont toujours valides dans le schéma de configuration de GeoLeaf. Si le plugin correspondant n'est pas chargé :
- Aucune erreur n'est levée
- La clé est lue et ignorée
- Le bouton ou la fonctionnalité n'apparaît pas
Ce comportement est intentionnel : il permet de maintenir un profil unique pour différents environnements (avec ou sans plugins commerciaux).
Vérifier l'état des plugins au runtime
// Liste des plugins chargés
GeoLeaf.PluginRegistry.getLoadedPlugins();
// → ["core", "connector", "storage", "addpoi"]
// Vérifier un plugin spécifique
GeoLeaf.PluginRegistry.isLoaded("storage"); // → true / false
GeoLeaf.PluginRegistry.isLoaded("addpoi"); // → true / falseVoir aussi
- PLUGIN_DEVELOPMENT_GUIDE.md — développer un plugin custom
- CONNECTOR_GUIDE.md — authentification HTTP avec
@geoleaf/connector - PROFILES_GUIDE.md — structure complète d'un profil
- config/POI_CONFIG.md — configuration détaillée du clustering POI
- ui/PERMALINK.md — configuration du permalink
