kaleidr.js, der Loader
kaleidr.js ist das Einstiegsskript für jede Kaleidr-Einbettung. Es definiert das globale window.Kaleidr und das benutzerdefinierte Element <kaleidr-map>. Es ist klein und enthält weder Kartenbibliothek noch Produktcode. Beim Einbinden eines Produkts lädt es dessen Bundle vom selben CDN und übergibt die Optionen.
<script src="https://cdn.kaleidr.com/embed/v1/kaleidr.js"></script>
Es gibt kein npm-Paket. Das SDK wird ausschließlich über ein Skript-Tag geladen. Für React, Next.js, Vue und TypeScript siehe Framework-Integration.
Skript laden
| Frage | Antwort |
|---|---|
| Wohin gehört das Tag? | Überall. <kaleidr-map>-Elemente werden eingebunden, unabhängig davon, ob sie vor oder nach dem Tag stehen. |
Wann darf ich Kaleidr.mount aufrufen? | Nach der Ausführung des Skripts. Bei einem normalen <script src>-Tag kann jedes folgende Skript es aufrufen. |
Darf ich async oder defer verwenden? | Für Elemente ja. Bei Kaleidr.mount auf das load-Ereignis des Tags warten, da window.Kaleidr vorher noch nicht existiert. |
| Wie oft? | Einmal pro Seite. |
Darf ich integrity hinzufügen? | Nein. Die Datei wird am selben Pfad aktualisiert; ein fester Hash wäre beim nächsten Release ungültig. Siehe CDN-Versionierung. |
| Läuft es auf dem Server? | Nein. Es benötigt window und document. In serverseitig gerenderten Apps nur im Browser laden. |
Skript mit async laden und nach dem Laden einbinden:
<div id="map" style="height:480px"></div>
<script>
const s = document.createElement('script');
s.src = 'https://cdn.kaleidr.com/embed/v1/kaleidr.js';
s.async = true;
s.onload = () => {
Kaleidr.mount('#map', { product: 'viewer', shareId: 'YOUR_MAP_ID' });
};
document.head.appendChild(s);
</script>
window.Kaleidr
| Mitglied | Beschreibung |
|---|---|
Kaleidr.mount(target, options) | Bindet ein Produkt in ein Element ein und liefert ein Handle zurück. |
Kaleidr.init() | Initialisiert vorhandene <kaleidr-map>-Elemente im Dokument. Selten nötig. |
Kaleidr.enable(on) | Aktiviert oder deaktiviert nachfolgende Einbindungen. |
Kaleidr.version | Diagnose-Versionszeichenfolge des Loaders. |
Kaleidr.mount(target, options)
const handle = Kaleidr.mount('#chat', {
product: 'chat',
publishableKey: 'kld_pk_live_…',
map: myMap,
contained: true,
});
| Parameter | Typ | Beschreibung |
|---|---|---|
target | CSS-Selektor oder HTMLElement | Zielelement. Ein Selektor wird einmalig mit document.querySelector aufgelöst. |
options | Objekt | Erforderlich. Siehe Optionen. |
Gibt ein Handle zurück.
Verhalten:
- Sofortige Rückgabe. Sitzungsaustausch und Bundle-Laden erfolgen im Hintergrund. Zwischenzeitliche Handle-Aufrufe werden in Reihenfolge gespeichert und bei Bereitschaft angewendet. Bei Viewer und Tile ist das der Moment, in dem die Karte im iframe ihre Bereitschaft meldet:
setCameradirekt nachmountwirkt also. - Fehlgeschlagene Einbindungen werfen keine Ausnahme. Fehlendes Ziel, nicht geladenes Bundle, abgelehnte Sitzung oder ungültige ID erzeugen einen Konsolenfehler mit
[kaleidr:<product>]. Das zurückgegebene Handle bleibt funktionslos. Einzige Ausnahme:Kaleidr.mount('#map')ohne Optionsobjekt wirft einenTypeError. - Keine Rückmeldung an Ihren Code. Es gibt weder ein Promise noch einen Callback. Siehe Erfolg einer Einbindung erkennen.
- Eine Einbindung pro Ziel. Vor einer erneuten Einbindung zunächst
handle.destroy()am bisherigen Handle aufrufen. Auch während des Ladens ist Zerstören und Neueinbinden im selben Element sicher; das alte Mount beeinflusst das neue nicht.
Optionen
| Option | Typ | Standard | Produkte | Beschreibung |
|---|---|---|---|---|
product | 'chat' | 'viewer' | 'editor' | 'tile' | keiner; erforderlich | alle | Einzubindendes Produkt. |
publishableKey | Zeichenfolge | keiner | chat, editor, tile | Veröffentlichbarer Schlüssel kld_pk_…. Das SDK tauscht ihn gegen eine kurzlebige Sitzung und übergibt nur diese. Nicht an Viewer übergeben. Ein Serverschlüssel (kld_sk_…) wird vor der Anfrage abgelehnt. |
shareId | Zeichenfolge | keiner | viewer, chat | Viewer: ID der veröffentlichten Karte. Chat ohne Schlüssel: veröffentlichte Karte, deren Eigentümer die Chat-Nutzung ermöglicht. |
mapId | Zeichenfolge | keiner | viewer | Alias für shareId, falls shareId fehlt. |
styleId | Zeichenfolge | Standard-Basiskarte der Organisation | tile, editor | Stil-ID wie kaleidr-morning oder vollständige Stil-URL. |
map | laufende Karteninstanz | keiner | chat | Karte, die der Assistent steuert: Mapbox GL JS, MapLibre GL JS, Google Maps oder Leaflet. Siehe Unterstützte Karten. Für reinen Chat weglassen. |
mapTarget | CSS-Selektor | keiner | chat | Viewer- oder Tile-Element <kaleidr-map>, das der Assistent statt map steuert. |
contained | Boolean | false | chat | Fixiert das Panel innerhalb des positionierten und bemessenen Zielelements. Standardmäßig schwebt es oben links im Ansichtsfenster. |
lang | Zeichenfolge | gültiges <html lang> der Seite, sonst Englisch | chat | Antwortsprache als BCP-47-Tag wie en, ko oder pt-BR. Siehe Chat-Sprache. |
title | Zeichenfolge | eigener Paneltitel | chat | Überschrift des Panels; Attribut am Element ist chat-title. |
placeholder | Zeichenfolge | eigener Platzhalter des Panels | chat | Platzhalter des Eingabefelds. |
center | [longitude, latitude] | Produktstandard | viewer, tile, editor | Anfangsmittelpunkt. |
zoom | Zahl | Produktstandard | viewer, tile, editor | Anfangszoom; bei Viewer und Tile nur zusammen mit center. |
pitch | Zahl | Produktstandard | viewer, tile, editor | Anfangsneigung in Grad. |
bearing | Zahl | Produktstandard | viewer, tile, editor | Anfangsdrehung in Grad. |
theme | Objekt oder JSON-Objektzeichenfolge | keiner | chat, editor | Chat: benutzerdefinierte CSS-Eigenschaften, z. B. { '--highlight-color': '#0b5fff' }. Editor: 17 Theme-Schlüssel. Ungültige JSON-Zeichenfolgen werden mit Warnung ignoriert. |
enabled | Boolean | keiner | alle | Steuerung der Aktivierungssperre pro Einbindung. Nur beim Einbinden gelesen. |
base | URL | https://cdn.kaleidr.com | alle | Ursprung für Produkt-Bundles. Nur der Ursprung zählt; Bundles werden dort unter /embed/v1/ geladen. Akzeptiert werden nur die bei Base-Überschreibung genannten Ursprünge; sonst Warnung und Ignorieren. |
viewerBase | URL | https://map-embed.kaleidr.com | viewer, tile | Ursprung des iframe; nur dieser wird verwendet. |
apiBase | URL | https://api.kaleidr.com/inference-api | chat, editor, tile | Ziel des Sitzungsaustauschs und der Produktanfragen. Muss /inference-api enthalten; ein reiner Ursprung ergibt 404. |
tileBase | URL | https://tile.kaleidr.com | editor | Host zum Auflösen der Stil-IDs. |
Hinweise:
apiKeyist ein veralteter Alias fürpublishableKey.- Die vier
…Base-Optionen dienen Tests anderer Deployments und sind in Produktion unnötig.baseverlagert nur Bundles; Kartenseite, API und Basiskartenhost bleiben bei Kaleidr, sofern nicht separat geändert. lang,titleundplaceholderwerden beim Einbinden gelesen. Für Änderungen zerstören und erneut einbinden.- Nicht verwendete Produktoptionen werden ohne Hinweis ignoriert.
Base-Überschreibung
base (Option und Attribut) sowie die Seitenvariable window.__KALEIDR_EMBED_BASE__ legen den Ursprung der Bundles fest. Eine Überschreibung wird ausschließlich für folgende Ursprünge berücksichtigt:
| Zulässiger Ursprung | Beispiel |
|---|---|
| Kaleidr-CDN | https://cdn.kaleidr.com |
Ursprung, von dem kaleidr.js geladen wurde | kaleidr.js kommt von https://static.example.com, und base ist https://static.example.com. |
| Ursprung der Seite selbst | Die Seite liegt unter https://www.example.com/…, und base ist https://www.example.com. |
Andere Werte werden ignoriert. Das Produkt wird trotzdem eingebunden, Bundles kommen vom Standard-CDN und die Konsole zeigt eine Warnung:
[kaleidr] base "https://other.example.net" is IGNORED — bundles load from https://cdn.kaleidr.com. A base must be the Kaleidr CDN, the origin kaleidr.js was loaded from, or this page's own origin.
Die Seitenvariable muss eine Zeichenfolge sein; andere Typen werden stillschweigend übersprungen. Self-Hosting funktioniert nach dieser Regel, wenn Loader und Bundles denselben Ursprung haben.
Standard-Kameraeinstellungen der Produkte:
| Produkt | Standardkamera |
|---|---|
| viewer | Vom Kartenautor gespeicherte Ansicht. |
| tile | Stil-Standardansicht, sonst die ganze Welt. |
| editor | Mittelpunkt [0, 0], Zoom 2, Neigung 0, Drehung 0. |
| chat | Nicht zutreffend: Chat erstellt keine Karte. |
Details stehen in den Produktreferenzen: Chat, Viewer, Tile, Editor.
Das Handle
Kaleidr.mount gibt für alle Produkte dieselbe Handle-Struktur zurück.
interface KaleidrHandle {
readonly product: 'chat' | 'viewer' | 'editor' | 'tile';
setCamera(camera: {
center?: [number, number]; // [longitude, latitude]
zoom?: number;
pitch?: number;
bearing?: number;
duration?: number; // milliseconds
}): void;
setTheme(theme: string | Record<string, string>): void;
setStyle(style: string): void;
destroy(): void;
}
Jede Methode existiert auf jedem Handle. Ob sie wirkt, hängt vom Produkt ab:
| Methode | chat | viewer | editor | tile |
|---|---|---|---|---|
setCamera(camera) | Warnung | ja | ja | ja |
setTheme(theme) | ja | Warnung | Warnung | Warnung |
setStyle(style) | Warnung | Warnung | Warnung | ja |
destroy() | ja | ja | ja | ja |
„Warnung“ heißt: Der Aufruf bewirkt nichts und die Konsole meldet es.
[kaleidr] setCamera() is not supported on product "chat" — the call is a no-op. See the handle matrix at https://docs.kaleidr.com/sdk/kaleidr-map-element#handle-matrix.
Dies gehört zum Vertrag /embed/v1: Nicht unterstützte Methoden werfen nie eine Ausnahme.
Hinweise zu Methoden:
setCamera: Nicht angegebene Felder behalten ihren Wert.durationanimiert die Bewegung; fehlt es oder ist0, springt die Karte sofort. In Chat nicht unterstützt, da Chat keine Karte besitzt.setCameraist bei Chat nicht verfügbar; der Assistent bewegt die angehängte Karte dennoch beim Antworten; für eigene Bewegungen die API Ihrer Kartenbibliothek verwenden.setTheme: nur Chat. Nimmt CSS-Eigenschaften als Objekt oder JSON-Objektzeichenfolge an.setStyle: nur Tile. Akzeptiert Stil-ID oder Stil-URL.destroy: entfernt die Einbindung, stoppt Sitzungserneuerungen und verwirft wartende Aufrufe. Mehrfache Aufrufe sind harmlos. Ein zerstörtes Handle ist nicht wiederverwendbar; erneut einbinden.
Handle-Methoden lassen sich unmittelbar nach mount aufrufen. Bei Viewer und Tile werden frühe setCamera-Aufrufe (bei Tile auch setStyle) in Reihenfolge gespeichert, bis die Karte im iframe mit kaleidr-embed:ready oder einer ersten Kameraposition Bereitschaft meldet. Die letzten 256 Aufrufe bleiben erhalten. Kommt innerhalb einer begrenzten Frist, normalerweise 10 Sekunden ab Frame-Laden, keine Bereitschaftsmeldung, werden sie trotzdem gesendet und eine Warnung ausgegeben:
[kaleidr] the map frame has not reported ready — calls held for it are sent now, and may reach no map. The frame may be showing an error (an unpublished map, a blocked request).
Die Wartezeit beginnt erst beim Laden des Frames. Ein noch nicht geladenes Frame unterhalb des sichtbaren Bereichs behält seine Aufrufe. Man muss kaleidr-embed:ready nicht abwarten. Diese Meldung und kaleidr-embed:error zeigen weiterhin Erfolg oder Fehler an: siehe Viewer-Meldungen.
Das Handle bietet weder ready-Promise noch on()-Methode oder map-/iframe-Mitglied.
Kaleidr.init()
Initialisiert alle derzeit im Dokument vorhandenen <kaleidr-map>-Elemente. Der Loader ruft dies selbst auf; später eingefügte Elemente starten automatisch. Daher selten nötig. Wiederholte Aufrufe sind harmlos.
Aktivierungssperre
Einbettungen sind standardmäßig aktiv. Bei deaktivierter Sperre lädt und sendet Kaleidr.mount nichts und gibt ein funktionsloses Handle zurück. So kann man vor Zustimmung von Besuchern warten oder Einbettungen deaktivieren, ohne HTML zu entfernen.
Die drei Schalter
| Schalter | Geltungsbereich | Festlegen mit |
|---|---|---|
| Seitenflag | Alle Einbindungen auf der Seite | window.__KALEIDR_EMBED_ENABLED__ = false, vor den zurückzuhaltenden Einbindungen setzen |
Kaleidr.enable() | Alle nachfolgenden Einbindungen | Kaleidr.enable(false) |
| Pro Einbindung | Eine Einbindung | Option enabled: false oder Attribut flag="false" |
Entscheidung beim Einbinden
Bei jeder Einbindung liest das SDK alle drei Schalter:
- Ist irgendein Schalter ausdrücklich
false, wird die Einbindung zurückgehalten. - Sonst startet sie, wenn mindestens einer ausdrücklich
trueist. - Andernfalls gilt der aktivierte Standard.
Daraus folgen drei wichtige Regeln:
- Ein
falsekann nur durch denselben Schalter aufgehoben werden.Kaleidr.enable(true)hebt weder einenabled: falsenoch ein Seitenflag mitfalseauf. Schalter überstimmen sich nicht gegenseitig. - Die Prüfung erfolgt nur beim Einbinden. Eine Freigabe startet zuvor zurückgehaltene Einbindungen nicht automatisch, und ein späteres Deaktivieren entfernt laufende Einbindungen nicht. Danach erneut
Kaleidr.mountaufrufen oder das Element entfernen und wieder einsetzen. - Das Seitenflag wird bei jeder Einbindung neu gelesen, nicht nur beim Laden des Skripts. Spätere Änderungen betreffen die nächste Einbindung.
| Zurückhaltung durch | So freigeben |
|---|---|
window.__KALEIDR_EMBED_ENABLED__ = false | Auf true setzen oder löschen. |
Kaleidr.enable(false) | Kaleidr.enable(true) aufrufen, oder mit Kaleidr.enable(null) auf Standard zurücksetzen. |
enabled: false oder flag="false" | Ohne diese Einstellung erneut einbinden. Änderung von flag am eingebundenen Element wirkt nicht. |
Bei zurückgehaltener Einbindung benennt eine Konsolenwarnung den verantwortlichen Schalter:
[kaleidr] embed is disabled — window.__KALEIDR_EMBED_ENABLED__ is false. Reassigning it releases that lever — Kaleidr.enable() cannot.
Zulässige Werte
Die Schalter prüfen Boolean-Werte streng, damit eine zufällige Zeichenfolge Einbettungen nicht versehentlich aktiviert.
| Schalter | Gilt als true | Gilt als false | Mit Warnung ignoriert |
|---|---|---|---|
window.__KALEIDR_EMBED_ENABLED__ | true | false | Alles außer echten Boolean-Werten, auch die Zeichenfolgen "true" und "false" |
Kaleidr.enable(x) | kein Argument, true, "true", "1", "yes", "on" | false, 0, "", "false", "0", "no", "off" | Andere Zeichenfolgen, undefined, Objekte, Funktionen |
Option enabled | true, "true", "1", "yes", "on" | false, 0, "", "false", "0", "no", "off" | Andere Zeichenfolgen, Objekte, Funktionen |
Attribut flag | flag ohne Wert, "true", "1", "yes", "on" | "false", "0", "no", "off" | Alle anderen Werte |
Groß-/Kleinschreibung und äußere Leerzeichen spielen keine Rolle. Bei gespeicherten Werten sind zwei Details wichtig:
Kaleidr.enable(null)setzt den Schalter auf Standard zurück; es bedeutet nicht „keine Vorgabe“.localStorage.getItem(key)liefertnull, wenn nichts gespeichert wurde – auch vor einer Zustimmung. Gespeicherte Werte daher niemals direkt weitergeben, sondern prüfen:Kaleidr.enable(stored === 'true').- Ein ignorierter Wert ändert den bisherigen Schalterzustand nicht, aktiviert und deaktiviert also nichts.
Beispiel: Einbettungen bis zur Zustimmung zurückhalten
Diese Seite hält alle Einbettungen über das Seitenflag zurück, weil Elemente starten, sobald der Loader läuft. Bei Zustimmung wird derselbe Schalter freigegeben und die Elemente werden erneut eingesetzt, damit sie starten.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Consent-gated map</title>
<script>
// A real boolean, set before the loader. A stored string is compared, never passed through.
window.__KALEIDR_EMBED_ENABLED__ =
localStorage.getItem('embeds-consent') === 'true';
</script>
<script src="https://cdn.kaleidr.com/embed/v1/kaleidr.js"></script>
</head>
<body>
<div id="banner">
This page shows an interactive map from Kaleidr.
<button id="accept">Show the map</button>
</div>
<kaleidr-map product="viewer" share-id="YOUR_MAP_ID"
style="display:block; height:480px"></kaleidr-map>
<script>
const banner = document.getElementById('banner');
if (window.__KALEIDR_EMBED_ENABLED__) banner.hidden = true;
document.getElementById('accept').addEventListener('click', () => {
localStorage.setItem('embeds-consent', 'true');
banner.hidden = true;
// 1. Release the lever that held the embeds.
window.__KALEIDR_EMBED_ENABLED__ = true;
// 2. A held element does not mount by itself. Re-insert each one.
document.querySelectorAll('kaleidr-map').forEach((el) => {
const parent = el.parentNode;
const next = el.nextSibling;
el.remove();
parent.insertBefore(el, next);
});
});
</script>
</body>
</html>
Vor der Zustimmung zeigt der Netzwerk-Tab nur kaleidr.js, aber weder Produkt-Bundle noch Sitzungsanfrage oder iframe von Kaleidr.
Bei Einbindung aus JavaScript brauchen Sie die Sperre nicht: Kaleidr.mount einfach erst nach Zustimmung aufrufen. Für HTML-Elemente, Tag-Manager oder fremden Code, der mount selbst aufruft, ermöglicht die Sperre einen zentralen Schalter:
Kaleidr.enable(false); // hold every later mount
// …
Kaleidr.enable(true); // release it
const handle = Kaleidr.mount('#map', { product: 'viewer', shareId: 'YOUR_MAP_ID' });
Globale Seitenvariablen
| Global | Typ | Gelesen | Zweck |
|---|---|---|---|
window.__KALEIDR_EMBED_ENABLED__ | Boolean | Bei jeder Einbindung | Seitenflag der Aktivierungssperre. |
window.__KALEIDR_EMBED_BASE__ | URL-Zeichenfolge | Bei jeder Einbindung | Bundle-Ursprung beim Self-Hosting. Nur der Ursprung wird genutzt und muss von der Base-Überschreibung zugelassen sein. Siehe CDN-Versionierung. |
Erfolg einer Einbindung erkennen
Das SDK bietet Ihrem Code kein Signal für Erfolg oder Fehlschlag. Verfügbar sind:
| Produkt | Geladen | Fehlgeschlagen |
|---|---|---|
| viewer | iframe sendet kaleidr-embed:ready. | iframe sendet kaleidr-embed:error oder Konsole meldet [kaleidr:viewer]. |
| tile | iframe sendet kaleidr-embed:ready. | Abgelehnte Sitzung nur in der Konsole; Zeichenfehler sendet kaleidr-embed:error. |
| chat | Kein Signal, Panel erscheint auf der Seite. | Nur Konsole. |
| editor | Kein Signal, Editor erscheint auf der Seite. | Nur Konsole. |
Beide Meldungen sind unter Viewer-Meldungen dokumentiert.
Wenn eine Einbindung fehlschlägt
| Ursache | Sichtbares Ergebnis | Anfrage gesendet? |
|---|---|---|
| Selektor findet kein Ziel | [kaleidr:<product>] mount target not found: <selector> | Nein |
Element hat kein gültiges product | [kaleidr] <kaleidr-map> requires product="chat|viewer|editor|tile" | Nein |
| Serverschlüssel wurde übergeben | [kaleidr:<product>] Kaleidr: a server key (kld_sk_…) must never be used in the browser — it is a standing secret. Use your publishable key (kld_pk_…) here and keep the server key server-side. | Nein |
| Unbekannter/widerrufener Schlüssel oder unzulässiger Ursprung | Browser-CORS-Fehler für sessions, danach [kaleidr:<product>]-Abruffehler; nichts wird angezeigt. | Ja |
| Fehlender Scope, Produktsperre oder unzureichender Tarif | [kaleidr:<product>] kaleidr session exchange failed (403). Nichts wird angezeigt. | Ja |
| Kartenlade-Kontingent verbraucht (tile) oder zu viele Sitzungsanfragen | [kaleidr:<product>] kaleidr session exchange failed (429). Nichts wird angezeigt. | Ja |
| Produkt-Bundle lädt nicht | [kaleidr:<product>] [kaleidr] failed to load https://cdn.kaleidr.com/embed/v1/<product>.js | n. z. |
| Viewer ohne/mit ungültiger ID | [kaleidr:viewer] Kaleidr map: invalid id "" — must match ^[A-Za-z0-9._~-]{1,100}$. | Nein |
| Editor ohne Schlüssel | [kaleidr:editor] [editor-embed] attach() requires an { apiKey } | Nein |
Chat ohne Schlüssel und shareId | Panel erscheint, aber alle Fragen schlagen fehl. | Nicht beim Einbinden |
| Aktivierungssperre ist aus | [kaleidr] embed is disabled — … | Nein |
Das SDK zeigt nie den Servergrund. Bei abgelehnter Sitzung wird nur der HTTP-Status protokolliert. Der Grund steht im Antwortkörper: Bei 403/404 im Feld detail, etwa {"detail":"insufficient_scope"}. Bei 429 im Feld error, mit erläuterndem Satz in detail; map_load_quota_exceeded steht ausnahmsweise in detail. Im Netzwerk-Tab die Anfrage sessions und ihre Antwort prüfen. Verbirgt CORS den Inhalt, die Anfrage im Terminal wiederholen:
curl -i https://api.kaleidr.com/inference-api/b2b/v1/sdk/sessions \
-H "x-api-key: kld_pk_live_…" \
-H "Origin: https://www.example.com" \
-H "content-type: application/json" \
-d '{"product":"chat"}'
HTTP/2 403
content-type: application/json
{"detail":"origin_not_allowed"}
Den Ursprung der betroffenen Seite verwenden. Beim Testen "chat", "editor" oder "viewer" angeben: Eine erfolgreiche "tile"-Anfrage zählt einen Kartenaufruf. Sämtliche Codes stehen unter Fehler.
Ein fehlgeschlagener erster Sitzungsaustausch wird für diese Einbindung nicht erneut versucht. Ursache beheben und neu einbinden.
Sitzungsaustausch im Überblick
Für Chat, Editor und Tile verwendet das SDK den veröffentlichbaren Schlüssel nie direkt bei der Laufzeit-API; er wird zuerst gegen eine Sitzung getauscht.
- Beim Einbinden sendet das SDK
POST https://api.kaleidr.com/inference-api/b2b/v1/sdk/sessionsmit Headerx-api-key: <your publishable key>und Körper{"product":"<product>"}. Der Browser ergänztOrigin. - Kaleidr prüft der Reihe nach: veröffentlichbarer Schlüssel, vorhandener Ursprung, ggf. zulässiger Ursprung, Produktzulassung für Schlüssel und Tarif sowie nötiger Scope:
aifür Chat,designfür Editor,mapsfür Tile, keiner für Viewer. - Die Antwort lautet
{"session_token": "…", "expires_in": 900, "product": "…", "basemap_style_id": …}.basemap_style_idbezeichnet die Organisations-Standardbasiskarte odernull. - Das Produkt verwendet das auf Ursprung und Produkt beschränkte Sitzungstoken für Anfragen.
- Das SDK erneuert 90 Sekunden vor Ablauf und nach Rückkehr eines Hintergrund-Tabs mit fast abgelaufener Sitzung. Bei Fehlschlag wird alle 30 Sekunden erneut versucht, solange die Einbindung besteht.
handle.destroy()beendet die Erneuerungen.
Viewer braucht keine Sitzung. Chat mit shareId ohne Schlüssel bezieht sie von der veröffentlichten Karte. Siehe Chat auf veröffentlichter Karte.
Anfrage und Antwort stehen unter Endpunkte. Schlüsselarten, Sitzungen und die Grenzen der Herkunfts-Whitelist erläutert das Sicherheitsmodell.
Weitere Konsolenmeldungen
| Meldung | Bedeutung |
|---|---|
[kaleidr] <method>() is not supported on product "<product>" — the call is a no-op. … | Sie haben eine für dieses Produkt nicht unterstützte Handle-Methode aufgerufen. |
[kaleidr] <method>() IS supported on product "<product>", but this mount did not expose it, so the call did nothing. … | Das zwischengespeicherte Produkt-Bundle ist älter als der Loader; ohne Cache neu laden. |
[kaleidr] the map frame has not reported ready — calls held for it are sent now, and may reach no map. … | Viewer/Tile meldete sich nicht rechtzeitig bereit; gespeicherte setCamera-/setStyle-Aufrufe wurden trotzdem gesendet. Siehe Handle; ggf. kaleidr-embed:error beachten. |
[kaleidr] theme must be an object of CSS tokens, not an array; ignored. | theme war ein Array. |
[kaleidr] theme string must be JSON …; named string themes are not supported. Ignored. | theme war eine Zeichenfolge ohne einleitendes {. |
[kaleidr] theme JSON parse failed (…); ignored. | theme enthielt fehlerhaftes JSON. |
[kaleidr] <attribute>="<value>" is not a recognized boolean — the attribute is IGNORED. … | flag oder contained hatte einen ungültigen Wert. Die Meldung nennt flag="…" bzw. contained="…". |
[kaleidr] base "<value>" is IGNORED — bundles load from <origin>. … | base oder window.__KALEIDR_EMBED_BASE__ nannte einen unzulässigen Ursprung gemäß Base-Überschreibung; das Standard-CDN wird genutzt. |
[kaleidr] window.__KALEIDR_EMBED_ENABLED__ must be a boolean; got <type> (…). … | Seitenflag hatte keinen echten Boolean-Wert und wurde ignoriert. |
[kaleidr] Kaleidr.enable(): "<value>" is not a recognized boolean — the value is IGNORED. … | Kaleidr.enable bekam einen ungültigen Wert. |
[kaleidr] enabled: "<value>" is not a recognized boolean — the value is IGNORED. … | Die Option enabled bekam einen ungültigen Wert. |
[kaleidr] Kaleidr.enable(undefined) is IGNORED and leaves the gate exactly as it was. … | Kaleidr.enable wurde mit undefined aufgerufen. |
[kaleidr] Kaleidr.enable(null) RESET the gate to the build default, releasing the <value> set earlier. … | Kaleidr.enable(null) hob eine frühere Schalter-Einstellung auf. |
Nicht verfügbar
- npm-Paket, ES-Modul-Build oder mitgelieferte Typdefinitionen. Kopierbare Deklaration in Framework-Integration.
- Natives SDK für iOS, Android, React Native oder Flutter.
ready-Promise, Ereignisse oder Callbacks am Handle.- JavaScript-Client für API-Aufrufe ohne Einbindung: Stattdessen die Server-API im Backend verwenden.