cesium-xs-sdk 1.0.1 → 1.0.3

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 CHANGED
@@ -36,17 +36,49 @@ npm install cesium-xs-sdk cesium
36
36
  </script>
37
37
  ```
38
38
 
39
- ### Vue 3
39
+ ### Vue 3 / Vite(推荐 SDK 内置插件)
40
+
41
+ Vite 打包环境下,Cesium 运行时需要额外静态资源(如 `ApproximateTerrainHeights.json`、纹理、Worker 等)。使用 SDK 内置的 Vite 插件,无需手动把 Cesium 复制到 `public/`,开发时自动从 `node_modules/cesium` serve 资源,构建时自动复制到产物目录,离线可用。
42
+
43
+ ```bash
44
+ npm install cesium-xs-sdk cesium
45
+ ```
40
46
 
41
47
  ```js
48
+ // vite.config.js
49
+ import { defineConfig } from 'vite';
50
+ import vue from '@vitejs/plugin-vue';
51
+ import { cesiumXsSdkPlugin } from 'cesium-xs-sdk/vite';
52
+
53
+ export default defineConfig({
54
+ plugins: [
55
+ vue(),
56
+ cesiumXsSdkPlugin({ cesiumBaseUrl: '/Cesium/' })
57
+ ]
58
+ });
59
+ ```
60
+
61
+ ```js
62
+ // 组件中
42
63
  import { useXs3d } from 'cesium-xs-sdk/vue';
43
64
 
44
- const { sdk, sceneModule, graphicModule, isReady } = useXs3d('cesiumContainer', {
45
- cesiumToken: 'your-token'
65
+ const { sdk, sceneModule, graphicModule, controlModule, isReady } = useXs3d('cesiumContainer', {
66
+ cesiumToken: 'your-token',
67
+ cesiumBaseUrl: '/Cesium/',
68
+ controls: {
69
+ locationBar: true,
70
+ zoom: true,
71
+ compass: true,
72
+ distanceLegend: true
73
+ }
46
74
  });
47
75
  ```
48
76
 
49
- ### Vue 2
77
+ > 插件默认从项目 `node_modules/cesium` 读取资源;若 Cesium 安装位置不同,可传 `cesiumPackageRoot: '/path/to/cesium'`。
78
+
79
+ 如果不使用内置插件,也可以手动复制 `node_modules/cesium/Build/Cesium/` 到 `public/Cesium/`,但内置插件能避免维护这些静态文件。
80
+
81
+ ### Vue 2 / Vue CLI
50
82
 
51
83
  ```js
52
84
  import { useXs3d } from 'cesium-xs-sdk/vue2';
@@ -54,13 +86,16 @@ import { useXs3d } from 'cesium-xs-sdk/vue2';
54
86
  export default {
55
87
  setup() {
56
88
  const { sdk, sceneModule, graphicModule } = useXs3d('cesiumContainer', {
57
- cesiumToken: 'your-token'
89
+ cesiumToken: 'your-token',
90
+ cesiumBaseUrl: '/Cesium/'
58
91
  });
59
92
  return { sdk, sceneModule, graphicModule };
60
93
  }
61
94
  };
62
95
  ```
63
96
 
97
+ > Vue CLI 项目请将 `node_modules/cesium/Build/Cesium/` 复制到 `public/Cesium/`。
98
+
64
99
  ### React
65
100
 
66
101
  ```jsx
@@ -68,12 +103,15 @@ import { useXs3d } from 'cesium-xs-sdk/react';
68
103
 
69
104
  function Map() {
70
105
  const { sdk, isReady } = useXs3d('cesiumContainer', {
71
- cesiumToken: 'your-token'
106
+ cesiumToken: 'your-token',
107
+ cesiumBaseUrl: '/Cesium/'
72
108
  });
73
109
  return <div id="cesiumContainer" style={{ width: '100%', height: '100%' }} />;
74
110
  }
75
111
  ```
76
112
 
113
+ > React + Vite/CRA 项目同样需要将 `node_modules/cesium/Build/Cesium/` 复制到 `public/Cesium/`。
114
+
77
115
  ## 构建产物
78
116
 
79
117
  ```text
@@ -92,10 +130,30 @@ dist/
92
130
  | `GraphicModule` | 点、线、面、模型、文字、标绘图元创建与管理 |
93
131
  | `EventModule` | 鼠标、键盘、场景事件订阅与发布 |
94
132
  | `EditorModule` | 绘制、编辑、选择、删除等交互工具 |
133
+ | `ControlModule` | 地图控件管理(状态栏、缩放、指南针、比例尺等) |
134
+
135
+ ## 控件系统
136
+
137
+ SDK 内置参考 Mars3D 的地图控件,可在 `xs3d.init` 时通过 `controls` 配置自动挂载:
138
+
139
+ ```js
140
+ const sdk = xs3d.init('cesiumContainer', {
141
+ cesiumToken: 'your-ion-token',
142
+ controls: {
143
+ locationBar: { showFPS: true },
144
+ zoom: true,
145
+ compass: true,
146
+ distanceLegend: true
147
+ }
148
+ });
149
+ ```
150
+
151
+ 支持的控件:`LocationBar`、`Zoom`、`Compass`、`DistanceLegend`。详见 [控件系统使用文档](docs/controls.md)。
95
152
 
96
153
  ## 文档
97
154
 
98
- - [SDK 开发指南](../CLAUDE.md)
155
+ - [SDK 开发指南](CLAUDE.md)
156
+ - [控件系统使用文档](docs/controls.md)
99
157
  - [军事标绘集成计划](docs/military-plot-sdk-integration-plan.md)
100
158
  - [变更记录](docs/change-log/)
101
159
 
@@ -8589,6 +8589,10 @@ class GeoCalcUtil {
8589
8589
  const xs3d = {
8590
8590
  // 初始化 SDK
8591
8591
  init: (container, config = {}) => {
8592
+ // 设置 Cesium 资源基础路径(在创建 Viewer 之前生效)
8593
+ if (config.cesiumBaseUrl && window.Cesium?.buildModuleUrl) {
8594
+ window.Cesium.buildModuleUrl.setBaseUrl(config.cesiumBaseUrl);
8595
+ }
8592
8596
  // 设置 Cesium Token(提前处理,避免内部模块重复设置)
8593
8597
  if (config.cesiumToken) {
8594
8598
  window.Cesium.Ion.defaultAccessToken = config.cesiumToken;