使用 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不會產生效果。