Skip to content

GeoLeaf Events API

Module : @geoleaf/coreGeoLeaf.EventsVersion : 2.0.0 Dernière mise à jour : Mars 2026

GeoLeaf émet des événements DOM natifs (CustomEvent) sur document. Ils sont typés via GeoLeafEventMap.

Les intégrateurs s'abonnent uniquement — le dispatch est interne à GeoLeaf.


API publique

GeoLeaf.Events.on(event, handler)

ts
GeoLeaf.Events.on("geoleaf:poi:click", (e) => {
    console.log("POI cliqué :", e.detail.poiId);
});

Enregistre un listener pour l'événement event. Appelé à chaque déclenchement jusqu'à off().

GeoLeaf.Events.off(event, handler)

ts
GeoLeaf.Events.off("geoleaf:poi:click", myHandler);

Supprime un listener précédemment enregistré. La même référence de fonction doit être passée.

GeoLeaf.Events.once(event, handler)

ts
GeoLeaf.Events.once("geoleaf:app:ready", () => {
    console.log("App prête !");
});

Listener déclenché une seule fois puis automatiquement supprimé.


Référence complète des événements

Nom de l'événementDéclenchementChamps clés du payload
geoleaf:app:readyApp entièrement initialiséeversion, timestamp
geoleaf:map:readyCarte MapLibre créée
geoleaf:profile:loadedProfil JSON complètement chargéprofileId, data
geoleaf:basemap:changeChangement de fond de cartekey, previousKey
geoleaf:theme:appliedThème appliqué (couches chargées)themeName, layerCount
geoleaf:poi:clickMarker POI cliquépoiId, layerId, source
geoleaf:poi:panel:openPanneau latéral ouvert sur un POIpoiId, poiName
geoleaf:poi:panel:closePanneau latéral fermépoiId
geoleaf:layer:toggleCouche affichée ou masquéelayerId, visible, source
geoleaf:filter:applyFiltre appliqué sur des entitéslayerIds, geometryType?, activeCount
geoleaf:filter:resetFiltre réinitialisé (tout visible)layerIds
geoleaf:map:moveCarte déplacée (moveend MapLibre)center.lat, center.lng, zoom
geoleaf:map:zoomZoom changé (zoomend MapLibre)zoom, oldZoom, center
geoleaf:plugin:loadedPlugin enregistré de façon synchronename, version
geoleaf:plugin:lazy-loadedPlugin lazy chargé de façon asynchronename
geoleaf:plugin:failedÉchec du chargement d'un plugin lazyname, error
geoleaf:geocoding:resultRésultat de géocodage sélectionnélabel, lat, lng, bounds?

Exemples d'intégration

Analytics — Matomo

ts
GeoLeaf.Events.on("geoleaf:poi:click", (e) => {
    _paq.push(["trackEvent", "Map", "POI Click", e.detail.poiId]);
});
GeoLeaf.Events.on("geoleaf:filter:apply", (e) => {
    _paq.push(["trackEvent", "Map", "Filter Apply", e.detail.activeCount.toString()]);
});

Analytics — Google Analytics 4

ts
GeoLeaf.Events.on("geoleaf:map:move", (e) => {
    gtag("event", "map_pan", { lat: e.detail.center.lat, lng: e.detail.center.lng });
});
GeoLeaf.Events.on("geoleaf:layer:toggle", (e) => {
    gtag("event", "layer_toggle", { layer_id: e.detail.layerId, visible: e.detail.visible });
});

Nettoyage des listeners

ts
const handlePoiClick = (e) => {
    /* ... */
};
GeoLeaf.Events.on("geoleaf:poi:click", handlePoiClick);

// Plus tard :
GeoLeaf.Events.off("geoleaf:poi:click", handlePoiClick);

Notes de sécurité

  • Les payloads contiennent uniquement des primitives (string, number, boolean). Aucune référence DOM.
  • L'erreur de plugin:failed est tronquée à 200 caractères pour éviter les fuites de stack trace.
  • Compatible SSR : les appels sont silencieux si document n'est pas défini.

Released under the MIT License.