@kq_npm/client3d_webgl_vue 4.5.55 → 4.5.57

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 (82) hide show
  1. package/adddata/index.js +189 -21
  2. package/airspacegridoccupancyquery/index.js +1977 -0
  3. package/airspacegridoccupancyquery/style/airspacegridoccupancyquery.css +1 -0
  4. package/airspacegridoccupancyquery/style/index.js +3 -0
  5. package/airspaceprofileanalysis/index.js +1870 -0
  6. package/airspaceprofileanalysis/style/airspaceprofileanalysis.css +1 -0
  7. package/airspaceprofileanalysis/style/index.js +3 -0
  8. package/aspectanalysis/index.js +25 -7
  9. package/baseterraingallery/index.js +16 -4
  10. package/boxclip/index.js +58 -16
  11. package/buildpointmodel/index.js +3207 -230
  12. package/buildpointmodel/style/buildpointmodel.css +1 -1
  13. package/buildpolygonmodel/index.js +205 -81
  14. package/buildpolylinemodel/index.js +346 -70
  15. package/clientPrint/index.js +32440 -2337
  16. package/comparemap/index.js +132 -60
  17. package/compass/index.js +16 -6
  18. package/excavatefillanalysis/index.js +51 -7
  19. package/fixedzoomin/index.js +24 -7
  20. package/fixedzoomout/index.js +25 -7
  21. package/flight/index.js +113 -26
  22. package/floodanalysis/index.js +79 -14
  23. package/geologicalbodyanalysis/index.js +41 -5
  24. package/gpuspatialquery/index.js +127 -19
  25. package/gridoccupancyquery/index.js +627 -0
  26. package/gridoccupancyquery/style/gridoccupancyquery.css +1 -0
  27. package/gridoccupancyquery/style/index.js +3 -0
  28. package/hawkeye/index.js +20 -2
  29. package/headertemp/index.js +7 -2
  30. package/heatmap3d/index.js +282 -158
  31. package/index.js +32440 -2337
  32. package/isolineanalysis/index.js +113 -38
  33. package/light/index.js +80 -22
  34. package/limitheightanalysis/index.js +30 -10
  35. package/lowaltitudefeature/index.js +5027 -0
  36. package/lowaltitudefeature/style/index.js +3 -0
  37. package/lowaltitudefeature/style/lowaltitudefeature.css +1 -0
  38. package/measure/index.js +60 -19
  39. package/modelFlat/index.js +48 -8
  40. package/modeledit/index.js +38 -4
  41. package/modelexcavate/index.js +48 -7
  42. package/modelfilter/index.js +51 -8
  43. package/modelmaterialedit/index.js +127 -25
  44. package/modelprofileanalysis/index.js +51 -14
  45. package/modelselect/index.js +34 -3
  46. package/modelstyleedit/index.js +39 -3
  47. package/modeltransform/index.js +79 -14
  48. package/package.json +1 -1
  49. package/particleeffect/index.js +83 -17
  50. package/planeclip/index.js +66 -17
  51. package/pointcloudrender/index.js +134 -15
  52. package/radarscananalysis/index.js +35 -3
  53. package/resetview/index.js +14 -6
  54. package/roller/index.js +55 -18
  55. package/scaneffect/index.js +98 -29
  56. package/sceneadvancedtoimage/index.js +32 -6
  57. package/sceneapp/index.js +32440 -2337
  58. package/sceneset/index.js +141 -71
  59. package/scenetohdimage/index.js +23 -3
  60. package/sceneview/index.js +32440 -2337
  61. package/sceneview/style/sceneview.css +1 -1
  62. package/screenshot/index.js +44 -11
  63. package/shadowanalysis/index.js +79 -19
  64. package/sightlineanalysis/index.js +66 -15
  65. package/skylineanalysis/index.js +20 -4
  66. package/slopeanalysis/index.js +75 -16
  67. package/slopeaspectanalysis/index.js +128 -26
  68. package/statusbar/index.js +80 -67
  69. package/style.css +1 -1
  70. package/terrainoperation/index.js +39 -7
  71. package/terrainprofileanalysis/index.js +43 -5
  72. package/toolbarapp/index.js +32440 -2337
  73. package/toolboxapp/index.js +32440 -2337
  74. package/typhoontrac/index.js +134 -16
  75. package/underground/index.js +8 -2
  76. package/videofusion/index.js +164 -79
  77. package/videoproject/index.js +77 -23
  78. package/viewshedanalysis/index.js +61 -14
  79. package/weathereffect/index.js +73 -18
  80. package/webgl.es.js +866 -16
  81. package/windyslicing/index.js +258 -54
  82. package/wireframesketch/index.js +25 -8
package/sceneset/index.js CHANGED
@@ -12,7 +12,51 @@ return /******/ (function() { // webpackBootstrap
12
12
  /******/ "use strict";
13
13
  /******/ var __webpack_modules__ = ({
14
14
 
15
- /***/ 12322:
15
+ /***/ 20064:
16
+ /***/ (function(module) {
17
+
18
+ module.exports = __WEBPACK_EXTERNAL_MODULE__20064__;
19
+
20
+ /***/ }),
21
+
22
+ /***/ 20455:
23
+ /***/ (function(module) {
24
+
25
+ module.exports = __WEBPACK_EXTERNAL_MODULE__20455__;
26
+
27
+ /***/ }),
28
+
29
+ /***/ 21250:
30
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
31
+
32
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76314);
33
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
34
+ // Imports
35
+
36
+ var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
37
+ // Module
38
+ ___CSS_LOADER_EXPORT___.push([module.id, ".cesium-performanceDisplay-defaultContainer{top:unset !important;bottom:16px;right:64px !important}", ""]);
39
+ // Exports
40
+ /* harmony default export */ __webpack_exports__.A = (___CSS_LOADER_EXPORT___);
41
+
42
+
43
+ /***/ }),
44
+
45
+ /***/ 22686:
46
+ /***/ (function(module) {
47
+
48
+ module.exports = __WEBPACK_EXTERNAL_MODULE__22686__;
49
+
50
+ /***/ }),
51
+
52
+ /***/ 33751:
53
+ /***/ (function(module) {
54
+
55
+ module.exports = require("@babel/runtime/helpers/interopRequireDefault");
56
+
57
+ /***/ }),
58
+
59
+ /***/ 40544:
16
60
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
17
61
 
18
62
  // ESM COMPAT FLAG
@@ -31,9 +75,9 @@ var SceneSetvue_type_script_setup_true_lang_js = __webpack_require__(68591);
31
75
  // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js
32
76
  var injectStylesIntoStyleTag = __webpack_require__(85072);
33
77
  var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag);
34
- // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/sceneset/SceneSet.vue?vue&type=style&index=0&id=06939beb&lang=scss
35
- var SceneSetvue_type_style_index_0_id_06939beb_lang_scss = __webpack_require__(27663);
36
- ;// ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/sceneset/SceneSet.vue?vue&type=style&index=0&id=06939beb&lang=scss
78
+ // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/sceneset/SceneSet.vue?vue&type=style&index=0&id=ce9e18ee&lang=scss
79
+ var SceneSetvue_type_style_index_0_id_ce9e18ee_lang_scss = __webpack_require__(21250);
80
+ ;// ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/sceneset/SceneSet.vue?vue&type=style&index=0&id=ce9e18ee&lang=scss
37
81
 
38
82
 
39
83
 
@@ -42,12 +86,12 @@ var options = {};
42
86
  options.insert = "head";
43
87
  options.singleton = false;
44
88
 
45
- var update = injectStylesIntoStyleTag_default()(SceneSetvue_type_style_index_0_id_06939beb_lang_scss/* default */.A, options);
89
+ var update = injectStylesIntoStyleTag_default()(SceneSetvue_type_style_index_0_id_ce9e18ee_lang_scss/* default */.A, options);
46
90
 
47
91
 
48
92
 
49
- /* harmony default export */ var sceneset_SceneSetvue_type_style_index_0_id_06939beb_lang_scss = (SceneSetvue_type_style_index_0_id_06939beb_lang_scss/* default */.A.locals || {});
50
- ;// ./src/webgl/sceneset/SceneSet.vue?vue&type=style&index=0&id=06939beb&lang=scss
93
+ /* harmony default export */ var sceneset_SceneSetvue_type_style_index_0_id_ce9e18ee_lang_scss = (SceneSetvue_type_style_index_0_id_ce9e18ee_lang_scss/* default */.A.locals || {});
94
+ ;// ./src/webgl/sceneset/SceneSet.vue?vue&type=style&index=0&id=ce9e18ee&lang=scss
51
95
 
52
96
  ;// ./src/webgl/sceneset/SceneSet.vue
53
97
 
@@ -61,50 +105,6 @@ const __exports__ = SceneSetvue_type_script_setup_true_lang_js/* default */.A;
61
105
 
62
106
  /***/ }),
63
107
 
64
- /***/ 20064:
65
- /***/ (function(module) {
66
-
67
- module.exports = __WEBPACK_EXTERNAL_MODULE__20064__;
68
-
69
- /***/ }),
70
-
71
- /***/ 20455:
72
- /***/ (function(module) {
73
-
74
- module.exports = __WEBPACK_EXTERNAL_MODULE__20455__;
75
-
76
- /***/ }),
77
-
78
- /***/ 22686:
79
- /***/ (function(module) {
80
-
81
- module.exports = __WEBPACK_EXTERNAL_MODULE__22686__;
82
-
83
- /***/ }),
84
-
85
- /***/ 27663:
86
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
87
-
88
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76314);
89
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
90
- // Imports
91
-
92
- var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
93
- // Module
94
- ___CSS_LOADER_EXPORT___.push([module.id, ".cesium-performanceDisplay-defaultContainer{top:unset !important;bottom:16px;right:64px !important}", ""]);
95
- // Exports
96
- /* harmony default export */ __webpack_exports__.A = (___CSS_LOADER_EXPORT___);
97
-
98
-
99
- /***/ }),
100
-
101
- /***/ 33751:
102
- /***/ (function(module) {
103
-
104
- module.exports = require("@babel/runtime/helpers/interopRequireDefault");
105
-
106
- /***/ }),
107
-
108
108
  /***/ 42975:
109
109
  /***/ (function(module) {
110
110
 
@@ -131,8 +131,14 @@ var _skyboxImage = __webpack_require__(98110);
131
131
  * 场景设置逻辑类
132
132
  **/
133
133
  class SceneSetViewModel {
134
+ // 相机变化事件解绑函数
135
+ /**
136
+ * @description 构造函数,初始化场景设置视图模型
137
+ * @param {Object} viewer Cesium 视图对象
138
+ */
134
139
  constructor(viewer) {
135
140
  this._viewer = null;
141
+ // Cesium 视图对象
136
142
  this._constellation = null;
137
143
  //星座
138
144
  this._skyStar = null;
@@ -158,13 +164,19 @@ class SceneSetViewModel {
158
164
  this._blueskyBox = null;
159
165
  // 蓝天
160
166
  this._oldTerrain = null;
167
+ // 原始地形提供者(用于海洋效果恢复)
161
168
  this._waterLayer = null;
169
+ // 水层图层(海洋效果)
162
170
  this._removeChangedEvent = null;
163
171
  this._viewer = viewer;
164
172
  this._defaultSkyBox = viewer.scene.skyBox;
165
173
  this._undergroundManager = new Cesium.Kq3dUndergroundManager(this._viewer.scene);
166
174
  }
167
- // 获取场景内容
175
+ /**
176
+ * @description 获取场景内容项的开启状态
177
+ * @param {String} key 场景内容项键名(earth/sun/moon/star 等)
178
+ * @returns {Boolean} 是否开启
179
+ */
168
180
  getSceneContent(key) {
169
181
  let open = false;
170
182
  switch (key) {
@@ -209,7 +221,11 @@ class SceneSetViewModel {
209
221
  }
210
222
  return open;
211
223
  }
212
- // 设置场景内容
224
+ /**
225
+ * @description 设置场景内容项的开启状态
226
+ * @param {String} key 场景内容项键名
227
+ * @param {Boolean} isOpen 是否开启
228
+ */
213
229
  setSceneContent(key, isOpen) {
214
230
  switch (key) {
215
231
  case "earth":
@@ -287,7 +303,10 @@ class SceneSetViewModel {
287
303
  break;
288
304
  }
289
305
  }
290
- // 设置天空盒样式
306
+ /**
307
+ * @description 设置天空盒样式
308
+ * @param {String} style 天空盒样式键名(default/style1/style2/style3)
309
+ */
291
310
  setSkyBoxStyle(style) {
292
311
  let sources = null;
293
312
  switch (style) {
@@ -336,9 +355,13 @@ class SceneSetViewModel {
336
355
  }
337
356
  if (sources) this._defaultSkyBox.sources = sources;
338
357
  }
339
- // 打开或关闭近地天空盒
358
+ /**
359
+ * @description 打开或关闭近地天空盒
360
+ * @param {Boolean} isOpen 是否开启近地天空盒
361
+ */
340
362
  openNearSkyBoxStyle(isOpen) {
341
363
  if (isOpen) {
364
+ // 开启:按需创建晴天/晚霞/蓝天三种近地天空盒并绑定相机变化事件
342
365
  if (!this._sunshineBox) {
343
366
  this._sunshineBox = new Cesium.Kq3dLocalViewSkyBox({
344
367
  sources: {
@@ -376,18 +399,22 @@ class SceneSetViewModel {
376
399
  });
377
400
  }
378
401
  this.updateNearSkyBox();
379
- let that = this;
402
+ const that = this;
380
403
  this._removeChangedEvent = this._viewer.camera.changed.addEventListener(function () {
381
404
  that.updateNearSkyBox();
382
405
  });
383
406
  } else {
407
+ // 关闭:恢复默认天空盒并解绑相机变化事件
384
408
  this._viewer.scene.skyBox = this._defaultSkyBox;
385
409
  this._viewer.scene.skyAtmosphere.show = true;
386
410
  this._removeChangedEvent && this._removeChangedEvent();
387
411
  this._removeChangedEvent = null;
388
412
  }
389
413
  }
390
- // 设置近地天空盒样式
414
+ /**
415
+ * @description 设置近地天空盒样式
416
+ * @param {String} style 近地天空盒样式键名(sunny/sunset/blueSky)
417
+ */
391
418
  setNearSkyBoxStyle(style) {
392
419
  switch (style) {
393
420
  case "sunny":
@@ -423,7 +450,10 @@ class SceneSetViewModel {
423
450
  }
424
451
  }
425
452
  }
426
- // 打开或关闭颜色校正
453
+ /**
454
+ * @description 打开或关闭颜色校正
455
+ * @param {Boolean} isOpen 是否开启颜色校正
456
+ */
427
457
  openColorCorrection(isOpen) {
428
458
  if (!this._colorCorrection) {
429
459
  this._colorCorrection = new Cesium.Kq3dColorCorrection({
@@ -437,13 +467,20 @@ class SceneSetViewModel {
437
467
  }
438
468
  this._colorCorrection.enabled = isOpen;
439
469
  }
440
- // 设置颜色校正参数
470
+ /**
471
+ * @description 设置颜色校正参数
472
+ * @param {String} key 参数键名(brightness/contrast/hue/saturation)
473
+ * @param {*} val 参数值
474
+ */
441
475
  setColorCorrection(key, val) {
442
476
  if (this._colorCorrection) {
443
477
  this._colorCorrection[key] = Number(val);
444
478
  }
445
479
  }
446
- // 打开或关闭泛光
480
+ /**
481
+ * @description 打开或关闭泛光
482
+ * @param {Boolean} isOpen 是否开启泛光
483
+ */
447
484
  openFloodlight(isOpen) {
448
485
  if (!this._brightness) {
449
486
  this._brightness = new Cesium.Kq3dBrightness({
@@ -453,13 +490,20 @@ class SceneSetViewModel {
453
490
  }
454
491
  this._brightness.enabled = isOpen;
455
492
  }
456
- // 设置泛光参数
493
+ /**
494
+ * @description 设置泛光参数
495
+ * @param {String} key 参数键名
496
+ * @param {*} val 参数值
497
+ */
457
498
  setFloodlight(key, val) {
458
499
  if (this._brightness) {
459
500
  this._brightness[key] = Number(val);
460
501
  }
461
502
  }
462
- // 设置视图模式
503
+ /**
504
+ * @description 设置视图模式
505
+ * @param {String} mode 视图模式(3d/2d/其它为哥伦布视图)
506
+ */
463
507
  setViewMode(mode) {
464
508
  if (this._viewer.scene.mode === Cesium.SceneMode.MORPHING) {
465
509
  return; // 如果已经处于变换中,则不进行任何操作
@@ -472,45 +516,65 @@ class SceneSetViewModel {
472
516
  this._viewer.scene.mode = Cesium.SceneMode.COLUMBUS_VIEW;
473
517
  }
474
518
  }
475
- // 显示坐标网格
519
+ /**
520
+ * @description 显示坐标网格
521
+ * @param {String} type 网格类型(geographic 地理坐标/mercator 墨卡托)
522
+ */
476
523
  showGrid(type) {
477
524
  if (this._gridLayer) {
478
525
  this._viewer.imageryLayers.remove(this._gridLayer);
479
526
  this._gridLayer = null;
480
527
  }
481
528
  if (type == "geographic") {
529
+ // 地理坐标网格
482
530
  this._gridLayer = new Cesium.ImageryLayer(new Cesium.TileCoordinatesImageryProvider({
483
531
  tilingScheme: new Cesium.GeographicTilingScheme()
484
532
  }));
485
533
  this._viewer.imageryLayers.add(this._gridLayer);
486
534
  } else if (type == "mercator") {
535
+ // 墨卡托投影网格
487
536
  this._gridLayer = new Cesium.ImageryLayer(new Cesium.TileCoordinatesImageryProvider({
488
537
  tilingScheme: new Cesium.WebMercatorTilingScheme()
489
538
  }));
490
539
  this._viewer.imageryLayers.add(this._gridLayer);
491
540
  }
492
541
  }
493
- // 打开或关闭地下模式
542
+ /**
543
+ * @description 打开或关闭地下模式
544
+ * @param {Boolean} isOpen 是否开启地下模式
545
+ */
494
546
  openUnderground(isOpen) {
495
547
  this._undergroundManager.undergroundEnabled = isOpen;
496
548
  this._undergroundManager.transparentEnabled = isOpen;
497
549
  }
498
- // 设置地表透明度
550
+ /**
551
+ * @description 设置地表透明度
552
+ * @param {*} val 透明度值
553
+ */
499
554
  setSurfaceTransparency(val) {
500
555
  this._undergroundManager.transparent = Number(val);
501
556
  }
502
557
 
503
- // 设置地形夸张系数
558
+ /**
559
+ * @description 设置地形夸张系数
560
+ * @param {*} val 夸张系数值
561
+ */
504
562
  setExaggerationFactor(val) {
505
563
  this._viewer.scene.globe.terrainExaggeration = Number(val);
506
564
  }
507
565
 
508
- // 设置地形夸张基准高度
566
+ /**
567
+ * @description 设置地形夸张基准高度
568
+ * @param {*} val 基准高度值
569
+ */
509
570
  setAltitudeHeight(val) {
510
571
  this._viewer.scene.globe.terrainExaggerationRelativeHeight = Number(val);
511
572
  }
512
573
 
513
- // 设置模型清晰度
574
+ /**
575
+ * @description 设置模型清晰度
576
+ * @param {*} val 模型分辨率值(maximumScreenSpaceError)
577
+ */
514
578
  setModelResolution(val) {
515
579
  this._viewer._modelResolution = val;
516
580
  var primitives = this._viewer.scene.primitives._primitives;
@@ -732,12 +796,18 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
732
796
  }
733
797
  };
734
798
 
735
- // 场景内容设置改变
799
+ /**
800
+ * @description 场景内容设置改变,调用 viewModel 设置对应项开关
801
+ * @param {String} key 场景内容项键名
802
+ */
736
803
  function contentChanged(key) {
737
804
  viewModel.setSceneContent(key, formItem[key]);
738
805
  }
739
806
 
740
- // 参数改变
807
+ /**
808
+ * @description 参数改变,根据 key 调用 viewModel 更新对应配置项
809
+ * @param {String} key 参数键名
810
+ */
741
811
  function paramsChanged(key) {
742
812
  switch (key) {
743
813
  case "skyBoxStyle":
@@ -2214,7 +2284,7 @@ Object.defineProperty(exports, "default", ({
2214
2284
  return _SceneSet.default;
2215
2285
  }
2216
2286
  }));
2217
- var _SceneSet = _interopRequireDefault(__webpack_require__(12322));
2287
+ var _SceneSet = _interopRequireDefault(__webpack_require__(40544));
2218
2288
  var _SceneSetViewModel = _interopRequireDefault(__webpack_require__(43826));
2219
2289
  var _init = _interopRequireDefault(__webpack_require__(20455));
2220
2290
  /*
@@ -190,7 +190,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
190
190
  function toHDImageHander() {
191
191
  viewModel && viewModel.sceneToImages();
192
192
  }
193
- // 参数改变
193
+ /**
194
+ * @description 参数改变,调用 viewModel 更新对应配置项
195
+ * @param {String} key 参数键名
196
+ */
194
197
  function paramsChanged(key) {
195
198
  if (!viewModel || !viewModel._options) return;
196
199
  viewModel._options[key] = formItem[key];
@@ -213,6 +216,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
213
216
  break;
214
217
  }
215
218
  }
219
+ /**
220
+ * @description 根据容器尺寸初始化视图模型参数
221
+ * @param {String} id 视图容器的 DOM id
222
+ */
216
223
  function intViewModelParams(id) {
217
224
  var bodyW = 1920,
218
225
  bodyH = 1024;
@@ -629,14 +636,23 @@ var _jspdf = _interopRequireDefault(__webpack_require__(65515));
629
636
 
630
637
  class SceneToHDImageViewModel {
631
638
  // 输出图片区域
639
+ /**
640
+ * @description 构造函数,初始化场景高清出图视图模型
641
+ * @param {Object} scenceView 场景视图对象
642
+ * @param {Object} options 表单参数对象
643
+ */
632
644
  constructor(scenceView, options) {
633
645
  this._viewer = null;
646
+ // Cesium 视图对象
634
647
  this._options = null;
648
+ // 表单参数对象
635
649
  this._canvasToImage = null;
650
+ // 场景出图类
636
651
  this._exportPictureRegion = null;
637
652
  this._viewer = scenceView._viewer;
638
653
  this._options = options;
639
- this._viewer.enabledFXAA = true;
654
+ this._viewer.enabledFXAA = true; // 启用 FXAA 抗锯齿
655
+
640
656
  this._exportPictureRegion = document.createElement("div");
641
657
  this._exportPictureRegion.class = "export-picture-region";
642
658
  this._exportPictureRegion.id = "exportPictureRegion";
@@ -671,8 +687,10 @@ class SceneToHDImageViewModel {
671
687
  };
672
688
  var canvas = null;
673
689
  if (width == resolutionWidth && height == resolutionHeight) {
690
+ // 出图尺寸与分辨率一致:直接使用场景 canvas
674
691
  canvas = this._viewer.scene.canvas;
675
692
  } else {
693
+ // 出图尺寸与分辨率不一致:从场景 canvas 裁剪指定区域
676
694
  this._viewer.render();
677
695
  var startX = (resolutionWidth - width) / 2,
678
696
  startY = (resolutionHeight - height) / 2;
@@ -683,7 +701,8 @@ class SceneToHDImageViewModel {
683
701
  newCtx.drawImage(this._viewer.canvas, startX, startY, width, height, 0, 0, width, height);
684
702
  }
685
703
  if (this._options.imgFormat === "pdf") {
686
- let base64 = this._canvasToImage.convertToImage(canvas, {
704
+ // 输出 PDF:使用 jsPDF 生成并保存
705
+ const base64 = this._canvasToImage.convertToImage(canvas, {
687
706
  width: width,
688
707
  //图片宽度
689
708
  height: height,
@@ -701,6 +720,7 @@ class SceneToHDImageViewModel {
701
720
  pdf.save(datetimeCode + ".pdf");
702
721
  }, 100);
703
722
  } else {
723
+ // 其它格式:直接保存为图片
704
724
  this._canvasToImage.saveAsimages(canvas, options);
705
725
  }
706
726
  }