<kaleidr-map> — 元素
声明式 façade。放置元素并设置属性;它会在 连接时挂载,并在移除时卸载。
<kaleidr-map product="viewer" share-id="abcd1234" style="height:480px"></kaleidr-map>
属性表
已根据 kaleidr-sdk/packages/embed/src/element.ts 验证。属性名称
采用 kebab-case;kaleidr.js 中对应的 Kaleidr.mount(...) 选项名称
采用 camelCase。
| 属性 | 产品 | 必填 | 默认值 | 含义 |
|---|---|---|---|---|
product | 全部 | 是 | — | chat | viewer | editor | tile |
publishable-key | chat, editor, tile | 是* | — | kld_pk_live_…;运行时交换为 session token |
api-key | chat, editor, tile | — | — | 已弃用别名;也接受旧版 kld_live_… |
share-id | viewer | 是 | — | 已发布地图 / share id;省略时会在 bundle 加载时抛出错误 |
map-id | viewer | — | — | share-id 的别名 |
style-id | tile, editor | 可选 | tile:viewer 默认值;editor:组织默认值 → kaleidr-morning | 底图 style id,或(editor)完整 style URL |
map-target | chat | 可选 | — | host map element 的 CSS selector |
contained | chat | 可选 | false | 将面板固定在 mount element 内,而不是浮动在 document.body 上 |
center | viewer, tile, editor | 可选 | — | lon,lat |
zoom | viewer, tile, editor | 可选 | editor: 2 | 初始 zoom |
pitch | viewer, tile, editor | 可选 | 0 | 初始 pitch |
bearing | viewer, tile, editor | 可选 | 0 | 初始 bearing |
theme | chat, editor | 可选 | — | JSON CSS-token object string |
doorway | 全部 | 可选 | 产品默认值 | iframe | attach 覆盖 |
base | 全部 | 可选 | https://cdn.kaleidr.com | 用于延迟加载 bundle(/embed/v1/*.js)的 CDN origin |
viewer-base | viewer, tile | 可选 | https://map-embed.kaleidr.com | iframe 加载的 origin — 与 bundle CDN 不同 |
api-base | chat, editor, tile | 可选 | https://api.kaleidr.com/inference-api | 必须包含 /inference-api。 像 https://api.kaleidr.com 这样的 bare origin 会在会话交换时返回 404。适用于所有执行会话交换的产品(chat、editor、tile)。 |
tile-base | editor | 可选 | https://tile.kaleidr.com | 用于解析目录中 style-id 值的 Tile CDN |
flag | 全部 | 可选 | — | 每个元素的 dormancy 覆盖设置 |
* 授权/计费使用时必填。Viewer 不需要密钥;向 Viewer embed
传入密钥会以 product_not_allowed 拒绝。
请为元素设置高度(内联 style 或 CSS)。每个产品都会填满其
容器;位于未设置尺寸容器中的 iframe 产品会回退为
固定 500px 高度,以保持可见。
Handle matrix
行为与 /embed/v1/ 当前发布版本一致。不支持的组合不会抛出错误 —
SDK 会记录 [kaleidr] 警告并返回。这是 v1 主版本别名的 contract;
移除可调用的方法会构成破坏性行为更改。
| 方法 | chat | viewer | editor | tile |
|---|---|---|---|---|
destroy() | 是 | 是 | 是 | 是 |
setCamera(camera) | no-op | 是 | 是 | 是 |
setTheme(theme) | 是(实时) | n/a | 仅挂载时 | n/a |
setStyle(styleId) | n/a | n/a | n/a | 仅在 tile 中公开 |
Chat 不会控制地图相机 — 在 Kaleidr.mount(...) 之后请使用
您自己的地图实例的相机 API。Editor 的实时 setTheme 将在后续 SDK
版本中提供;挂载时的 theme 已经可用。
实时更新
center、zoom、pitch 和 bearing 会被监听,并在不重新挂载的情况下重新调整 viewer、
editor 和 tile 的视野。theme 更改会实时更新 chat;
editor theme 仍然仅在挂载时应用。
Chat + map-target
Chat 连接到您的实时地图,而字符串属性无法携带 map instance。可以通过以下两种 方式提供:
- Imperative(推荐):
Kaleidr.mount(el, { product: 'chat', publishableKey, map, contained: true }). - Declarative: 将 map instance 存储在 host element 上:
hostEl.__kaleidrMap__ = map,然后设置map-target="#host"。
没有地图时,chat 会以 headless 模式运行(无地图交互)。