@yangyongtao/gaea 1.1.7 → 1.1.8

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/GaeaMethods.js +42 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yangyongtao/gaea",
3
- "version": "1.1.7",
3
+ "version": "1.1.8",
4
4
  "description": "Gaea 3D visualization component library - Vue 3 components based on Godot WASM engine. Includes WMTS layer loading, camera view control, Vite plugin auto-injection, etc.",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -23,7 +23,13 @@ const defaultConfig = {
23
23
  canvasResizePolicy: 2,
24
24
  experimentalVK: false,
25
25
  focusCanvas: true,
26
- /** 默认加载的影像图层 */
26
+ /** 是否使用天地图(true 时跳过 getAllServe,直接加载天地图影像) */
27
+ useTianditu: false,
28
+ /** 天地图 token */
29
+ tiandituToken: '63201cfd7df1e1bff7d88bb8baa32151',
30
+ /** 天地图最小/最大层级 */
31
+ tiandituLevelRange: [0, 18],
32
+ /** 默认加载的影像图层(useTianditu=false 时生效) */
27
33
  defaultLayers: [
28
34
  { layerName: 'earthland', forMat: 'image/png', min: 0, max: 18, transparency: 0.3 },
29
35
  { layerName: '苍南L19', forMat: 'image/png', min: 5, max: 17 },
@@ -143,17 +149,44 @@ export class GaeaApp {
143
149
 
144
150
  async _initLayers() {
145
151
  const cfg = this.config;
146
- await this.getAllServe();
147
-
148
- const pos = cfg.defaultCameraPosition;
149
- if (pos) this.SetPosition(pos);
150
152
 
151
- const list = cfg.defaultLayers;
152
- if (list?.length) {
153
- for (const layer of list) {
154
- this.addLayer(layer);
153
+ if (cfg.useTianditu) {
154
+ // 天地图模式:不走 getAllServe,直接加载天地图
155
+ this.addTianditu();
156
+ } else {
157
+ // WMTS 服务模式
158
+ await this.getAllServe();
159
+ const list = cfg.defaultLayers;
160
+ if (list?.length) {
161
+ for (const layer of list) {
162
+ this.addLayer(layer);
163
+ }
155
164
  }
156
165
  }
166
+
167
+ const pos = cfg.defaultCameraPosition;
168
+ if (pos) {
169
+ // 等一帧再设相机,确保引擎把图层处理完
170
+ await new Promise(r => requestAnimationFrame(r));
171
+ this.SetPosition(pos);
172
+ }
173
+ }
174
+
175
+ // ---- 天地图 ----
176
+
177
+ /** 加载天地图影像 */
178
+ addTianditu() {
179
+ const cfg = this.config;
180
+ const store = new Gaea.TDTWMTSImageStore();
181
+ store.ServerUri = cfg.tiandituServerUri || 'https://t{0}.tianditu.gov.cn/img_c/wmts';
182
+ store.FormatString = cfg.tiandituFormatString || 'SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILECOL={0}&TILEROW={1}&TILEMATRIX={2}&tk={3}';
183
+ store.ImageExtension = cfg.tiandituImageExtension ?? Gaea.ImageExtensionEnum.JPEG;
184
+ store.TK = cfg.tiandituToken;
185
+ store.Name = '影像底图';
186
+ store.LevelRange = new Gaea.Vector2(cfg.tiandituLevelRange[0], cfg.tiandituLevelRange[1]);
187
+ Gaea.World.Instance.DefaultPyramidTileSet.AddImageStore(store);
188
+ console.log('天地图影像加载成功');
189
+ return store;
157
190
  }
158
191
 
159
192
  // ---- 公开方法 ----