跳到主要内容

<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-keychat, editor, tile是*kld_pk_live_…;运行时交换为 session token
api-keychat, editor, tile已弃用别名;也接受旧版 kld_live_…
share-idviewer已发布地图 / share id;省略时会在 bundle 加载时抛出错误
map-idviewershare-id 的别名
style-idtile, editor可选tile:viewer 默认值;editor:组织默认值 → kaleidr-morning底图 style id,或(editor)完整 style URL
map-targetchat可选host map element 的 CSS selector
containedchat可选false将面板固定在 mount element 内,而不是浮动在 document.body
centerviewer, tile, editor可选lon,lat
zoomviewer, tile, editor可选editor: 2初始 zoom
pitchviewer, tile, editor可选0初始 pitch
bearingviewer, tile, editor可选0初始 bearing
themechat, editor可选JSON CSS-token object string
doorway全部可选产品默认值iframe | attach 覆盖
base全部可选https://cdn.kaleidr.com用于延迟加载 bundle(/embed/v1/*.js)的 CDN origin
viewer-baseviewer, tile可选https://map-embed.kaleidr.comiframe 加载的 origin — 与 bundle CDN 不同
api-basechat, editor, tile可选https://api.kaleidr.com/inference-api必须包含 /inference-apihttps://api.kaleidr.com 这样的 bare origin 会在会话交换时返回 404。适用于所有执行会话交换的产品(chat、editor、tile)。
tile-baseeditor可选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; 移除可调用的方法会构成破坏性行为更改。

方法chatviewereditortile
destroy()
setCamera(camera)no-op
setTheme(theme)是(实时)n/a仅挂载时n/a
setStyle(styleId)n/an/an/a仅在 tile 中公开

Chat 不会控制地图相机 — 在 Kaleidr.mount(...) 之后请使用 您自己的地图实例的相机 API。Editor 的实时 setTheme 将在后续 SDK 版本中提供;挂载时的 theme 已经可用。

实时更新

centerzoompitchbearing 会被监听,并在不重新挂载的情况下重新调整 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 模式运行(无地图交互)。