cesium-xs-sdk 1.0.11 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +258 -170
- package/dist/cesium-xs-sdk.cjs.js +517 -508
- package/dist/cesium-xs-sdk.cjs.js.map +1 -1
- package/dist/cesium-xs-sdk.esm.js +517 -508
- package/dist/cesium-xs-sdk.esm.js.map +1 -1
- package/dist/cesium-xs-sdk.umd.js +1 -1
- package/dist/cesium-xs-sdk.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/index.d.ts +2 -0
- package/src/modules/MilitarySymbolModule.js +513 -504
- package/src/modules/militarySymbolAssets.js +10 -10
package/README.md
CHANGED
|
@@ -1,170 +1,258 @@
|
|
|
1
|
-
# cesium-xs-sdk
|
|
2
|
-
|
|
3
|
-
基于 [Cesium 1.137](https://cesium.com/) 封装的轻量级三维 GIS SDK。
|
|
4
|
-
|
|
5
|
-
> 目标:让 Cesium
|
|
6
|
-
|
|
7
|
-
## 安装
|
|
8
|
-
|
|
9
|
-
### 外网项目(npm)
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npm install cesium-xs-sdk cesium
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
<script>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
import {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
##
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
##
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
1
|
+
# cesium-xs-sdk
|
|
2
|
+
|
|
3
|
+
基于 [Cesium 1.137](https://cesium.com/) 封装的轻量级三维 GIS SDK。
|
|
4
|
+
|
|
5
|
+
> 目标:让 Cesium 常用能力(图层、标绘、事件、编辑、测量、军标)更易用、更统一。
|
|
6
|
+
|
|
7
|
+
## 安装
|
|
8
|
+
|
|
9
|
+
### 外网项目(npm)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install cesium-xs-sdk cesium
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
> `cesium` 是 peer dependency,需要业务项目自行安装。
|
|
16
|
+
|
|
17
|
+
### 内网项目(离线包)
|
|
18
|
+
|
|
19
|
+
从 [Gitee Release](https://gitee.com/d1564427109/cesium-xs-sdk/releases) 下载 `cesium-xs-sdk-v{x.x.x}-offline.zip`,解压后复制到项目。
|
|
20
|
+
|
|
21
|
+
## 快速开始
|
|
22
|
+
|
|
23
|
+
### HTML / script 标签
|
|
24
|
+
|
|
25
|
+
```html
|
|
26
|
+
<link rel="stylesheet" href="Cesium-1.137/Build/Cesium/Widgets/widgets.css" />
|
|
27
|
+
<script src="Cesium-1.137/Build/Cesium/Cesium.js"></script>
|
|
28
|
+
<script src="xs3d/cesium-xs-sdk.umd.js"></script>
|
|
29
|
+
|
|
30
|
+
<script>
|
|
31
|
+
const sdk = xs3d.init('cesiumContainer', {
|
|
32
|
+
cesium: window.Cesium,
|
|
33
|
+
cesiumToken: 'your-ion-token'
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
sdk.graphicModule.createPoint('p1')
|
|
37
|
+
.setPosition([116.4, 39.9, 0])
|
|
38
|
+
.setColor(Cesium.Color.RED);
|
|
39
|
+
</script>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Vue 3 / Vite(推荐 SDK 内置插件)
|
|
43
|
+
|
|
44
|
+
Vite 打包环境下,Cesium 运行时需要额外静态资源(如 `ApproximateTerrainHeights.json`、纹理、Worker 等)。使用 SDK 内置的 Vite 插件,无需手动把 Cesium 复制到 `public/`,开发时自动从 `node_modules/cesium` serve 资源,构建时自动复制到产物目录,离线可用。
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm install cesium-xs-sdk cesium
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```js
|
|
51
|
+
// vite.config.js
|
|
52
|
+
import { defineConfig } from 'vite';
|
|
53
|
+
import vue from '@vitejs/plugin-vue';
|
|
54
|
+
import { cesiumXsSdkPlugin } from 'cesium-xs-sdk/vite';
|
|
55
|
+
|
|
56
|
+
export default defineConfig({
|
|
57
|
+
plugins: [
|
|
58
|
+
vue(),
|
|
59
|
+
cesiumXsSdkPlugin({ cesiumBaseUrl: '/Cesium/' })
|
|
60
|
+
]
|
|
61
|
+
});
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```js
|
|
65
|
+
// 组件中
|
|
66
|
+
import * as Cesium from 'cesium';
|
|
67
|
+
import { useXs3d } from 'cesium-xs-sdk/vue';
|
|
68
|
+
|
|
69
|
+
const {
|
|
70
|
+
sdk,
|
|
71
|
+
sceneModule,
|
|
72
|
+
graphicModule,
|
|
73
|
+
controlModule,
|
|
74
|
+
militarySymbolModule,
|
|
75
|
+
editorModule,
|
|
76
|
+
isReady
|
|
77
|
+
} = useXs3d('cesiumContainer', {
|
|
78
|
+
cesium: Cesium,
|
|
79
|
+
cesiumToken: 'your-token',
|
|
80
|
+
cesiumBaseUrl: '/Cesium/',
|
|
81
|
+
controls: {
|
|
82
|
+
locationBar: true,
|
|
83
|
+
zoom: true,
|
|
84
|
+
compass: true,
|
|
85
|
+
distanceLegend: true
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
> 插件默认从项目 `node_modules/cesium` 读取资源;若 Cesium 安装位置不同,可传 `cesiumPackageRoot: '/path/to/cesium'`。
|
|
91
|
+
|
|
92
|
+
如果不使用内置插件,也可以手动复制 `node_modules/cesium/Build/Cesium/` 到 `public/Cesium/`,但内置插件能避免维护这些静态文件。
|
|
93
|
+
|
|
94
|
+
### Vue 2 / Vue CLI
|
|
95
|
+
|
|
96
|
+
```js
|
|
97
|
+
import * as Cesium from 'cesium';
|
|
98
|
+
import { useXs3d } from 'cesium-xs-sdk/vue2';
|
|
99
|
+
|
|
100
|
+
export default {
|
|
101
|
+
setup() {
|
|
102
|
+
const { sdk, sceneModule, graphicModule, militarySymbolModule } = useXs3d('cesiumContainer', {
|
|
103
|
+
cesium: Cesium,
|
|
104
|
+
cesiumToken: 'your-token',
|
|
105
|
+
cesiumBaseUrl: '/Cesium/'
|
|
106
|
+
});
|
|
107
|
+
return { sdk, sceneModule, graphicModule, militarySymbolModule };
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
> Vue CLI 项目请将 `node_modules/cesium/Build/Cesium/` 复制到 `public/Cesium/`。
|
|
113
|
+
|
|
114
|
+
### React
|
|
115
|
+
|
|
116
|
+
```jsx
|
|
117
|
+
import * as Cesium from 'cesium';
|
|
118
|
+
import { useXs3d } from 'cesium-xs-sdk/react';
|
|
119
|
+
|
|
120
|
+
function Map() {
|
|
121
|
+
const { sdk, isReady } = useXs3d('cesiumContainer', {
|
|
122
|
+
cesium: Cesium,
|
|
123
|
+
cesiumToken: 'your-token',
|
|
124
|
+
cesiumBaseUrl: '/Cesium/'
|
|
125
|
+
});
|
|
126
|
+
return <div id="cesiumContainer" style={{ width: '100%', height: '100%' }} />;
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
> React + Vite/CRA 项目同样需要将 `node_modules/cesium/Build/Cesium/` 复制到 `public/Cesium/`。
|
|
131
|
+
|
|
132
|
+
## 构建产物
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
dist/
|
|
136
|
+
├── cesium-xs-sdk.esm.js # ES Module(Vite / Vue3 / 现代构建工具)
|
|
137
|
+
├── cesium-xs-sdk.cjs.js # CommonJS(Node / SSR)
|
|
138
|
+
├── cesium-xs-sdk.umd.js # UMD / 全局变量 xs3d(HTML / script 标签)
|
|
139
|
+
└── cesium-xs-sdk.d.ts # TypeScript 类型声明
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## 核心模块
|
|
143
|
+
|
|
144
|
+
| 模块 | 说明 |
|
|
145
|
+
|------|------|
|
|
146
|
+
| `SceneModule` | 影像/地形/3D Tiles 图层、坐标转换、相机定位 |
|
|
147
|
+
| `GraphicModule` | 点、线、面、模型、文字、标绘图元创建与管理 |
|
|
148
|
+
| `EventModule` | 鼠标、键盘、场景事件订阅与发布 |
|
|
149
|
+
| `EditorModule` | 绘制、编辑、选择、删除、测量等交互工具 |
|
|
150
|
+
| `MilitarySymbolModule` | 军标图标创建、更新、定位、拖拽编辑 |
|
|
151
|
+
| `ControlModule` | 地图控件管理(状态栏、缩放、指南针、比例尺等) |
|
|
152
|
+
|
|
153
|
+
## 控件系统
|
|
154
|
+
|
|
155
|
+
SDK 内置参考 Mars3D 的地图控件,可在 `xs3d.init` 时通过 `controls` 配置自动挂载:
|
|
156
|
+
|
|
157
|
+
```js
|
|
158
|
+
const sdk = xs3d.init('cesiumContainer', {
|
|
159
|
+
cesium: Cesium,
|
|
160
|
+
cesiumToken: 'your-ion-token',
|
|
161
|
+
controls: {
|
|
162
|
+
locationBar: { showFPS: true },
|
|
163
|
+
zoom: true,
|
|
164
|
+
compass: true,
|
|
165
|
+
distanceLegend: { left: 20, bottom: 20 }
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
支持的控件:`LocationBar`、`Zoom`、`Compass`、`DistanceLegend`。其中 `Zoom` 默认挂载在 SDK 统一工具栏,如需自定义位置可传入 `container`。详见 [控件系统使用文档](docs/controls.md)。
|
|
171
|
+
|
|
172
|
+
## 测量工具
|
|
173
|
+
|
|
174
|
+
`EditorModule` 内置测距和测面积工具:
|
|
175
|
+
|
|
176
|
+
```js
|
|
177
|
+
// 测距
|
|
178
|
+
sdk.editorModule.activateMeasureTool(xs3d.MeasureType.DISTANCE);
|
|
179
|
+
|
|
180
|
+
// 测面积
|
|
181
|
+
sdk.editorModule.activateMeasureTool(xs3d.MeasureType.AREA);
|
|
182
|
+
|
|
183
|
+
// 监听结果
|
|
184
|
+
sdk.editorModule.onMeasureComplete((result) => {
|
|
185
|
+
console.log(result.type, result.formatted); // { type: 'distance', formatted: '105.47 km' }
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
// 清除所有测量结果
|
|
189
|
+
sdk.editorModule.getMeasureTool().clearMeasurements();
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
交互:左键加点、右键/Enter 完成、Esc 取消、Backspace 撤销上一点。一次测量完成后结果保留在场景中,可连续绘制多个长度/面积。
|
|
193
|
+
|
|
194
|
+
## 军标模块
|
|
195
|
+
|
|
196
|
+
`MilitarySymbolModule` 提供军标图元的创建、更新、删除、定位及拖拽编辑:
|
|
197
|
+
|
|
198
|
+
```js
|
|
199
|
+
// 创建内置军标
|
|
200
|
+
sdk.militarySymbolModule.create('radio-1', {
|
|
201
|
+
position: [116.4, 39.9, 0],
|
|
202
|
+
type: 'small-radio',
|
|
203
|
+
name: '小电台'
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
// 使用自定义图片
|
|
207
|
+
sdk.militarySymbolModule.create('custom-1', {
|
|
208
|
+
position: [116.5, 39.9, 0],
|
|
209
|
+
type: 'my-symbol',
|
|
210
|
+
iconMode: 'custom',
|
|
211
|
+
imgUrl: '/icons/my-symbol.png'
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
// 注册全局默认图标
|
|
215
|
+
sdk.militarySymbolModule.registerDefaultImage('my-symbol', '/icons/my-symbol.png');
|
|
216
|
+
|
|
217
|
+
// 开启拖拽编辑
|
|
218
|
+
sdk.militarySymbolModule.enableEditMode();
|
|
219
|
+
|
|
220
|
+
// 定位
|
|
221
|
+
sdk.militarySymbolModule.flyTo('radio-1');
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
支持的 `iconMode`:`default`(SDK 内置)、`custom`(自定义图片)、`overlay`(在内置图标上叠加自定义图片)。
|
|
225
|
+
|
|
226
|
+
## 图元定位与外边框
|
|
227
|
+
|
|
228
|
+
`GraphicModule` 提供针对图元的定位和外边框能力:
|
|
229
|
+
|
|
230
|
+
```js
|
|
231
|
+
// 飞行定位到图元
|
|
232
|
+
await sdk.graphicModule.flyTo('p1', { duration: 1.5 });
|
|
233
|
+
|
|
234
|
+
// 瞬间定位
|
|
235
|
+
sdk.graphicModule.zoomTo('p1');
|
|
236
|
+
|
|
237
|
+
// 为贴地面图元添加外边框(polyline 模拟)
|
|
238
|
+
sdk.graphicModule.setOutline('polygon-1', {
|
|
239
|
+
enabled: true,
|
|
240
|
+
color: Cesium.Color.RED,
|
|
241
|
+
width: 2
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
// 移除外边框
|
|
245
|
+
sdk.graphicModule.removeOutline('polygon-1');
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## 文档
|
|
249
|
+
|
|
250
|
+
- [SDK 开发指南](CLAUDE.md)
|
|
251
|
+
- [控件系统使用文档](docs/controls.md)
|
|
252
|
+
- [军事标绘集成计划](docs/military-plot-sdk-integration-plan.md)
|
|
253
|
+
- [后续发版操作手册](docs/release/README.md)
|
|
254
|
+
- [变更记录](docs/change-log/)
|
|
255
|
+
|
|
256
|
+
## 许可证
|
|
257
|
+
|
|
258
|
+
MIT © 成都玄宿科技有限公司
|