@kq_npm/client3d_webgl_vue 4.5.56 → 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 (73) hide show
  1. package/adddata/index.js +189 -21
  2. package/airspacegridoccupancyquery/index.js +108 -7
  3. package/airspaceprofileanalysis/index.js +99 -7
  4. package/aspectanalysis/index.js +25 -7
  5. package/baseterraingallery/index.js +16 -4
  6. package/boxclip/index.js +58 -16
  7. package/buildpointmodel/index.js +3441 -544
  8. package/buildpointmodel/style/buildpointmodel.css +1 -1
  9. package/buildpolygonmodel/index.js +205 -81
  10. package/buildpolylinemodel/index.js +346 -70
  11. package/clientPrint/index.js +10524 -3041
  12. package/comparemap/index.js +132 -60
  13. package/compass/index.js +16 -6
  14. package/excavatefillanalysis/index.js +51 -7
  15. package/fixedzoomin/index.js +24 -7
  16. package/fixedzoomout/index.js +25 -7
  17. package/flight/index.js +113 -26
  18. package/floodanalysis/index.js +79 -14
  19. package/geologicalbodyanalysis/index.js +41 -5
  20. package/gpuspatialquery/index.js +59 -11
  21. package/gridoccupancyquery/index.js +78 -12
  22. package/hawkeye/index.js +20 -2
  23. package/headertemp/index.js +7 -2
  24. package/heatmap3d/index.js +282 -158
  25. package/index.js +10524 -3041
  26. package/isolineanalysis/index.js +113 -38
  27. package/light/index.js +80 -22
  28. package/limitheightanalysis/index.js +30 -10
  29. package/lowaltitudefeature/index.js +292 -119
  30. package/measure/index.js +60 -19
  31. package/modelFlat/index.js +48 -8
  32. package/modeledit/index.js +38 -4
  33. package/modelexcavate/index.js +48 -7
  34. package/modelfilter/index.js +51 -8
  35. package/modelmaterialedit/index.js +127 -25
  36. package/modelprofileanalysis/index.js +50 -14
  37. package/modelselect/index.js +33 -3
  38. package/modelstyleedit/index.js +39 -3
  39. package/modeltransform/index.js +79 -14
  40. package/package.json +1 -1
  41. package/particleeffect/index.js +83 -17
  42. package/planeclip/index.js +66 -17
  43. package/pointcloudrender/index.js +134 -15
  44. package/radarscananalysis/index.js +35 -3
  45. package/resetview/index.js +14 -6
  46. package/roller/index.js +55 -18
  47. package/scaneffect/index.js +98 -29
  48. package/sceneadvancedtoimage/index.js +32 -6
  49. package/sceneapp/index.js +10524 -3041
  50. package/sceneset/index.js +141 -71
  51. package/scenetohdimage/index.js +23 -3
  52. package/sceneview/index.js +10524 -3041
  53. package/screenshot/index.js +44 -11
  54. package/shadowanalysis/index.js +79 -19
  55. package/sightlineanalysis/index.js +66 -15
  56. package/skylineanalysis/index.js +20 -4
  57. package/slopeanalysis/index.js +75 -16
  58. package/slopeaspectanalysis/index.js +128 -26
  59. package/statusbar/index.js +80 -67
  60. package/style.css +1 -1
  61. package/terrainoperation/index.js +39 -7
  62. package/terrainprofileanalysis/index.js +43 -5
  63. package/toolbarapp/index.js +10524 -3041
  64. package/toolboxapp/index.js +10524 -3041
  65. package/typhoontrac/index.js +134 -16
  66. package/underground/index.js +8 -2
  67. package/videofusion/index.js +86 -30
  68. package/videoproject/index.js +77 -23
  69. package/viewshedanalysis/index.js +58 -13
  70. package/weathereffect/index.js +73 -18
  71. package/webgl.es.js +263 -264
  72. package/windyslicing/index.js +233 -45
  73. package/wireframesketch/index.js +25 -8
@@ -57,14 +57,23 @@ exports["default"] = void 0;
57
57
  class LowAltitudeFeatureViewModel {
58
58
  // viewer 就绪回调
59
59
 
60
+ /** @description 构造函数,初始化低空要素视图模型
61
+ * @param {Object} viewer Cesium Viewer 实例
62
+ * @param {Object} options 配置项,可包含 onReady 回调
63
+ */
60
64
  constructor(viewer, options = {}) {
61
65
  this._viewer = null;
66
+ // Cesium Viewer 实例
62
67
  this._options = {};
68
+ // 配置参数对象
63
69
  this._dataSource = null;
70
+ // 自定义数据源
64
71
  this._currentDrawHandler = null;
72
+ // 当前绘制事件处理器
65
73
  this._activeDrawMode = null;
66
74
  // 'point' | 'polyline' | 'polygon'
67
75
  this._drawingEntities = [];
76
+ // 当前绘制产生的实体集合
68
77
  this._gridEntities = new Map();
69
78
  // featureId -> grid entity ids
70
79
  this._onReady = null;
@@ -126,6 +135,8 @@ class LowAltitudeFeatureViewModel {
126
135
  }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
127
136
  return handler;
128
137
  }
138
+
139
+ // 清除当前绘制事件处理器
129
140
  _clearDraw() {
130
141
  if (this._currentDrawHandler) {
131
142
  this._currentDrawHandler.destroy();
@@ -200,8 +211,8 @@ class LowAltitudeFeatureViewModel {
200
211
  drawPolygon(settings = {}, onDrawComplete) {
201
212
  this._clearDraw();
202
213
  this._activeDrawMode = "polygon";
203
- const self = this;
204
- const positions = [];
214
+ const self = this; // 保存 this 引用,便于回调内访问
215
+ const positions = []; // 已绘制的顶点集合
205
216
  const handler = new Cesium.ScreenSpaceEventHandler(this._viewer.scene.canvas);
206
217
 
207
218
  // 动态预览面
@@ -220,11 +231,15 @@ class LowAltitudeFeatureViewModel {
220
231
  }
221
232
  });
222
233
  this._drawingEntities.push(previewEntity);
234
+
235
+ // 左键点击添加顶点
223
236
  handler.setInputAction(event => {
224
237
  const position = this._pickPosition(event.position);
225
238
  if (!position) return;
226
239
  positions.push(position);
227
240
  }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
241
+
242
+ // 右键完成绘制
228
243
  handler.setInputAction(() => {
229
244
  if (positions.length < 3) return;
230
245
  handler.destroy();
@@ -250,6 +265,9 @@ class LowAltitudeFeatureViewModel {
250
265
 
251
266
  /**
252
267
  * @description 创建点实体(含缓冲区可视化)
268
+ * @param {Cesium.Cartesian3} cartesian 笛卡尔坐标
269
+ * @param {Object} settings 图元设置,包含 bufferDistance、bufferType 等
270
+ * @returns {Cesium.Entity} 创建的点实体
253
271
  * @private
254
272
  */
255
273
  _createPointEntity(cartesian, settings = {}) {
@@ -310,6 +328,12 @@ class LowAltitudeFeatureViewModel {
310
328
  }
311
329
  return this._viewer.entities.add(entityOptions);
312
330
  }
331
+
332
+ /** @description 计算圆形多边形顶点(用于 polylineVolume 形状)
333
+ * @param {Number} radius 半径
334
+ * @returns {Array<Cesium.Cartesian2>} 圆形顶点数组
335
+ * @private
336
+ */
313
337
  _computeCircle(radius) {
314
338
  const positions = [];
315
339
  for (let i = 0; i < 360; i++) {
@@ -320,6 +344,9 @@ class LowAltitudeFeatureViewModel {
320
344
  }
321
345
  /**
322
346
  * @description 创建线实体(含缓冲走廊)
347
+ * @param {Array<Cesium.Cartesian3>} positions 顶点坐标数组
348
+ * @param {Object} settings 图元设置,包含 bufferDistance、lineColor 等
349
+ * @returns {Cesium.Entity} 创建的线实体
323
350
  * @private
324
351
  */
325
352
  _createPolylineEntity(positions, settings = {}) {
@@ -365,6 +392,9 @@ class LowAltitudeFeatureViewModel {
365
392
 
366
393
  /**
367
394
  * @description 创建面实体
395
+ * @param {Array<Cesium.Cartesian3>} positions 顶点坐标数组
396
+ * @param {Object} settings 图元设置,包含 fillColor、bufferDistance 等
397
+ * @returns {Cesium.Entity} 创建的面实体
368
398
  * @private
369
399
  */
370
400
  _createPolygonEntity(positions, settings = {}) {
@@ -450,6 +480,7 @@ class LowAltitudeFeatureViewModel {
450
480
  * @description 从GeoJSON创建实体
451
481
  * @param {Object} geoJson GeoJSON对象
452
482
  * @param {Object} settings 图元设置
483
+ * @param {Boolean} trackInDrawing 是否将创建的实体加入绘制集合(导入时为 true,保存/加载时为 false)
453
484
  * @returns {Array<Cesium.Entity>} 创建的实体数组
454
485
  */
455
486
  loadFromGeoJSON(geoJson, settings = {}, trackInDrawing = false) {
@@ -492,6 +523,8 @@ class LowAltitudeFeatureViewModel {
492
523
 
493
524
  /**
494
525
  * @description GeoJSON坐标转Cartesian3
526
+ * @param {Array<Number>} coord 坐标数组 [lon, lat, height]
527
+ * @returns {Cesium.Cartesian3} 笛卡尔坐标
495
528
  * @private
496
529
  */
497
530
  _geojsonCoordToCartesian(coord) {
@@ -503,6 +536,8 @@ class LowAltitudeFeatureViewModel {
503
536
 
504
537
  /**
505
538
  * @description 实体转GeoJSON
539
+ * @param {Cesium.Entity} entity 实体对象
540
+ * @returns {Object|null} GeoJSON Feature 对象
506
541
  */
507
542
  entityToGeoJSON(entity) {
508
543
  if (!entity) return null;
@@ -519,6 +554,8 @@ class LowAltitudeFeatureViewModel {
519
554
 
520
555
  /**
521
556
  * @description 点实体转GeoJSON Point
557
+ * @param {Cesium.Entity} entity 点实体
558
+ * @returns {Object|null} GeoJSON Feature
522
559
  * @private
523
560
  */
524
561
  _pointToGeoJSON(entity) {
@@ -537,6 +574,8 @@ class LowAltitudeFeatureViewModel {
537
574
 
538
575
  /**
539
576
  * @description 线实体转GeoJSON LineString
577
+ * @param {Cesium.Entity} entity 线实体
578
+ * @returns {Object|null} GeoJSON Feature
540
579
  * @private
541
580
  */
542
581
  _polylineToGeoJSON(entity) {
@@ -558,6 +597,8 @@ class LowAltitudeFeatureViewModel {
558
597
 
559
598
  /**
560
599
  * @description 面实体转GeoJSON Polygon
600
+ * @param {Cesium.Entity} entity 面实体
601
+ * @returns {Object|null} GeoJSON Feature
561
602
  * @private
562
603
  */
563
604
  _polygonToGeoJSON(entity) {
@@ -577,6 +618,11 @@ class LowAltitudeFeatureViewModel {
577
618
  }
578
619
  };
579
620
  }
621
+ /** @description 笛卡尔坐标转点 GeoJSON
622
+ * @param {Cesium.Cartesian3} position 笛卡尔坐标
623
+ * @returns {Object} GeoJSON Feature
624
+ * @private
625
+ */
580
626
  _positionToPointGeoJSON(position) {
581
627
  const c = Cesium.Cartographic.fromCartesian(position);
582
628
  return {
@@ -589,6 +635,8 @@ class LowAltitudeFeatureViewModel {
589
635
  }
590
636
  /**
591
637
  * @description 坐标数组转线GeoJSON
638
+ * @param {Array<Cesium.Cartesian3>} positions 笛卡尔坐标数组
639
+ * @returns {Object} GeoJSON Feature
592
640
  * @private
593
641
  */
594
642
  _positionsToLineGeoJSON(positions) {
@@ -608,6 +656,8 @@ class LowAltitudeFeatureViewModel {
608
656
 
609
657
  /**
610
658
  * @description 坐标数组转面GeoJSON
659
+ * @param {Array<Cesium.Cartesian3>} positions 笛卡尔坐标数组
660
+ * @returns {Object} GeoJSON Feature
611
661
  * @private
612
662
  */
613
663
  _positionsToPolygonGeoJSON(positions) {
@@ -630,7 +680,7 @@ class LowAltitudeFeatureViewModel {
630
680
 
631
681
  /**
632
682
  * @description 切换网格化显示
633
- * @param {string} featureId 要素ID
683
+ * @param {Object} featureInfo 要素信息对象(含 id/code 等)
634
684
  * @param {boolean} show 是否显示网格
635
685
  * @param {Object} settings 图元设置
636
686
  */
@@ -649,6 +699,10 @@ class LowAltitudeFeatureViewModel {
649
699
  });
650
700
  this._gridEntities.set(featureId, gridEntities);
651
701
  }
702
+
703
+ /** @description 根据要素名查询并显示网格占用情况
704
+ * @param {Object} featureInfo 要素信息,包含 code/name 等
705
+ */
652
706
  showGridOccupancyQuery(featureInfo) {
653
707
  let that = this;
654
708
  let queryUrl = "http://172.16.1.204:9600/kqgis/rest/services/qqq/gridflow";
@@ -670,17 +724,20 @@ class LowAltitudeFeatureViewModel {
670
724
  }
671
725
  return response.json(); // 解析JSON数据
672
726
  }).then(data => {
727
+ // 请求成功且包含网格编码时渲染网格
673
728
  if (data.code == 200) {
674
729
  if (data.content.code) {
675
730
  // console.log(data.content.types);
676
731
  let code = data.content.code;
677
732
  let instanc = that.getGridInstanc(code);
678
733
  if (instanc) {
734
+ // 已存在图元时复用并更新几何实例
679
735
  if (that._clickGirdPrimitive) {
680
736
  that._clickGirdPrimitive.geometryInstances = instanc;
681
737
  that._clickGirdPrimitive._state = Cesium.PrimitiveState.READY;
682
738
  that._clickGirdPrimitive.updateVertex = true;
683
739
  } else {
740
+ // 首次创建带半透明红色材质的网格 Primitive
684
741
  that._clickGirdPrimitive = that._viewer.scene.primitives.add(new Cesium.Primitive({
685
742
  geometryInstances: instanc,
686
743
  appearance: new Cesium.MaterialAppearance({
@@ -705,7 +762,7 @@ class LowAltitudeFeatureViewModel {
705
762
  asynchronous: false
706
763
  }));
707
764
  }
708
- let gridcode = code.substring(0, (code.length + 1) / 2);
765
+ let gridcode = code.substring(0, (code.length + 1) / 2); // 截取前半段作为网格编码
709
766
  let type = data.content.types.map(item => item.description);
710
767
  //显示网格暂用情况
711
768
  that._htmlTag = new Cesium.Kq3dDragableHtmlTag(that._viewer, {
@@ -722,6 +779,7 @@ class LowAltitudeFeatureViewModel {
722
779
  <div class='attr'>${that._language.value.webgl["occupancyType"]} : ${type.join(",")}</div>
723
780
  </div>`
724
781
  });
782
+ // 延迟绑定关闭按钮事件
725
783
  setTimeout(() => {
726
784
  let close = document.querySelector("#grid_info_close");
727
785
  close.addEventListener("click", function () {
@@ -743,6 +801,10 @@ class LowAltitudeFeatureViewModel {
743
801
  console.error("There was a problem with your fetch operation:", error);
744
802
  });
745
803
  }
804
+
805
+ /** @description 查询并获取网格占用区域(不渲染)
806
+ * @param {Object} featureInfo 要素信息,包含 code/name 等
807
+ */
746
808
  getGridOccupancy(featureInfo) {
747
809
  let that = this;
748
810
  let queryUrl = "http://172.16.1.204:9600/kqgis/rest/services/qqq/gridflow";
@@ -761,6 +823,7 @@ class LowAltitudeFeatureViewModel {
761
823
  }
762
824
  return response.json(); // 解析JSON数据
763
825
  }).then(data => {
826
+ // 请求成功且包含网格编码时构建几何实例
764
827
  if (data.code == 200) {
765
828
  if (data.content.code) {
766
829
  // console.log(data.content.types);
@@ -772,10 +835,16 @@ class LowAltitudeFeatureViewModel {
772
835
  console.error("There was a problem with your fetch operation:", error);
773
836
  });
774
837
  }
838
+ /** @description 根据网格编码构建 Cesium 几何实例
839
+ * @param {String} code 网格编码字符串
840
+ * @returns {Cesium.GeometryInstance|undefined} 网格几何实例
841
+ */
775
842
  getGridInstanc(code) {
776
843
  let index = (code.length + 1) / 2;
844
+ // 调用 WASM 模块解码网格编码为边界框
777
845
  let grid = Module.decodeGeoSotGBCodeToBox(code.substring(0, index), code.substring(index));
778
846
  if (grid) {
847
+ // 限制经纬度范围在合法区间内
779
848
  if (grid.minx < -180) grid.minx = -180;
780
849
  if (grid.maxx > 180) grid.maxx = 180;
781
850
  if (grid.miny < -90) grid.miny = -90;
@@ -786,6 +855,8 @@ class LowAltitudeFeatureViewModel {
786
855
  const maxLat = Math.max(grid.miny, grid.maxy);
787
856
  const minz = grid.minz;
788
857
  const maxz = grid.maxz;
858
+
859
+ // 构建拉伸矩形几何体
789
860
  let rectangle = new Cesium.RectangleGeometry({
790
861
  ellipsoid: Cesium.Ellipsoid.WGS84,
791
862
  rectangle: Cesium.Rectangle.fromDegrees(minLon, minLat, maxLon, maxLat),
@@ -801,6 +872,7 @@ class LowAltitudeFeatureViewModel {
801
872
 
802
873
  /**
803
874
  * @description 移除网格实体
875
+ * @param {String} featureId 要素 ID
804
876
  * @private
805
877
  */
806
878
  _removeGridEntities(featureId) {
@@ -816,6 +888,9 @@ class LowAltitudeFeatureViewModel {
816
888
 
817
889
  /**
818
890
  * @description 在面内生成网格单元
891
+ * @param {Array<Cesium.Cartesian3>} boundaryPositions 边界顶点
892
+ * @param {Number} gridSizeMeters 网格尺寸(米)
893
+ * @returns {Array} 网格单元数组
819
894
  * @private
820
895
  */
821
896
  _generateGridInPolygon(boundaryPositions, gridSizeMeters) {
@@ -825,6 +900,10 @@ class LowAltitudeFeatureViewModel {
825
900
 
826
901
  /**
827
902
  * @description 沿线生成网格缓冲
903
+ * @param {Array<Cesium.Cartesian3>} positions 线顶点
904
+ * @param {Number} bufferSize 缓冲距离
905
+ * @param {Number} gridSizeMeters 网格尺寸(米)
906
+ * @returns {Array} 网格单元数组
828
907
  * @private
829
908
  */
830
909
  _generateGridAlongLine(positions, bufferSize, gridSizeMeters) {
@@ -834,6 +913,10 @@ class LowAltitudeFeatureViewModel {
834
913
 
835
914
  /**
836
915
  * @description 在点周围生成网格
916
+ * @param {Cesium.Cartesian3} center 中心点
917
+ * @param {Number} radius 半径
918
+ * @param {Number} gridSizeMeters 网格尺寸(米)
919
+ * @returns {Array} 网格单元数组
837
920
  * @private
838
921
  */
839
922
  _generateGridAroundPoint(center, radius, gridSizeMeters) {
@@ -843,6 +926,9 @@ class LowAltitudeFeatureViewModel {
843
926
 
844
927
  /**
845
928
  * @description 创建网格单元实体
929
+ * @param {Array<Number>} cellBounds 网格单元边界
930
+ * @param {Object} settings 图元设置
931
+ * @returns {Cesium.Entity} 网格单元实体
846
932
  * @private
847
933
  */
848
934
  _createGridCell(cellBounds, settings) {
@@ -863,6 +949,8 @@ class LowAltitudeFeatureViewModel {
863
949
 
864
950
  /**
865
951
  * @description 拾取鼠标位置的地理坐标
952
+ * @param {Cesium.Cartesian2} screenPos 屏幕坐标
953
+ * @returns {Cesium.Cartesian3|null} 笛卡尔坐标
866
954
  * @private
867
955
  */
868
956
  _pickPosition(screenPos) {
@@ -899,6 +987,8 @@ class LowAltitudeFeatureViewModel {
899
987
 
900
988
  /**
901
989
  * @description 缩放到实体
990
+ * @param {Cesium.Entity|String} entityOrId 实体或实体 ID
991
+ * @returns {Boolean} 是否成功
902
992
  */
903
993
  zoomToEntity(entityOrId) {
904
994
  let entity = entityOrId;
@@ -929,7 +1019,7 @@ class LowAltitudeFeatureViewModel {
929
1019
  }
930
1020
 
931
1021
  /**
932
- * @description 销毁ViewModel
1022
+ * @description 销毁ViewModel,释放所有资源
933
1023
  */
934
1024
  destroy() {
935
1025
  this.clearDraw();
@@ -971,7 +1061,7 @@ class LowAltitudeFeatureViewModel {
971
1061
 
972
1062
  /**
973
1063
  * @description 删除要素实体(通过 entityIds 数组)
974
- * @param {Array<string>} entityIds
1064
+ * @param {Array<String>} entityIds 实体 ID 数组
975
1065
  */
976
1066
  removeFeatureEntities(entityIds) {
977
1067
  if (!this._viewer || !entityIds) return;
@@ -1018,6 +1108,8 @@ class LowAltitudeFeatureViewModel {
1018
1108
 
1019
1109
  /**
1020
1110
  * @description 从 GeoJSON 提取 Cartographic 数组(私有工具方法)
1111
+ * @param {Object} geojson GeoJSON 对象
1112
+ * @returns {Array<Cesium.Cartographic>} 地理坐标数组
1021
1113
  * @private
1022
1114
  */
1023
1115
  _extractPositionsFromGeoJSON(geojson) {
@@ -1037,6 +1129,10 @@ class LowAltitudeFeatureViewModel {
1037
1129
  });
1038
1130
  return positions;
1039
1131
  }
1132
+ /** @description 根据 id 获取实体
1133
+ * @param {String} id 实体 ID
1134
+ * @returns {Cesium.Entity|undefined} 实体对象
1135
+ */
1040
1136
  getEntityById(id) {
1041
1137
  // 优先从 dataSource 中获取实体
1042
1138
  if (this._dataSource) {
@@ -1100,58 +1196,6 @@ const __exports__ = Formvue_type_script_lang_js/* default */.A;
1100
1196
 
1101
1197
  /***/ }),
1102
1198
 
1103
- /***/ 11583:
1104
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1105
-
1106
- // ESM COMPAT FLAG
1107
- __webpack_require__.r(__webpack_exports__);
1108
-
1109
- // EXPORTS
1110
- __webpack_require__.d(__webpack_exports__, {
1111
- __esModule: function() { return /* reexport */ LowAltitudeFeaturevue_type_script_setup_true_lang_js/* __esModule */.B; },
1112
- "default": function() { return /* binding */ LowAltitudeFeature; }
1113
- });
1114
-
1115
- // EXTERNAL MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-1.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue?vue&type=script&setup=true&lang=js
1116
- var LowAltitudeFeaturevue_type_script_setup_true_lang_js = __webpack_require__(23043);
1117
- ;// ./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue?vue&type=script&setup=true&lang=js
1118
-
1119
- // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js
1120
- var injectStylesIntoStyleTag = __webpack_require__(85072);
1121
- var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag);
1122
- // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue?vue&type=style&index=0&id=b3c8fafe&scoped=true&lang=css
1123
- var LowAltitudeFeaturevue_type_style_index_0_id_b3c8fafe_scoped_true_lang_css = __webpack_require__(74703);
1124
- ;// ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue?vue&type=style&index=0&id=b3c8fafe&scoped=true&lang=css
1125
-
1126
-
1127
-
1128
- var options = {};
1129
-
1130
- options.insert = "head";
1131
- options.singleton = false;
1132
-
1133
- var update = injectStylesIntoStyleTag_default()(LowAltitudeFeaturevue_type_style_index_0_id_b3c8fafe_scoped_true_lang_css/* default */.A, options);
1134
-
1135
-
1136
-
1137
- /* harmony default export */ var lowaltitudefeature_LowAltitudeFeaturevue_type_style_index_0_id_b3c8fafe_scoped_true_lang_css = (LowAltitudeFeaturevue_type_style_index_0_id_b3c8fafe_scoped_true_lang_css/* default */.A.locals || {});
1138
- ;// ./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue?vue&type=style&index=0&id=b3c8fafe&scoped=true&lang=css
1139
-
1140
- // EXTERNAL MODULE: ./node_modules/vue-loader/dist/exportHelper.js
1141
- var exportHelper = __webpack_require__(66262);
1142
- ;// ./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue
1143
-
1144
-
1145
-
1146
- ;
1147
-
1148
-
1149
- const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.A)(LowAltitudeFeaturevue_type_script_setup_true_lang_js/* default */.A, [['__scopeId',"data-v-b3c8fafe"]])
1150
-
1151
- /* harmony default export */ var LowAltitudeFeature = (__exports__);
1152
-
1153
- /***/ }),
1154
-
1155
1199
  /***/ 14464:
1156
1200
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1157
1201
 
@@ -1439,12 +1483,12 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1439
1483
  const props = __props;
1440
1484
 
1441
1485
  // ==================== 组件状态 ====================
1442
- let isAddOrEdit = (0, _vue.ref)(false);
1443
- let isEdit = (0, _vue.ref)(false);
1444
- let searchKeyword = (0, _vue.ref)("");
1445
- let panelCollapsed = (0, _vue.ref)(false);
1446
- let symbolSettingsExpanded = (0, _vue.ref)(false);
1447
- let currentDrawMode = (0, _vue.ref)("");
1486
+ let isAddOrEdit = (0, _vue.ref)(false); // 是否处于新增/编辑面板状态
1487
+ let isEdit = (0, _vue.ref)(false); // 是否为编辑模式
1488
+ let searchKeyword = (0, _vue.ref)(""); // 树搜索关键字
1489
+ let panelCollapsed = (0, _vue.ref)(false); // 右侧面板是否折叠
1490
+ let symbolSettingsExpanded = (0, _vue.ref)(false); // 图元设置是否展开
1491
+ let currentDrawMode = (0, _vue.ref)(""); // 当前绘制模式
1448
1492
 
1449
1493
  // 当前编辑的要素所属分类(新建时强制)
1450
1494
  let forcedCategory = (0, _vue.ref)(null);
@@ -1591,13 +1635,17 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1591
1635
 
1592
1636
  let currentSubclassOptions = (0, _vue.computed)(() => {
1593
1637
  return subclassOptionsMap[formData.featureClass] || [];
1594
- });
1638
+ }); // 当前分类下的子类选项
1639
+
1595
1640
  let currentShapeTypes = (0, _vue.computed)(() => {
1596
1641
  return shapeTypeMap[currentGeometryType()] || [];
1597
- });
1642
+ }); // 当前几何类型对应的形状选项
1643
+
1598
1644
  let currentBufferTypes = (0, _vue.computed)(() => {
1599
1645
  return bufferTypeMap[currentGeometryType()] || [];
1600
- });
1646
+ }); // 当前几何类型对应的缓冲类型选项
1647
+
1648
+ // 根据要素分类推断当前几何类型
1601
1649
  function currentGeometryType() {
1602
1650
  if (formData.featureClass === "hangar") return "point";
1603
1651
  if (formData.featureClass === "airroute") return "polyline";
@@ -1606,25 +1654,27 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1606
1654
  }
1607
1655
  let showRouteTypeField = (0, _vue.computed)(() => {
1608
1656
  return formData.featureClass === "airroute";
1609
- });
1657
+ }); // 是否显示航线类型字段
1658
+
1610
1659
  let showBufferTypeField = (0, _vue.computed)(() => {
1611
1660
  return currentBufferTypes.value.length > 0;
1612
- });
1661
+ }); // 是否显示缓冲类型字段
1662
+
1613
1663
  let showBufferDistanceField = (0, _vue.computed)(() => {
1614
1664
  // if (currentGeometryType() === "polygon") return false;
1615
1665
  return symbolSettings.bufferType && symbolSettings.bufferType !== "none";
1616
- });
1666
+ }); // 是否显示缓冲距离字段
1617
1667
 
1618
1668
  // ==================== Cesium 相关 ====================
1619
1669
 
1620
- let currentEditFeature = null;
1621
- let boxRef = (0, _vue.ref)(null);
1670
+ let currentEditFeature = null; // 当前编辑的要素对象
1671
+ let boxRef = (0, _vue.ref)(null); // 组件容器 Ref
1622
1672
  let headerTemp = (0, _vue.ref)();
1623
1673
  let headerTempRef = (0, _vue.ref)(null);
1624
- let currentEntities = [];
1625
- let currentGeoJSON = null;
1626
- let viewer = null;
1627
- let viewModel = null;
1674
+ let currentEntities = []; // 当前绘制产生的实体集合
1675
+ let currentGeoJSON = null; // 当前绘制产生的 GeoJSON
1676
+ let viewer = null; // Cesium Viewer 实例
1677
+ let viewModel = null; // 视图模型实例
1628
1678
 
1629
1679
  // ==================== kq-tree 相关 ====================
1630
1680
  // 树节点唯一 key 字段名
@@ -1655,6 +1705,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1655
1705
  // 同步受控选中状态(根据数据 checked 属性更新 checkedKeys)
1656
1706
  function updateCheckedKeys() {
1657
1707
  const keys = [];
1708
+ // 遍历所有分类下的要素,收集选中状态的节点 key
1658
1709
  featureCategories.forEach(cat => {
1659
1710
  if (cat.children) {
1660
1711
  cat.children.forEach(f => {
@@ -1669,7 +1720,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1669
1720
  featureTreeRef.value.$refs.child.setCheckedKeys(checkedKeys.value);
1670
1721
  }
1671
1722
 
1672
- // 节点展开回调(受控模式同步)
1723
+ /** @description 节点展开回调(受控模式同步)
1724
+ * @param {Object} data 节点数据
1725
+ * @param {Object} node 节点对象
1726
+ */
1673
1727
  function handleNodeExpand(data, node) {
1674
1728
  const key = data[treeNodeKey];
1675
1729
  if (key && !expandedKeys.value.includes(key)) {
@@ -1677,7 +1731,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1677
1731
  }
1678
1732
  }
1679
1733
 
1680
- // 节点折叠回调(受控模式同步)
1734
+ /** @description 节点折叠回调(受控模式同步)
1735
+ * @param {Object} data 节点数据
1736
+ * @param {Object} node 节点对象
1737
+ */
1681
1738
  function handleNodeCollapse(data, node) {
1682
1739
  const key = data[treeNodeKey];
1683
1740
  if (key) {
@@ -1685,7 +1742,11 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1685
1742
  }
1686
1743
  }
1687
1744
 
1688
- // 树节点过滤方法(搜索)
1745
+ /** @description 树节点过滤方法(搜索)
1746
+ * @param {String} value 搜索关键字
1747
+ * @param {Object} data 节点数据
1748
+ * @returns {Boolean} 是否匹配
1749
+ */
1689
1750
  function filterTreeNode(value, data) {
1690
1751
  if (!value) return true;
1691
1752
  const keyword = value.toLowerCase();
@@ -1708,7 +1769,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1708
1769
  }
1709
1770
  }
1710
1771
 
1711
- // 树节点勾选事件
1772
+ /** @description 树节点勾选事件
1773
+ * @param {Object} data 节点数据
1774
+ * @param {Object} checkedInfo 选中信息
1775
+ */
1712
1776
  function handleTreeCheck(data, checkedInfo) {
1713
1777
  let currenNode = featureTreeRef.value.$refs.child.getNode(data);
1714
1778
  if (data.children) {
@@ -1724,7 +1788,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1724
1788
  updateCheckedKeys();
1725
1789
  }
1726
1790
 
1727
- // 树节点点击事件
1791
+ /** @description 树节点点击事件
1792
+ * @param {Object} data 节点数据
1793
+ * @param {Object} node 节点对象
1794
+ */
1728
1795
  function handleTreeNodeClick(data, node) {
1729
1796
  // 分类节点:切换展开/折叠
1730
1797
  if (data.children) {
@@ -1737,7 +1804,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1737
1804
  // 要素节点点击不展开(无 children)
1738
1805
  }
1739
1806
 
1740
- // 根据分类 key 切换该分类下所有要素的勾选状态
1807
+ /** @description 根据分类 key 切换该分类下所有要素的勾选状态
1808
+ * @param {String} categoryKey 分类 key
1809
+ * @param {Boolean} checked 是否选中
1810
+ */
1741
1811
  function toggleCategoryCheckByKey(categoryKey, checked) {
1742
1812
  const category = featureCategories.find(cat => cat.key === categoryKey);
1743
1813
  if (category && category.children) {
@@ -1749,7 +1819,9 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1749
1819
  updateCheckedKeys();
1750
1820
  }
1751
1821
 
1752
- // 通过节点数据编辑要素(树节点回调用)
1822
+ /** @description 通过节点数据编辑要素(树节点回调用)
1823
+ * @param {Object} data 节点数据
1824
+ */
1753
1825
  function editFeatureFromNode(data) {
1754
1826
  const category = featureCategories.find(cat => cat.key === data.category);
1755
1827
  if (category) {
@@ -1757,12 +1829,16 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1757
1829
  }
1758
1830
  }
1759
1831
 
1760
- // 通过节点数据缩放至要素
1832
+ /** @description 通过节点数据缩放至要素
1833
+ * @param {Object} data 节点数据
1834
+ */
1761
1835
  function zoomToFeatureByKey(data) {
1762
1836
  zoomToFeature(data);
1763
1837
  }
1764
1838
 
1765
- // 通过节点数据删除要素
1839
+ /** @description 通过节点数据删除要素
1840
+ * @param {Object} data 节点数据
1841
+ */
1766
1842
  function deleteFeatureByKey(data) {
1767
1843
  const category = featureCategories.find(cat => cat.key === data.category);
1768
1844
  if (category) {
@@ -1770,14 +1846,17 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1770
1846
  }
1771
1847
  }
1772
1848
 
1773
- // 通过分类 key 添加要素
1849
+ /** @description 通过分类 key 添加要素
1850
+ * @param {String} categoryKey 分类 key
1851
+ */
1774
1852
  function addFeatureByCategoryByKey(categoryKey) {
1775
1853
  const category = featureCategories.find(cat => cat.key === categoryKey);
1776
1854
  if (category) {
1777
1855
  addFeatureByCategory(category);
1778
1856
  }
1779
1857
  }
1780
- let featureTreeRef = (0, _vue.ref)(null);
1858
+ let featureTreeRef = (0, _vue.ref)(null); // 树组件 Ref
1859
+
1781
1860
  (0, _vue.onMounted)(() => {
1782
1861
  (0, _util.updatePosition)(boxRef.value, props);
1783
1862
  (0, _vue.watch)(() => props.position, newVal => (0, _util.updatePosition)(boxRef.value, props));
@@ -1817,7 +1896,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1817
1896
  };
1818
1897
 
1819
1898
  /**
1820
- * 地图准备好后,将已有 geojson 的要素渲染到地图
1899
+ * @description 地图准备好后,将已有 geojson 的要素渲染到地图
1900
+ * @param {LowAltitudeFeatureViewModel} vm 视图模型实例
1821
1901
  */
1822
1902
  function renderExistingFeatures(vm) {
1823
1903
  if (!vm) return;
@@ -1837,14 +1917,14 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1837
1917
  }
1838
1918
 
1839
1919
  /**
1840
- * 加载模拟示例数据
1920
+ * @description 加载模拟示例数据
1841
1921
  */
1842
1922
  function loadMockData() {
1843
1923
  MOCK_FEATURE_S.forEach(item => addFeatureToTree(item));
1844
1924
  }
1845
1925
 
1846
1926
  /**
1847
- * 加载外部数据
1927
+ * @description 加载外部数据
1848
1928
  */
1849
1929
  function loadExternalData() {
1850
1930
  if (props.loadLowAltitudeFeature) {
@@ -1859,7 +1939,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1859
1939
  }
1860
1940
 
1861
1941
  /**
1862
- * 将要素添加到树中,并渲染到地图
1942
+ * @description 将要素添加到树中,并渲染到地图
1943
+ * @param {Object} item 要素数据
1863
1944
  */
1864
1945
  function addFeatureToTree(item) {
1865
1946
  const category = featureCategories.find(cat => cat.key === item.category);
@@ -1905,7 +1986,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1905
1986
 
1906
1987
  // ==================== 要素CRUD操作 ====================
1907
1988
  /**
1908
- * 通过一级分类添加要素
1989
+ * @description 通过一级分类添加要素
1990
+ * @param {Object} category 分类对象
1909
1991
  */
1910
1992
  function addFeatureByCategory(category) {
1911
1993
  isAddOrEdit.value = true;
@@ -1918,7 +2000,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1918
2000
  }
1919
2001
 
1920
2002
  /**
1921
- * 开始绘制
2003
+ * @description 开始绘制
2004
+ * @param {String} mode 绘制模式:point/polyline/polygon
1922
2005
  */
1923
2006
  function startDraw(mode) {
1924
2007
  if (!viewModel || !viewModel.isReady()) {
@@ -1970,7 +2053,9 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1970
2053
  }
1971
2054
 
1972
2055
  /**
1973
- * 编辑要素
2056
+ * @description 编辑要素
2057
+ * @param {Object} feature 要素对象
2058
+ * @param {Object} category 所属分类对象
1974
2059
  */
1975
2060
  function editFeature(feature, category) {
1976
2061
  // 1. 先准备所有数据,暂不显示面板
@@ -2030,7 +2115,9 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2030
2115
  }
2031
2116
 
2032
2117
  /**
2033
- * 根据分类推断几何类型
2118
+ * @description 根据分类推断几何类型
2119
+ * @param {String} categoryKey 分类 key
2120
+ * @returns {String} 几何类型:point/polyline/polygon
2034
2121
  */
2035
2122
  function inferGeometryFromCategory(categoryKey) {
2036
2123
  if (categoryKey === "hangar") return "point";
@@ -2039,7 +2126,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2039
2126
  }
2040
2127
 
2041
2128
  /**
2042
- * 缩放至要素
2129
+ * @description 缩放至要素
2130
+ * @param {Object} feature 要素对象
2043
2131
  */
2044
2132
  function zoomToFeature(feature) {
2045
2133
  if (!viewModel) {
@@ -2059,7 +2147,9 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2059
2147
  }
2060
2148
 
2061
2149
  /**
2062
- * 删除要素
2150
+ * @description 删除要素
2151
+ * @param {Object} feature 要素对象
2152
+ * @param {Object} category 所属分类对象
2063
2153
  */
2064
2154
  function deleteFeature(feature, category) {
2065
2155
  const index = category.children.findIndex(f => f.id === feature.id);
@@ -2081,7 +2171,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2081
2171
  }
2082
2172
 
2083
2173
  /**
2084
- * 切换网格化显示
2174
+ * @description 切换网格化显示
2175
+ * @param {Object} feature 要素对象
2085
2176
  */
2086
2177
  function toggleGridDisplay(feature) {
2087
2178
  feature.gridDisplay = !feature.gridDisplay;
@@ -2095,7 +2186,9 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2095
2186
  }
2096
2187
 
2097
2188
  /**
2098
- * 更新实体可见性
2189
+ * @description 更新实体可见性
2190
+ * @param {Object} feature 要素对象
2191
+ * @param {Boolean} checked 是否可见
2099
2192
  */
2100
2193
  function updateEntityVisibility(feature, checked) {
2101
2194
  if (viewModel) {
@@ -2104,6 +2197,9 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2104
2197
  }
2105
2198
 
2106
2199
  // ==================== GeoJSON 操作 ====================
2200
+ /** @description 处理 GeoJSON 文件上传
2201
+ * @param {Object} file 上传的文件对象
2202
+ */
2107
2203
  function handleGeoJSONUpload(file) {
2108
2204
  const reader = new FileReader();
2109
2205
  reader.onload = e => {
@@ -2132,6 +2228,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2132
2228
  };
2133
2229
  reader.readAsText(file.raw);
2134
2230
  }
2231
+
2232
+ /** @description 根据 GeoJSON 自动推断几何类型
2233
+ * @param {Object} geojson GeoJSON 对象
2234
+ */
2135
2235
  function autoInferGeometryType(geojson) {
2136
2236
  let geomType = "";
2137
2237
  if (geojson.type === "FeatureCollection" && geojson.features && geojson.features.length > 0) {
@@ -2150,6 +2250,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2150
2250
  symbolSettings.shapeType = "faceData";
2151
2251
  }
2152
2252
  }
2253
+
2254
+ // 导出当前 GeoJSON 为文件
2153
2255
  function exportGeoJSON() {
2154
2256
  if (!currentGeoJSON) {
2155
2257
  (0, _message.default)({
@@ -2172,6 +2274,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2172
2274
  type: "success"
2173
2275
  });
2174
2276
  }
2277
+
2278
+ // 删除当前绘制中的要素
2175
2279
  function deleteCurrentDrawing() {
2176
2280
  removeCurrentEntities();
2177
2281
  currentGeoJSON = null;
@@ -2181,6 +2285,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2181
2285
  type: "success"
2182
2286
  });
2183
2287
  }
2288
+
2289
+ // 移除当前绘制产生的所有实体
2184
2290
  function removeCurrentEntities() {
2185
2291
  if (viewModel) {
2186
2292
  viewModel.removeCurrentDrawingEntities();
@@ -2189,6 +2295,9 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2189
2295
  }
2190
2296
 
2191
2297
  // ==================== 表单操作 ====================
2298
+ /** @description 要素分类变化回调,重置子类并同步绘图模式
2299
+ * @param {String} val 分类 value
2300
+ */
2192
2301
  function onFeatureClassChange(val) {
2193
2302
  // 仅当子类在当前分类下无效时才重置,避免编辑要素时被意外清空
2194
2303
  const validSubclasses = (subclassOptionsMap[val] || []).map(opt => opt.value);
@@ -2209,6 +2318,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2209
2318
  symbolSettings.bufferType = "cube";
2210
2319
  }
2211
2320
  }
2321
+
2322
+ // 重置表单数据及绘图状态
2212
2323
  function resetForm() {
2213
2324
  formData.code = "";
2214
2325
  formData.name = "";
@@ -2222,6 +2333,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2222
2333
  currentEditFeature = null;
2223
2334
  Object.assign(symbolSettings, defaultSymbolSettings());
2224
2335
  }
2336
+
2337
+ // 清空表单并清除绘制
2225
2338
  function clearForm() {
2226
2339
  resetForm();
2227
2340
  clearDrawHandler();
@@ -2231,6 +2344,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2231
2344
  type: "info"
2232
2345
  });
2233
2346
  }
2347
+
2348
+ // 保存要素(新建或更新)
2234
2349
  function saveFeature() {
2235
2350
  // 验证要素编码
2236
2351
  if (!formData.code.trim()) {
@@ -2383,6 +2498,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2383
2498
  isEdit.value = false;
2384
2499
  resetForm();
2385
2500
  }
2501
+
2502
+ // 取消编辑/新增,关闭面板并清理状态
2386
2503
  function cancel() {
2387
2504
  isAddOrEdit.value = false;
2388
2505
  isEdit.value = false;
@@ -2390,9 +2507,13 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
2390
2507
  clearDrawHandler();
2391
2508
  removeCurrentEntities();
2392
2509
  }
2510
+
2511
+ // 切换右侧面板折叠状态
2393
2512
  function togglePanelCollapse() {
2394
2513
  panelCollapsed.value = !panelCollapsed.value;
2395
2514
  }
2515
+
2516
+ // 清除当前绘制事件处理器
2396
2517
  function clearDrawHandler() {
2397
2518
  if (viewModel) {
2398
2519
  viewModel.clearDraw();
@@ -3018,6 +3139,58 @@ var _default = exports.A = {
3018
3139
 
3019
3140
  /***/ }),
3020
3141
 
3142
+ /***/ 26188:
3143
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3144
+
3145
+ // ESM COMPAT FLAG
3146
+ __webpack_require__.r(__webpack_exports__);
3147
+
3148
+ // EXPORTS
3149
+ __webpack_require__.d(__webpack_exports__, {
3150
+ __esModule: function() { return /* reexport */ LowAltitudeFeaturevue_type_script_setup_true_lang_js/* __esModule */.B; },
3151
+ "default": function() { return /* binding */ LowAltitudeFeature; }
3152
+ });
3153
+
3154
+ // EXTERNAL MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-1.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue?vue&type=script&setup=true&lang=js
3155
+ var LowAltitudeFeaturevue_type_script_setup_true_lang_js = __webpack_require__(23043);
3156
+ ;// ./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue?vue&type=script&setup=true&lang=js
3157
+
3158
+ // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js
3159
+ var injectStylesIntoStyleTag = __webpack_require__(85072);
3160
+ var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag);
3161
+ // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue?vue&type=style&index=0&id=4aa57328&scoped=true&lang=css
3162
+ var LowAltitudeFeaturevue_type_style_index_0_id_4aa57328_scoped_true_lang_css = __webpack_require__(39502);
3163
+ ;// ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue?vue&type=style&index=0&id=4aa57328&scoped=true&lang=css
3164
+
3165
+
3166
+
3167
+ var options = {};
3168
+
3169
+ options.insert = "head";
3170
+ options.singleton = false;
3171
+
3172
+ var update = injectStylesIntoStyleTag_default()(LowAltitudeFeaturevue_type_style_index_0_id_4aa57328_scoped_true_lang_css/* default */.A, options);
3173
+
3174
+
3175
+
3176
+ /* harmony default export */ var lowaltitudefeature_LowAltitudeFeaturevue_type_style_index_0_id_4aa57328_scoped_true_lang_css = (LowAltitudeFeaturevue_type_style_index_0_id_4aa57328_scoped_true_lang_css/* default */.A.locals || {});
3177
+ ;// ./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue?vue&type=style&index=0&id=4aa57328&scoped=true&lang=css
3178
+
3179
+ // EXTERNAL MODULE: ./node_modules/vue-loader/dist/exportHelper.js
3180
+ var exportHelper = __webpack_require__(66262);
3181
+ ;// ./src/webgl/lowaltitudefeature/LowAltitudeFeature.vue
3182
+
3183
+
3184
+
3185
+ ;
3186
+
3187
+
3188
+ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.A)(LowAltitudeFeaturevue_type_script_setup_true_lang_js/* default */.A, [['__scopeId',"data-v-4aa57328"]])
3189
+
3190
+ /* harmony default export */ var LowAltitudeFeature = (__exports__);
3191
+
3192
+ /***/ }),
3193
+
3021
3194
  /***/ 26331:
3022
3195
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3023
3196
 
@@ -3198,6 +3371,22 @@ _Form.default.install = (Vue, opts) => {
3198
3371
  _KqGIS.kq_npm_client_common_vue.KqForm = _Form.default;
3199
3372
  _KqGIS.kq_npm_client_common_vue.KqFormItem = _FormItem.default;
3200
3373
 
3374
+ /***/ }),
3375
+
3376
+ /***/ 39502:
3377
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
3378
+
3379
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76314);
3380
+ /* 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__);
3381
+ // Imports
3382
+
3383
+ var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
3384
+ // Module
3385
+ ___CSS_LOADER_EXPORT___.push([module.id, "\n.kq-laf-geometry-status[data-v-4aa57328] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n margin: 10px 0;\n border-radius: 4px;\n background-color: #fef0f0;\n border: 1px solid #fde2e2;\n color: #f56c6c;\n font-size: 12px;\n}\n.kq-laf-geometry-status.has-geometry[data-v-4aa57328] {\n background-color: #f0f9eb;\n border-color: #e1f3d8;\n color: #67c23a;\n}\n.kq-laf-status-text[data-v-4aa57328] {\n flex: 1;\n}\n", ""]);
3386
+ // Exports
3387
+ /* harmony default export */ __webpack_exports__.A = (___CSS_LOADER_EXPORT___);
3388
+
3389
+
3201
3390
  /***/ }),
3202
3391
 
3203
3392
  /***/ 39640:
@@ -3843,22 +4032,6 @@ const __exports__ = Dividervue_type_script_lang_js/* default */.A;
3843
4032
 
3844
4033
  module.exports = __WEBPACK_EXTERNAL_MODULE__74383__;
3845
4034
 
3846
- /***/ }),
3847
-
3848
- /***/ 74703:
3849
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
3850
-
3851
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76314);
3852
- /* 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__);
3853
- // Imports
3854
-
3855
- var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
3856
- // Module
3857
- ___CSS_LOADER_EXPORT___.push([module.id, "\n.kq-laf-geometry-status[data-v-b3c8fafe] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n margin: 10px 0;\n border-radius: 4px;\n background-color: #fef0f0;\n border: 1px solid #fde2e2;\n color: #f56c6c;\n font-size: 12px;\n}\n.kq-laf-geometry-status.has-geometry[data-v-b3c8fafe] {\n background-color: #f0f9eb;\n border-color: #e1f3d8;\n color: #67c23a;\n}\n.kq-laf-status-text[data-v-b3c8fafe] {\n flex: 1;\n}\n", ""]);
3858
- // Exports
3859
- /* harmony default export */ __webpack_exports__.A = (___CSS_LOADER_EXPORT___);
3860
-
3861
-
3862
4035
  /***/ }),
3863
4036
 
3864
4037
  /***/ 75797:
@@ -4717,11 +4890,11 @@ Object.defineProperty(exports, "__esModule", ({
4717
4890
  value: true
4718
4891
  }));
4719
4892
  exports.kq_npm_client_leaflet_vue = exports.kq_npm_client_common_vue = exports.kq_npm_client3d_webgl_vue = void 0;
4720
- let kq_npm_client_common_vue = exports.kq_npm_client_common_vue = window.kq_npm_client_common_vue = window.kq_npm_client_common_vue || {};
4893
+ const kq_npm_client_common_vue = exports.kq_npm_client_common_vue = window.kq_npm_client_common_vue = window.kq_npm_client_common_vue || {};
4721
4894
  __webpack_require__.g.kq_npm_client_common_vue = kq_npm_client_common_vue;
4722
- let kq_npm_client_leaflet_vue = exports.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue || {};
4895
+ const kq_npm_client_leaflet_vue = exports.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue || {};
4723
4896
  __webpack_require__.g.kq_npm_client_leaflet_vue = kq_npm_client_leaflet_vue;
4724
- let kq_npm_client3d_webgl_vue = exports.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue || {};
4897
+ const kq_npm_client3d_webgl_vue = exports.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue || {};
4725
4898
  __webpack_require__.g.kq_npm_client3d_webgl_vue = kq_npm_client3d_webgl_vue;
4726
4899
 
4727
4900
  /***/ })
@@ -4833,7 +5006,7 @@ Object.defineProperty(exports, "default", ({
4833
5006
  return _LowAltitudeFeature.default;
4834
5007
  }
4835
5008
  }));
4836
- var _LowAltitudeFeature = _interopRequireDefault(__webpack_require__(11583));
5009
+ var _LowAltitudeFeature = _interopRequireDefault(__webpack_require__(26188));
4837
5010
  var _LowAltitudeFeatureViewModel = _interopRequireDefault(__webpack_require__(4494));
4838
5011
  var _init = _interopRequireDefault(__webpack_require__(20455));
4839
5012
  /*