Skip to content

将内网 3D Tiles 保存到本地 ​

只保存 tileset.json 不够,它引用的子 tileset、B3DM、glTF、纹理和缓冲文件也需要一起下载。 仓库提供 npm run download:model,针对显式层级模型递归保存完整引用,并生成文件数量、大小和 SHA-256 清单。 此功能仅处理你有权保存的模型,不涉及在线底图下载。

下载 ​

在能访问模型服务的机器上运行。服务使用自定义 apitoken 请求头时,在当前 PowerShell 进程设置:

powershell
# Read-Host 避免令牌出现在命令历史;不要把真实令牌写入脚本或 Git。
$modelSecret = Read-Host 'apitoken' -AsSecureString
$env:SHARDX_MODEL_APITOKEN = [System.Net.NetworkCredential]::new('', $modelSecret).Password
try {
  npm run download:model
} finally {
  Remove-Item Env:SHARDX_MODEL_APITOKEN -ErrorAction SilentlyContinue
  $modelSecret.Dispose()
}

默认下载项目模型到 apps/example/public/models/liding,支持自定义入口和新目录:

sh
npm run download:model -- --url http://model-host/project/tileset.json --out apps/example/public/models/other

也支持进程环境变量 SHARDX_MODEL_AUTHORIZATION、SHARDX_MODEL_COOKIE;请求头只发送到同源、同模型目录的依赖。 不会跟随重定向。不能通过下载器绕过认证;401/403 需要有效凭据。 输出目录必须不存在,避免覆盖已有模型。中途失败保留 _INCOMPLETE,不会暴露根 tileset.json;重新下载请指定新目录。 只有命令成功结束且 _download-report.json 中 complete 为 true 才表示递归下载完成。

在示例中使用 ​

默认目录下载完成后,重启示例开发服务。未设置 VITE_TILESET_URL 时,示例自动使用本地模型。 左侧「3D Tiles」点击「加载模型」,会按模型自身包围球拉远取景,为整个模型保留边距。 「定位模型」使用相同视角;模型隐藏后点击定位会恢复显示,不改变模型的地理位置。 若 .env.local 已设置远程 VITE_TILESET_URL,清空该配置后重启;环境变量的优先级高于自动选择。

本地入口是 /models/liding/tileset.json;子路径部署时,自动选择的入口会带上 Vite 的应用基础路径。 npm run build 会将模型作为示例的静态文件一起部署。消费者也可将整个目录复制到自己站点,通过同源 HTTP(S) 地址接入:

ts
await map.addTilesetLayer({
  id: 'liding',
  url: `${import.meta.env.BASE_URL}models/liding/tileset.json`,
});
await map.flyToLayer('liding');

模型下载后不再需要内网地址或原服务令牌;必须通过静态服务器访问,不能用 file:// 打开。 模型数据被 Git、格式检查和 lint 忽略,不进入 SDK npm 包。公开部署示例前确认自己的模型发布权限,或移走本地模型目录。 天地图等在线底图仍需网络;Cesium 随包 Natural Earth 底图与本地模型可配合使用。

支持范围 ​

支持显式 tileset 的 content.uri / 旧版 content.url、嵌套 JSON、glTF 外部缓冲及纹理、GLB、 B3DM(含 Cesium 支持的旧版头)、I3DM 和复合 CMPT 内的模型引用。保留原始坐标变换,不重新定位模型。 JSON 引用会转成本地相对路径;内嵌二进制引用必须是相对路径且不带查询参数。 跨模型目录或跨源依赖、隐式瓦片及 URI 模板会明确失败,不会报告为完整离线包。 递归清单说明引用文件已保存;是否兼容 Cesium、材质和视觉效果仍需浏览器实际加载验收。

0.1.0 · Cesium peer >=1.146.0 <1.147.0 · 外部部署验收单独记录