跳到主要内容

编辑器

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 账户。

工作原理​

  1. SDK 将您的可发布密钥交换为短期会话,检查密钥、其 design 权限以及页面来源。
  2. 同时,SDK 加载编辑器资源包 editor.js,来源为 https://cdn.kaleidr.com。该文件有数 MB,仅在挂载编辑器时加载。两个步骤都完成后,编辑器才启动。
  3. 编辑器在目标元素内创建地图,并从 https://tile.kaleidr.com 加载底图。样式、精灵图和字体请求会携带您的可发布密钥,以便底图服务识别页面。会话令牌绝不会放进 URL。
  4. 编辑器面板会出现在地图上方、挂载目标元素内部。

由于所有内容都在您的页面中运行,内容安全策略必须允许比 Viewer 或 Tile 更多的资源。具体指令请参见内容安全策略。

您的页面可以执行的操作​

  • 选择底图: 使用 styleId,例如 kaleidr-night。
  • 设置初始镜头: 使用 center、zoom、pitch 和 bearing。
  • 稍后移动镜头: 使用 handle.setCamera(...)。
  • 匹配品牌风格: 使用 theme,这是包含 17 个命名键的对象,例如 brandColor 和 fontPrimary。
  • 移除编辑器: 使用 handle.destroy()。

限制​

  • 无法保存、导出或发布,也没有更改回调。
  • 控制句柄不暴露地图对象。您无法添加自己的图层,也不能读取用户绘制的内容。
  • 底图和主题在挂载时确定。若要修改其中之一,必须销毁并重新挂载编辑器,这会丢失编辑结果。
  • 每个页面同时只能运行一个编辑器。
  • 编辑器挂载期间,主题值会应用于整个文档,销毁后会恢复原值。
  • 不向您的代码发出就绪或失败信号。错误会显示在浏览器控制台中。

后续步骤​