使用 Kaleidr 底图
完成本指南后,您的网页将显示一张具有指定样式和相机视角的交互式 Kaleidr 底图,代码还能移动相机或切换样式。所有套餐(包括 Free)均可使用。您需要一个具备 maps 权限范围的可公开使用的密钥,新建密钥默认包含该权限。
开始之前
- 从 kaleidr.com/api-keys 获取可公开使用的密钥(
kld_pk_live_…)。参阅获取 API 密钥。 - 测试网页的来源(如
http://localhost:3000)必须在密钥的允许来源列表中。如果密钥未限制来源,则可以在任何网站使用。 - 通过 HTTP 提供网页的工具,例如
npx serve .。直接从磁盘打开的网页没有可用来源,因此会被限制来源的密钥拒绝。 - 如果网站设置了内容安全策略,请在
script-src中允许https://cdn.kaleidr.com,在connect-src中允许https://api.kaleidr.com,在frame-src中允许https://map-embed.kaleidr.com。参阅内容安全策略。
第 1 步:添加地图
<script src="https://cdn.kaleidr.com/embed/v1/kaleidr.js"></script>
<kaleidr-map product="tile"
publishable-key="kld_pk_live_…"
style-id="kaleidr-morning"
style="display:block; height:480px"></kaleidr-map>
**预期结果:**先出现“Loading map…”提示,随后显示明亮的底图。在 Network 面板中,向 https://api.kaleidr.com/inference-api/b2b/v1/sdk/sessions 发送的 POST 请求返回 200,随后向 https://map-embed.kaleidr.com/ 请求文档。iframe URL 仅包含样式 ID,不包含凭据:密钥只用于会话请求,会话令牌不会出现在 iframe URL 中。
元素必须设置高度,否则地图会采用固定的 500 像素高度。<kaleidr-map> 默认使用 display:block,因此高度会生效。仍建议显式写入 display:block,以兼容 Safari 16.4 之前的版本;旧版本中该元素以行内方式显示,并忽略 height。
第 2 步:选择样式
将 style-id 设置为以下通用样式之一:
style-id | 外观 |
|---|---|
kaleidr-morning | 明亮:白色地面、青色水域、白色道路。 |
kaleidr-afternoon | 中等色调的地面、绿色植被和灰色道路。 |
kaleidr-evening | 黄金时刻:暖沙色和橄榄色调。 |
kaleidr-night | 深海军蓝和炭灰色,主干道呈琥珀色。 |
kaleidr-plain | 白色画布,保留边界与地点标签;缩放级别达到 15 后显示 3D 建筑。 |
kaleidr-editorial | 不显示标签的午后配色,适合小型或装饰性地图。 |
<kaleidr-map product="tile" publishable-key="kld_pk_live_…"
style-id="kaleidr-night"
style="display:block; height:480px"></kaleidr-map>
**预期结果:**同一地图区域改用深色配色。
请始终传入 style-id。如果省略,将使用组织设置的默认底图;如果未设置默认底图,iframe 会显示“Couldn't find a map id in the URL.”。
样式 ID 必须完全匹配,不支持短别名。例如 night 不能代替 kaleidr-night。
第 3 步:设置相机
如果未指定相机,地图会使用样式的默认视角,通常显示整个世界。传入 center(先经度、后纬度)和 zoom 可定位到目标区域。pitch 控制倾斜角,bearing 控制旋转方向。
<kaleidr-map product="tile" publishable-key="kld_pk_live_…"
style-id="kaleidr-morning"
center="-0.1276,51.5072" zoom="12" pitch="45" bearing="-20"
style="display:block; height:480px"></kaleidr-map>
**预期结果:**倾斜、旋转的伦敦市中心地图。
如果没有同时传入 center,系统会忽略 zoom。 pitch 和 bearing 可以单独设置。
第 4 步:通过代码移动相机并切换样式
元素写法属于声明式集成。若要从 JavaScript 控制地图,请调用 Kaleidr.mount 并保留返回的控制句柄。
<div id="basemap" style="height:480px"></div>
<p>
<button id="paris">Fly to Paris</button>
<button id="night">Night</button>
<button id="day">Morning</button>
</p>
<script src="https://cdn.kaleidr.com/embed/v1/kaleidr.js"></script>
<script>
const handle = Kaleidr.mount('#basemap', {
product: 'tile',
publishableKey: 'kld_pk_live_…',
styleId: 'kaleidr-morning',
center: [-0.1276, 51.5072],
zoom: 11,
});
document.getElementById('paris').addEventListener('click', () => {
// duration is in milliseconds. Leave it out to jump with no animation.
handle.setCamera({ center: [2.3522, 48.8566], zoom: 12, duration: 1200 });
});
document.getElementById('night').addEventListener('click', () => {
handle.setStyle('kaleidr-night');
});
document.getElementById('day').addEventListener('click', () => {
handle.setStyle('kaleidr-morning');
});
</script>
**预期结果:**每个按钮都在原位置更新地图,iframe 不会重新加载,Network 面板也不会新增会话请求。
注意以下事项:
setCamera和setStyle属于控制句柄,而非元素本身。setStyle仅支持 Tile。对其他产品调用时只会打印警告,不执行操作。Kaleidr.mount返回后,可以随时调用句柄方法。若 iframe 中的地图尚未就绪,调用会按顺序排队,在地图就绪时应用,因此无需等待第 6 步的kaleidr-embed:ready消息。初始相机和样式应通过挂载选项设置。- 对已挂载的元素修改
center、zoom、pitch或bearing可以移动地图,但修改style-id不会产生效果。