更新 SGS 地图 SDK 并补充数据层接入手册

This commit is contained in:
lyf
2026-06-25 01:44:51 +08:00
parent 1d277eabf0
commit 19516a507b
10 changed files with 2261 additions and 35 deletions

View File

@@ -1,6 +1,6 @@
# SGS Map SDK 交付包
> **版本**V2.0.0
> **版本**V2.3.0
> **定位**:深圳自然博物馆统一三维高精地图导航服务平台 H5 SDK
欢迎接入 SGS Map SDK本 SDK 将复杂的 WebGL 三维渲染、GLB 模型管线与 NavMesh 物理寻路引擎封装在服务端基座中业务端H5 / 大屏 / 小程序)只需通过几行代码即可极速唤起 3D 地图。
@@ -16,10 +16,9 @@ sgs-map-sdk-release/
│ ├── index.mjs.map # ESM source map
│ ├── index.d.ts # TypeScript 类型声明文件
│ └── index.d.mts # TypeScript 模块声明文件
├── example/
│ └── index.html # 完整接入示例(带控制台、日志面板、与后端 API 联调)
├── package.json # NPM 元信息
├── sdk-quickstart.md # 【必读】10 分钟快速接入指南(含完整示例代码)
├── sdk-api-reference.md # 【必读】第三方开发 API 参考手册
├── sdk-protocol.md # 【选读】底层通信协议与安全沙箱规范说明
└── README.md # 当前说明文档
```
@@ -41,14 +40,84 @@ sgs-map-sdk-release/
- **部署要求**:本 SDK 是“双域架构”。除了在您的业务前端引入 `sgs-map-sdk` 库以外,**SGS 统一地图管理平台必须在您的服务器或内网环境中完成独立部署**(基座项目为 `sgs-frontend-map`)。
- **版本对应**SDK 与基座严格遵守大版本一致原则。例如SDK `V2.x.x` 必须对应基座引擎的 `V2.x.x`。如果强行跨版本混用,`HELLO` 协议握手将被拒绝并抛出 `ERR_NOT_READY`
## 📤 发布目录说明
| 用途 | 目录/入口 | 说明 |
|------|-----------|------|
| SDK 独立交付包 | `E:\sgs-dm\sgs-map-sdk-release` | 对外交付 SDK、类型声明、示例和接入文档 |
| SDK 包产物 | `E:\sgs-dm\sgs-map-sdk-release\dist` | 保留 `index.global.js``index.mjs``index.d.ts` 等包内标准命名 |
| 前端公开 SDK | `E:\sgs-dm\sgs-frontend-map\public\sdk` | Next 静态目录,对外路径为 `/sdk/sgs-map-sdk.min.js` |
`sgs-frontend-map` 执行 `npm run build:sdk` 后,会自动构建 `dist/sdk`,并同步到 `public/sdk``sgs-map-sdk-release/dist`。正式发布前以这三个目录的产物一致性作为验收口径。
## 📚 如何开始?
- **如果您是普通前端业务开发 / 微信小程序开发**
直接打开 `sdk-quickstart.md`复制里面的示例代码10分钟即可完成接入。
*(注:微信小程序团队完全无需引入 `dist` 下的代码,请仔细阅读文档中小程序 `<web-view>` 的原生接入方式)*
- **如果您想看一份能直接跑的完整示例**
打开 `example/index.html`,用本地静态服务器(如 `npx serve`)打开即可,里面包含楼层切换、聚焦、寻路、图钉、超时、销毁等全场景演示。需要先把基座 `sgs-frontend-map` 跑起来并把 `sdkUrl` 改成对应的本地地址
- **如果您需要逐个查询 API 参数、返回值和错误码**
打开 `sdk-api-reference.md`,按方法名查阅第三方调用说明
- **如果您是对架构感兴趣的高级开发**
可以阅读 `sdk-protocol.md`,了解我们如何通过双域确权协议解决 `postMessage` 多实例安全问题,以及 WebGL 的安全释放机制。
---
## 🆕 V2.3.0 当前能力概览
### V2.3.0 新增方法
| 方法 | 签名 | 说明 |
|------|------|------|
| `getNavigablePlaces` | `getNavigablePlaces(floorId: string \| number)` | 获取指定楼层可用于导航的目的地列表,优先返回业务门点并过滤纯交通设施本体 |
| `getDiagnostics` | `getDiagnostics()` | 获取地图级健康诊断包含楼层、模型、POI、空间、讲解点、路网和可导航目的地统计 |
| `getFloorDiagnostics` | `getFloorDiagnostics(floorId: string \| number)` | 获取单楼层详细诊断,用于发布前检查数据完整性 |
### V2.3.0 Manifest 能力字段
`manifest.capabilities` 新增标准能力声明:
```text
mapLoading, floorSwitching, poiQuery, spaceQuery,
navigablePlaces, crossFloorRoute, accessibleRoute,
highlight, diagnostics
```
下游业务端应优先通过 capabilities 判断当前地图基座是否支持对应能力。
## V2.2.0 基础数据能力
### 新增方法 (8 个)
| 方法 | 签名 | 说明 |
|------|------|------|
| `getManifest` | `getManifest()` | 获取地图 Manifest地图元数据、楼层列表等 |
| `loadFloorBundle` | `loadFloorBundle(floorId: string \| number)` | 加载楼层 Bundle模型 + POI + 空间面 + 讲解点一次性拉取) |
| `getFloorPois` | `getFloorPois(floorId: string \| number)` | 获取指定楼层的 POI 列表 |
| `getSpaces` | `getSpaces(floorId: string \| number)` | 获取指定楼层的空间面(展厅/分区)列表 |
| `getGuideStops` | `getGuideStops(floorId: string \| number)` | 获取指定楼层的讲解点列表 |
| `preloadFloor` | `preloadFloor(floorId: string \| number)` | 预加载指定楼层(后台静默下载模型资源,不切换视图) |
| `clearModelCache` | `clearModelCache()` | 清空本地模型缓存IndexedDB / Memory |
| `getPerformanceStats` | `getPerformanceStats()` | 获取性能统计FPS、DrawCall、纹理内存等 |
> **类型放宽**v2.2.0 继续保持所有 ID 字段(`floorId`、`mapId`、`poiId` 等)支持 `string | number`,兼容字符串形式的业务 ID。
### 新增事件 (5 个)
| 事件名 | Payload | 说明 |
|--------|---------|------|
| `modelLoading` | `{ floorId, modelUrl }` | 模型文件开始加载(可用于显示 Loading UI |
| `modelReady` | `{ floorId, parseTimeMs }` | 模型解析完成Three.js Scene 已挂载 |
| `modelError` | `{ floorId, error, fallbackUsed }` | 模型加载失败,含是否使用了 fallback 回退信息 |
| `floorBundleReady` | `{ floorId, dataVersion }` | 楼层 Bundle 数据全部就绪 |
| `routeReady` | `{ routeId, distance, duration }` | 路径规划完成,返回距离/时长 |
### Draco 压缩策略
v2.2.0 的模型管线保持自动 Draco 压缩策略:
- **导入阶段**GLB 模型导入后,服务端自动执行保守级 Draco 压缩quantization position=14, normal=10, texcoord=12
- **容错机制**:若 Draco 压缩失败(如非标网格),系统自动回退使用原始 GLB 文件,不影响渲染
- **客户端解码**SDK 内置 Draco WASM 解码器,客户端无需任何额外配置
- **体积收益**:典型博物馆楼层模型压缩率约 60%~75%,首屏加载时间显著缩短