Référence de l'API Embed
Chaque commande et chaque événement de l'API Embed d'Icon Map, générés à partir du contrat TypeScript du SDK. Chaque commande est une méthode du handle renvoyé par embed() ; elle se résout avec le résultat indiqué, ou est rejetée avec une EmbedError dont le code est l'un des codes d'erreur.
Une commande marquée read nécessite aussi le réglage Read state and events de l'auteur. Les types cités ici (EmbedCamera, EmbedScene ...) sont exportés par @iconmap/embed.
Commandes
Session
Toujours disponibles dès qu'une session est ouverte. Non soumises à la stratégie de l'auteur.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
ping |
- | { protocol: number; uptimeMs: number } |
Aller-retour jusqu'à la visionneuse. Utile pour vérifier que la carte répond, et pour laisser un message asynchrone antérieur se terminer. |
getCapabilities |
- | EmbedCapabilities |
Le descripteur de capacités, à nouveau (le même objet que celui avec lequel ready s'est résolu). |
setToken |
{ token: string } |
- | Fournit un nouveau jeton d'intégration avant l'expiration de l'ancien (voir tokenExpiring). Cartes publiées uniquement. |
setLanguage |
{ language: string } |
- | Change la langue du lecteur. Uniquement une langue de capabilities.map.locales ; toute autre valeur est rejetée avec invalid_args, jamais de repli silencieux. |
Caméra
Déplacer et lire la vue. Groupe de stratégie : camera.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
getView |
- | EmbedViewState |
read La caméra et les limites visibles. |
setView |
Partial<EmbedCamera> & { animate?: boolean } |
- | Définit n'importe quelle valeur parmi center / zoom / bearing / pitch. Saute directement, sauf si animate vaut true. |
flyTo |
Partial<EmbedCamera> & { durationMs?: number; curve?: number } |
- | Un vol animé vers une position de caméra. |
fitBounds |
{ bounds: EmbedBounds; padding?: EmbedPadding; maxZoom?: number; animate?: boolean; pitch?: number; bearing?: number } |
- | Cadre un rectangle englobant. pitch / bearing sont les valeurs sur lesquelles la caméra se pose ; sans eux, elle conserve son inclinaison actuelle (passez pitch: 0, bearing: 0 pour un cadrage à plat, nord en haut, après un vol incliné). |
fitLayer |
{ layerId: string; padding?: EmbedPadding; maxZoom?: number; pitch?: number; bearing?: number } |
- | Cadre les données d'une couche telles que filtrées actuellement. unknown_id si la couche n'a pas d'étendue. pitch / bearing comme pour fitBounds. |
zoomBy |
{ delta: number; animate?: boolean } |
- | Zoome avant ou arrière d'un delta, borné à la plage de la carte. |
resize |
- | - | Indique à la carte que son conteneur a changé de taille (après avoir redimensionné le parent du cadre). |
setMaxBounds |
{ bounds: EmbedBounds | null } |
- | Limite le déplacement à un rectangle ; null supprime la limite. |
Couches et visibilité
Afficher et masquer ce que l'auteur a publié. Visibilité uniquement, jamais le style. Groupe de stratégie : layers.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
getLayers |
- | EmbedLayerInfo[] |
read Les couches de la carte : id, nom, type, et si chacune est affichée actuellement. |
getVisibility |
- | EmbedVisibility |
read Chaque bascule de la scène, entièrement renseignée : couches, étiquettes et groupes d'entités du fond de carte, terminateur, ombrage, visuels. |
setVisibility |
EmbedVisibility |
{ skipped: string[] } | void |
Applique un instantané partiel de visibilité : ce que vous omettez reste inchangé. Les id inconnus sont ignorés et signalés. Masquer un segment le DÉSACTIVE, comme dans un signet : sa sélection cesse de filtrer jusqu'à ce qu'il soit de nouveau affiché. Pour filtrer la carte sans afficher de carte de segment, utilisez le groupe des filtres (setFilters). |
setLayerVisibility |
{ layerId: string; visible: boolean } |
- | Affiche ou masque une couche. |
resetVisibility |
- | - | Remet chaque bascule dans l'état publié par l'auteur. |
getVisuals |
- | EmbedVisualInfo[] |
read Les graphiques, segments, zones de texte et autres visuels de la carte, avec leur visibilité. |
getLayerStats |
{ layerId: string } |
{ layerId: string; visibleFeatureCount: number } |
read Le nombre d'entités que contient la couche à cet instant, après filtres et segments. |
Filtres déclarés
Valeurs des filtres déclarés par l'auteur sur la carte. Cartes publiées uniquement. Groupe de stratégie : filters.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
getFilterSchema |
- | EmbedFilterSchemaEntry[] |
read Les filtres déclarés par l'auteur : nom, type, opérateurs, valeur par défaut. Construisez votre propre interface de filtrage à partir de ces informations. |
getFilters |
- | EmbedFilterValues |
read Les valeurs de filtre actuellement appliquées. |
setFilters |
EmbedFilterValues |
- | Remplace les valeurs de filtre. Un nom que l'auteur n'a pas déclaré est rejeté avec undeclared_filter avant que quoi que ce soit ne soit appliqué. |
updateFilters |
{ operation: EmbedFilterOperation; filters?: EmbedFilterValues; display?: Record<string, EmbedFilterDisplay> } |
- | Ajoute, remplace ou supprime des filtres individuels, à la manière de Power BI, avec des paramètres d'affichage facultatifs par filtre (locked, hidden, displayName). |
clearFilters |
- | - | Supprime toutes les valeurs de filtre de l'hôte. |
Données
Réexécuter les requêtes en direct. Cartes publiées uniquement. Groupe de stratégie : data.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
refreshData |
{ bindingIds?: string[] } | void |
{ refreshed: string[] } |
Réexécute les requêtes en direct sans passer par le cache des résultats. Se résout avec les id de liaison actualisés (vide sur une carte instantanée). |
Segments
Piloter les segments du lecteur. Groupe de stratégie : slicers.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
getSlicers |
- | EmbedSlicerInfo[] |
read Les segments de la carte et leur état actuel. |
getSlicerValues |
{ slicerId: string; search?: string } |
{ values: unknown[]; truncated: boolean } |
read Les valeurs proposées par un segment de liste, éventuellement restreintes par une chaîne de recherche. Fonctionne aussi pour un segment masqué. |
setSlicerState |
{ slicerId: string; state: EmbedSlicerState } |
- | Définit la sélection d'un segment, exactement comme si le lecteur l'avait fait. |
clearSlicer |
{ slicerId: string } |
- | Efface un segment. |
clearAllSlicers |
- | - | Efface tous les segments. |
Sélection et mise en surbrillance
Sélectionner des entités, filtrer les graphiques de manière croisée, mettre en surbrillance sans sélectionner. Groupe de stratégie : selection.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
getSelection |
- | EmbedSelection |
read Les clés des entités sélectionnées, par id de couche. |
setSelection |
EmbedSelection |
{ skipped: string[] } | void |
Remplace la sélection. Les id de couche inconnus sont ignorés et signalés. |
clearSelection |
- | - | Efface la sélection. |
selectByKey |
{ layerId: string; keys: Array<string | number>; field?: string; zoomTo?: boolean } |
{ matched: number } |
Sélectionne des entités à l'aide de vos propres clés : avec field, les clés sont comparées aux valeurs de ce champ (« équipement 41B ») ; sans, ce sont des clés d'entité telles que featureClick les a signalées. zoomTo cadre le résultat. 500 clés au maximum. field doit être une colonne présente dans la carte publiée. Une carte publiée ne contient que les colonnes qu'elle utilise (info-bulles, style, étiquettes, segments) : une colonne de clé utilisée nulle part ailleurs en est absente et ne correspond à rien. L'auteur l'ajoute alors aux champs d'info-bulle de la couche. |
getChartSelection |
- | Record<string, EmbedChartDatum[]> |
read Les points de données sélectionnés dans chaque graphique (le filtre croisé de la carte), par id de graphique. |
setChartSelection |
{ chartId: string; datums: EmbedChartDatum[] } |
- | Sélectionne des points de données dans un graphique, ce qui filtre la carte de manière croisée comme le ferait un clic. |
clearChartSelection |
{ chartId?: string } | void |
- | Efface la sélection d'un graphique, ou de tous. |
closePopups |
- | - | Ferme la fenêtre contextuelle d'entité si elle est ouverte. |
highlight |
{ layerId: string; keys: Array<string | number>; field?: string } |
{ matched: number } |
Mise en évidence passagère : dessine keys sur layerId comme sélectionnées SANS modifier la sélection, donc pas de fenêtre contextuelle, pas de portée de panneau, pas de selectionChanged. Le prochain clic du lecteur la remplace. Avec field, les clés sont résolues via ce champ comme pour selectByKey. |
clearHighlight |
- | - | Supprime une mise en surbrillance définie avec highlight. |
Scènes, signets et visites
Capturer et restaurer l'état complet de la session. Groupe de stratégie : scenes.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
captureScene |
{ include?: Array<keyof EmbedScene>; opaque?: boolean } | void |
EmbedScene | { state: string } |
read L'état complet de la session sous la forme d'un seul objet sérialisable : caméra, visibilité, segments, filtres, sélection, fond de carte. Stockez-le, ou transformez-le en lien avec sceneToUrl. |
applyScene |
{ scene: EmbedScene | { state: string }; animate?: boolean } |
{ skipped: string[] } |
Restaure une scène capturée. Les id que la carte n'a plus sont ignorés et signalés : une scène survit ainsi à une republication. |
resetScene |
- | - | Remet tout dans l'état publié par l'auteur. |
getBookmarks |
- | EmbedBookmarkInfo[] |
read Les signets de l'auteur. Vide sauf si l'auteur a choisi de proposer des signets lors de la publication de la carte. |
applyBookmark |
{ bookmarkId: string; animate?: boolean } |
- | Applique un signet par le même chemin que la barre de signets. |
getTours |
- | EmbedTourInfo[] |
read Les visites de l'auteur. |
playTour |
{ tourId: string } |
- | Lance une visite. Les événements de caméra déclenchés pendant sa lecture portent reason: "tour". |
stopTour |
- | - | Arrête la visite en cours. |
Présentation
Fond de carte, contrôles, thème, légende, export d'image. Groupe de stratégie : presentation.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
getBasemaps |
- | EmbedBasemapInfo[] |
read Les fonds de carte publiés par l'auteur pour cette carte, et celui qui est actif. |
setBasemap |
{ basemapId: string } |
- | Bascule vers l'un des fonds de carte publiés. Il n'existe aucun moyen de charger votre propre style. |
setChrome |
EmbedChromeSettings |
- | Masque ou affiche les contrôles propres à la carte (légende, contrôle des couches, fenêtres contextuelles, barre de signets, commandes de visite, recherche). Un réglage peut masquer un contrôle configuré par l'auteur ; il ne peut pas en ajouter un que l'auteur n'a pas configuré. |
setTheme |
EmbedThemeSettings |
- | Clair, sombre, ou celui de la carte. |
setBackground |
{ background: "default" | "transparent" } |
- | Rend transparente la page derrière la carte, pour laisser apparaître votre propre arrière-plan. |
getLegend |
- | EmbedLegendEntry[] |
read La légende telle qu'elle est affichée, sous forme de données : construisez votre propre légende hors du cadre. |
getMapInfo |
- | EmbedMapInfo |
read Le descripteur de la carte : titre, description, mode des données, langues, et l'attribution que vous devez afficher si vous masquez nos contrôles. |
print |
- | - | Ouvre la boîte de dialogue d'impression du navigateur pour la carte. Refusée avec denied_capability lorsqu'une étiquette de confidentialité n'autorise pas l'exportation. |
exportImage |
EmbedExportImageArgs | void |
EmbedExportedImage |
read Une image PNG ou JPEG de la carte telle que le lecteur la voit, sous forme d'URL de données. Refusée avec denied_capability lorsqu'une étiquette de confidentialité n'autorise pas l'exportation. |
Commandes du menu contextuel
Ajouter vos propres actions à la fenêtre contextuelle d'entité. Groupe de stratégie : commands.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
addMenuCommand |
EmbedMenuCommand |
- | Ajoute votre propre action à la fenêtre contextuelle d'entité. Seuls un titre en texte brut et un id entrent dans le cadre, jamais de HTML ni de script. Un clic dessus déclenche menuCommandTriggered. |
removeMenuCommand |
{ id: string } |
- | Supprime une action de fenêtre contextuelle que vous avez ajoutée. |
getMenuCommands |
- | Array<{ id: string; title: string }> |
read Les actions de fenêtre contextuelle que vous avez ajoutées. |
Analyse
Exécuter le moteur d'analyse d'une couche, lorsque la carte en a un. Groupe de stratégie : analysis.
| Commande | Arguments | Se résout avec | Remarques |
|---|---|---|---|
getAnalysisOps |
- | EmbedAnalysisOp[] |
read Les opérations d'analyse auxquelles cette carte répond, chacune avec sa couche et des indications sur ses arguments. Vide lorsque la carte n'a pas de moteur d'analyse. |
runAnalysis |
{ op: string; layerId?: string; args?: Record<string, unknown> } |
EmbedAnalysisResult |
Exécute une opération d'analyse. Une seule s'exécute à la fois par couche ; jusqu'à 4 attendent (busy au-delà) ; 60 par minute et par session (budget_exceeded). Les résultats volumineux sont plafonnés et marqués truncated. |
getClock |
{ layerId?: string } | void |
EmbedClockState | null |
read L'horloge de simulation d'une couche d'analyse, ou null si elle n'en a pas. |
setClock |
{ simSeconds: number; layerId?: string } |
EmbedClockState |
Déplace l'horloge de simulation d'une couche d'analyse. |
Sur le handle uniquement
Ces membres s'exécutent dans votre page, pas dans la carte : ils n'apparaissent donc jamais dans capabilities.commands.
| Membre | Rôle |
|---|---|
ready |
Une promesse du descripteur de capacités. Rejetée avec denied_origin lorsque votre origine n'est pas autorisée. |
capabilities, protocol |
Ce à quoi répond cette visionneuse, une fois connu. |
on(name, handler) / off(name) |
S'abonner à un événement ; on renvoie une fonction de désabonnement. |
render(options) |
Termine une incorporation différée (deferRender: true). |
reload() |
Recharge le cadre. Les abonnements sont rétablis à l'ouverture de la nouvelle session. |
fullscreen() / exitFullscreen() |
Affiche le cadre en plein écran. À appeler depuis un gestionnaire de clic : les navigateurs exigent un geste de l'utilisateur sur votre page. |
destroy() |
Supprime le cadre et rejette toute commande en cours avec destroyed. |
iframe |
L'élément <iframe> monté. |
Événements
Rien n'est envoyé tant que vous ne vous êtes pas abonné (handle.on(name, handler) ou l'option events). Chaque événement porte un seq propre à la session ; un trou signifie qu'un événement a été perdu. Les événements d'état portent une reason ("user", "command", "bookmark", "tour", "scene" ou "load"), ce qui permet à une synchronisation bidirectionnelle d'ignorer son propre écho.
| Événement | Charge utile | Remarques |
|---|---|---|
loaded |
- | La carte s'est affichée (le onLoad de la v1). |
rendered |
{ durationMs: number } |
Première image au repos : les données propres à la carte sont à l'écran. durationMs est mesuré depuis le démarrage du cadre. |
viewChanged |
EmbedViewState & { reason: EmbedChangeReason } |
La caméra s'est stabilisée (ou, avec continuousView, s'est déplacée). Limité en fréquence ; la dernière valeur arrive toujours. |
visibilityChanged |
{ visibility: EmbedVisibility; reason: EmbedChangeReason } |
Une bascule de couche, de visuel ou de fond de carte a changé. |
filtersChanged |
{ filters: EmbedFilterValues; reason: EmbedChangeReason } |
Les valeurs de filtre de l'hôte ont changé. |
slicerChanged |
{ slicerId: string; state: EmbedSlicerState; reason: EmbedChangeReason } |
La sélection d'un segment a changé. |
selectionChanged |
{ selection: EmbedSelection; reason: EmbedChangeReason } |
La sélection a changé. |
featureClick |
EmbedFeatureClick | null |
Le lecteur a cliqué sur une entité (null = clic sur une zone vide de la carte). fields ne contient que les champs d'info-bulle de la couche, c'est-à-dire ce que le lecteur voit déjà. |
featureHover |
EmbedFeatureClick | null |
Le pointeur est entré sur une entité (null = il l'a quittée). Inactif tant que vous ne vous abonnez pas ; espacé d'au moins 100 ms, et une sortie n'est jamais retardée. |
linkClicked |
{ url: string; layerId?: string; featureKey?: string | number; buttonId?: string } |
Un lien hypertexte ou un bouton de lien a été cliqué, lorsque hyperlinkBehavior vaut raiseEvent ou navigateAndRaiseEvent. Gérez la navigation dans votre propre application. |
menuCommandTriggered |
{ commandId: string; layerId: string; featureKey: string | number; fields: Record<string, unknown> } |
Le lecteur a choisi une action de fenêtre contextuelle que vous avez ajoutée avec addMenuCommand. |
chartSelectionChanged |
{ chartId: string; datums: EmbedChartDatum[]; reason: EmbedChangeReason } |
Les points de données sélectionnés d'un graphique ont changé. |
bookmarkApplied |
{ bookmarkId: string } |
Un signet a été appliqué, par le lecteur, une visite ou vous. |
tourStateChanged |
{ tourId: string | null; state: "started" | "keyframe" | "ended" } |
Une visite a démarré, atteint une image clé ou s'est terminée. |
basemapChanged |
{ basemapId: string } |
Le fond de carte actif a changé. |
themeChanged |
{ mode: string } |
Le thème a changé. |
dataStateChanged |
{ state: "loading" | "ready" | "stale" | "error"; bindingIds?: string[]; reason?: string } |
Les données en direct ont commencé à se charger, sont prêtes, sont devenues obsolètes ou ont échoué. |
tokenExpiring |
{ expiresInMs: number } |
Le jeton d'intégration expire dans expiresInMs (déclenché 60 s à l'avance). Répondez avec setToken. |
error |
EmbedErrorInfo |
Une erreur de la visionneuse survenue après l'ouverture de la session. |
viewerResized |
{ width: number; height: number } |
Le conteneur de la carte a changé de taille. |
analysisResult |
EmbedAnalysisResult & { reason: EmbedChangeReason } |
Une opération d'analyse s'est terminée, qu'elle ait été déclenchée par un clic du lecteur ou par une commande de l'hôte. |
clockChanged |
EmbedClockState & { reason: EmbedChangeReason } |
L'horloge du moteur d'une couche d'analyse a avancé (limité en fréquence, EMBED_LIMITS.clockIntervalMs). |
Codes d'erreur
| Code | Signification |
|---|---|
unsupported_protocol |
La visionneuse et le SDK n'ont aucune version de protocole en commun. |
unsupported_command |
Cette version de la visionneuse, ce type d'incorporation ou cette carte ne répond pas à la commande. Vérifiez d'abord capabilities.commands. |
denied_capability |
L'auteur de la carte n'a pas activé le groupe de la commande (ou l'accès en lecture), ou une étiquette de confidentialité refuse une exportation. |
denied_origin |
L'origine de votre page ne figure pas parmi les origines autorisées de la carte : aucune session de contrôle n'a été ouverte. |
invalid_args |
La validation des arguments a échoué. message indique lequel. |
not_ready |
La partie de la carte dont la commande a besoin n'est pas devenue disponible en 10 secondes. Les commandes envoyées trop tôt sont mises en attente, pas refusées : cela signifie donc que la carte n'a pas réussi à démarrer. Consultez onError. |
unknown_id |
Un id de couche, de signet, de visite, de segment, de graphique, de fond de carte ou d'opération d'analyse que cette carte n'a pas. |
undeclared_filter |
setFilters a nommé un filtre que l'auteur n'a pas déclaré. detail.undeclared les liste. |
rate_limited |
Plus de 60 commandes en une seconde, ou la limite de débit du backend sur une actualisation des données. |
budget_exceeded |
Le budget d'analyse par session, ou le budget de requêtes de la publication, est épuisé. |
too_large |
Le message de commande a dépassé EMBED_LIMITS.maxCommandBytes. |
busy |
Trop de commandes d'analyse attendent déjà sur cette couche. |
data_error |
Le backend a fait échouer une requête de données. Indiquez le requestId dans votre demande au support. |
auth_required |
Le jeton d'intégration est absent, expiré ou refusé. Fournissez getToken ou appelez setToken. |
timeout |
La visionneuse n'a pas répondu dans le délai d'expiration de la commande (côté SDK). |
destroyed |
Le handle a été détruit, ou le cadre rechargé, pendant que la commande était en cours (côté SDK). |
internal |
La commande a levé une exception inattendue. detailedMessage en donne la cause. |
Limites
Fixées par la visionneuse (EMBED_LIMITS dans le SDK). Un hôte ne peut pas les relever et un auteur ne peut pas les abaisser.
| Limite | Valeur |
|---|---|
| Taille maximale d'un message de commande | 64 KB, au-delà refusé avec too_large |
| Taille maximale d'une charge utile d'événement | 32 KB, au-delà abandonnée (vous voyez un trou dans seq) |
Clés dans un seul highlight / selectByKey |
500 |
| Id dans un résultat d'analyse | 1000, puis truncated: true |
| Lignes dans un résultat d'analyse | 200, puis truncated: true |
| Commandes d'analyse par session | 60 par minute, puis budget_exceeded |
| Commandes d'analyse en attente sur une couche | 4, puis busy |
Espacement de featureHover |
100 ms (la dernière valeur arrive toujours) |
Espacement de clockChanged |
250 ms (la dernière valeur arrive toujours) |
| Commandes par seconde | 60, puis rate_limited |