编辑器
Editor 将 Kaleidr 地图编辑工具嵌入您的页面:包含 Kaleidr 底图,以及添加文字、图片、标记、弹出窗口和修改地图样式的工具。
开发前请了解功能范围
嵌入式编辑器在页面内运行,编辑结果只保留在页面内存中。 无法从嵌入式编辑器保存、导出或发布任何内容,发生更改时您的页面也不会收到回调。 页面重新加载或编辑器被销毁后,编辑结果便会丢失。不能使用该嵌入功能向用户提供地图发布流程。对于需要保存、共享和嵌入的地图,请在 Kaleidr Studio 中制作,并使用 Viewer 展示。
概览
| 问题 | 回答 |
|---|---|
| 需要什么? | 可发布密钥 (kld_pk_live_…),且必须具有 design 权限范围。新密钥默认包含该权限。 |
| 支持哪些套餐? | 所有套餐,包括 Free。 |
| 如何渲染? | 直接在您的页面中,而非 iframe 中。地图与编辑器面板都是文档中的元素。 |
| 编辑内容保存在哪里? | 不会保存。编辑结果只在页面内存中保留,直至页面重新加载或编辑器被销毁。 |
| 代码能读取编辑结果吗? | 不能。没有更改事件、导出功能,也不能访问地图对象。 |
| 每个页面可使用几个? | 一个。 |
最小挂载方式
<div id="editor" style="height:640px"></div>
<script src="https://cdn.kaleidr.com/embed/v1/kaleidr.js"></script>
<script>
const handle = Kaleidr.mount('#editor', {
product: 'editor',
publishableKey: 'kld_pk_live_…',
});
</script>
挂载目标元素必须设置高度。编辑器会填满该元素。
嵌入式编辑器包含哪些功能
编辑器的工具栏有八个入口:
- 文字: 在地图上放置标题和正文。
- 图片: 在地图上放置图片。
- 标记: 在指定位置放置标记。
- 弹出窗口: 与位置关联的弹出内容。
- 背景: 地图背后的背景。
- 图层: 底图自身的图层,包括标签、3D 建筑、光照和地形。
- 设计: 选择底图要素、要素类别或区域,重新设置样式。
- 图例: 标签和图例设置。
不包含哪些功能
嵌入版本不包含以下 Kaleidr Studio 功能:
- 数据标签页:无法上传数据集,因此针对已上传数据设置样式的功能也没有数据可以处理。
- Studio 的示例地图和样式类型设计目录。
- AI 面板。
- 3D 模型库。
- 分享和发布。
- 项目:没有已保存地图列表,也不能打开或保存项目。
- 登录:嵌入功能使用您的密钥,而非个人 Kaleidr 账户。
工作原理
- SDK 将您的可发布密钥交换为短期会话,检查密钥、其
design权限以及页面来源。 - 同时,SDK 加载编辑器资源包
editor.js,来源为https://cdn.kaleidr.com。该文件有数 MB,仅在挂载编辑器时加载。两个步骤都完成后,编辑器才启动。 - 编辑器在目标元素内创建地图,并从
https://tile.kaleidr.com加载底图。样式、精灵图和字体请求会携带您的可发布密钥,以便底图服务识别页面。会话令牌绝不会放进 URL。 - 编辑器面板会出现在地图上方、挂载目标元素内部。
由于所有内容都在您的页面中运行,内容安全策略必须允许比 Viewer 或 Tile 更多的资源。具体指令请参见内容安全策略。
您的页面可以执行的操作
- 选择底图: 使用
styleId,例如kaleidr-night。 - 设置初始镜头: 使用
center、zoom、pitch和bearing。 - 稍后移动镜头: 使用
handle.setCamera(...)。 - 匹配品牌风格: 使用
theme,这是包含 17 个命名键的对象,例如brandColor和fontPrimary。 - 移除编辑器: 使用
handle.destroy()。
限制
- 无法保存、导出或发布,也没有更改回调。
- 控制句柄不暴露地图对象。您无法添加自己的图层,也不能读取用户绘制的内容。
- 底图和主题在挂载时确定。若要修改其中之一,必须销毁并重新挂载编辑器,这会丢失编辑结果。
- 每个页面同时只能运行一个编辑器。
- 编辑器挂载期间,主题值会应用于整个文档,销毁后会恢复原值。
- 不向您的代码发出就绪或失败信号。错误会显示在浏览器控制台中。