@kq_npm/client3d_webgl_vue 4.5.55 → 4.5.56

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.
@@ -0,0 +1,4854 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory(require("vue"), require("@kq_npm/client_common_vue/init.js"), require("@kq_npm/client_common_vue/_utils/util"), require("@kq_npm/client_common_vue/configprovider/useGlobalConfig"), require("@kq_npm/client_common_vue/_mixin/render"), require("@kq_npm/client_common_vue/_utils/gis-utils"));
4
+ else if(typeof define === 'function' && define.amd)
5
+ define("@kq_npm/client3d_webgl_vue", ["vue", "@kq_npm/client_common_vue/init.js", "@kq_npm/client_common_vue/_utils/util", "@kq_npm/client_common_vue/configprovider/useGlobalConfig", "@kq_npm/client_common_vue/_mixin/render", "@kq_npm/client_common_vue/_utils/gis-utils"], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["@kq_npm/client3d_webgl_vue"] = factory(require("vue"), require("@kq_npm/client_common_vue/init.js"), require("@kq_npm/client_common_vue/_utils/util"), require("@kq_npm/client_common_vue/configprovider/useGlobalConfig"), require("@kq_npm/client_common_vue/_mixin/render"), require("@kq_npm/client_common_vue/_utils/gis-utils"));
8
+ else
9
+ root["@kq_npm/client3d_webgl_vue"] = factory(root["Vue"], root["@kq_npm/client_common_vue/init.js"], root["@kq_npm/client_common_vue/_utils/util"], root["@kq_npm/client_common_vue/configprovider/useGlobalConfig"], root["@kq_npm/client_common_vue/_mixin/render"], root["@kq_npm/client_common_vue/_utils/gis-utils"]);
10
+ })(this, function(__WEBPACK_EXTERNAL_MODULE__50154__, __WEBPACK_EXTERNAL_MODULE__20455__, __WEBPACK_EXTERNAL_MODULE__42975__, __WEBPACK_EXTERNAL_MODULE__22686__, __WEBPACK_EXTERNAL_MODULE__74383__, __WEBPACK_EXTERNAL_MODULE__20064__) {
11
+ return /******/ (function() { // webpackBootstrap
12
+ /******/ "use strict";
13
+ /******/ var __webpack_modules__ = ({
14
+
15
+ /***/ 2409:
16
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
17
+
18
+
19
+
20
+ var _interopRequireDefault = __webpack_require__(33751);
21
+ Object.defineProperty(exports, "__esModule", ({
22
+ value: true
23
+ }));
24
+ exports["default"] = void 0;
25
+ var _Divider = _interopRequireDefault(__webpack_require__(74253));
26
+ var _init = _interopRequireDefault(__webpack_require__(20455));
27
+ var _KqGIS = __webpack_require__(99602);
28
+ /*
29
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
30
+ * All rights reserved.
31
+ */
32
+
33
+ _Divider.default.install = (Vue, opts) => {
34
+ (0, _init.default)(Vue, opts);
35
+ Vue.component(_Divider.default.name, _Divider.default);
36
+ };
37
+ var _default = exports["default"] = _Divider.default;
38
+ _KqGIS.kq_npm_client_common_vue.KqDivider = _Divider.default;
39
+
40
+ /***/ }),
41
+
42
+ /***/ 4494:
43
+ /***/ (function(__unused_webpack_module, exports) {
44
+
45
+
46
+
47
+ Object.defineProperty(exports, "__esModule", ({
48
+ value: true
49
+ }));
50
+ exports["default"] = void 0;
51
+ /*
52
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
53
+ * All rights reserved.
54
+ */
55
+
56
+ // 低空要素业务逻辑类
57
+ class LowAltitudeFeatureViewModel {
58
+ // viewer 就绪回调
59
+
60
+ constructor(viewer, options = {}) {
61
+ this._viewer = null;
62
+ this._options = {};
63
+ this._dataSource = null;
64
+ this._currentDrawHandler = null;
65
+ this._activeDrawMode = null;
66
+ // 'point' | 'polyline' | 'polygon'
67
+ this._drawingEntities = [];
68
+ this._gridEntities = new Map();
69
+ // featureId -> grid entity ids
70
+ this._onReady = null;
71
+ this._viewer = viewer;
72
+ this._options = options;
73
+ this._onReady = options.onReady || null;
74
+ this._initDataSource();
75
+ if (typeof this._onReady === "function") {
76
+ this._onReady(this._viewer);
77
+ }
78
+ }
79
+
80
+ /**
81
+ * @description 获取 viewer(供外部调用)
82
+ * @returns {Cesium.Viewer|null}
83
+ */
84
+ getViewer() {
85
+ return this._viewer;
86
+ }
87
+
88
+ /**
89
+ * @description 判断 viewer 是否已就绪
90
+ * @returns {boolean}
91
+ */
92
+ isReady() {
93
+ return !!this._viewer;
94
+ }
95
+
96
+ /**
97
+ * @description 初始化数据源
98
+ */
99
+ _initDataSource() {
100
+ if (!this._viewer) return;
101
+ this._dataSource = new Cesium.CustomDataSource("lowAltitudeFeatures");
102
+ this._viewer.dataSources.add(this._dataSource);
103
+ }
104
+
105
+ // ==================== 绘制功能 ====================
106
+
107
+ /**
108
+ * @description 开始绘制点
109
+ * @param {Object} settings 图元设置
110
+ * @param {Function} onDrawComplete 绘制完成回调 (entity, geojson) => void
111
+ * @returns {Cesium.ScreenSpaceEventHandler|null}
112
+ */
113
+ drawPoint(settings = {}, onDrawComplete) {
114
+ this._clearDraw();
115
+ this._activeDrawMode = "point";
116
+ const handler = new Cesium.ScreenSpaceEventHandler(this._viewer.scene.canvas);
117
+ this._currentDrawHandler = handler;
118
+ handler.setInputAction(event => {
119
+ const position = this._pickPosition(event.position);
120
+ if (!position) return;
121
+ const entity = this._createPointEntity(position, settings);
122
+ this._drawingEntities.push(entity);
123
+ if (onDrawComplete) {
124
+ onDrawComplete(entity, this._positionToPointGeoJSON(position));
125
+ }
126
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
127
+ return handler;
128
+ }
129
+ _clearDraw() {
130
+ if (this._currentDrawHandler) {
131
+ this._currentDrawHandler.destroy();
132
+ this._currentDrawHandler = null;
133
+ }
134
+ }
135
+
136
+ /**
137
+ * @description 开始绘制线
138
+ * @param {Object} settings 图元设置
139
+ * @param {Function} onDrawComplete 绘制完成回调 (entity, geojson) => void
140
+ * @returns {Cesium.ScreenSpaceEventHandler|null}
141
+ */
142
+ drawPolyline(settings = {}, onDrawComplete) {
143
+ this._clearDraw();
144
+ this._activeDrawMode = "polyline";
145
+ const positions = [];
146
+ const handler = new Cesium.ScreenSpaceEventHandler(this._viewer.scene.canvas);
147
+
148
+ // 动态预览线
149
+ const dynamicPositions = new Cesium.CallbackProperty(() => {
150
+ if (positions.length < 2) return undefined;
151
+ return positions.slice();
152
+ }, false);
153
+ let previewEntity = this._viewer.entities.add({
154
+ polyline: {
155
+ positions: dynamicPositions,
156
+ width: settings.lineWidth || 2,
157
+ material: settings.lineColor ? Cesium.Color.fromCssColorString(settings.lineColor) : Cesium.Color.BLUE,
158
+ clampToGround: true
159
+ }
160
+ });
161
+ this._drawingEntities.push(previewEntity);
162
+ handler.setInputAction(event => {
163
+ const position = this._pickPosition(event.position);
164
+ if (!position) return;
165
+ positions.push(position);
166
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
167
+ handler.setInputAction(() => {
168
+ if (positions.length < 2) return;
169
+ handler.destroy();
170
+ this._currentDrawHandler = null;
171
+ const entity = this._createPolylineEntity(positions.slice(), settings);
172
+ if (previewEntity) {
173
+ this._viewer.entities.remove(previewEntity);
174
+ }
175
+ previewEntity = entity;
176
+ this._drawingEntities = [entity];
177
+ if (onDrawComplete) {
178
+ onDrawComplete(entity, this._positionsToLineGeoJSON(positions));
179
+ }
180
+ }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
181
+
182
+ // 鼠标移动时更新动态位置
183
+ handler.setInputAction(event => {
184
+ if (!positions.length) return;
185
+ const position = this._pickPosition(event.position);
186
+ if (position) {
187
+ // 触发动态属性更新
188
+ }
189
+ }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
190
+ this._currentDrawHandler = handler;
191
+ return handler;
192
+ }
193
+
194
+ /**
195
+ * @description 开始绘制面
196
+ * @param {Object} settings 图元设置
197
+ * @param {Function} onDrawComplete 绘制完成回调 (entity, geojson) => void
198
+ * @returns {Cesium.ScreenSpaceEventHandler|null}
199
+ */
200
+ drawPolygon(settings = {}, onDrawComplete) {
201
+ this._clearDraw();
202
+ this._activeDrawMode = "polygon";
203
+ const self = this;
204
+ const positions = [];
205
+ const handler = new Cesium.ScreenSpaceEventHandler(this._viewer.scene.canvas);
206
+
207
+ // 动态预览面
208
+ const dynamicPositions = new Cesium.CallbackProperty(() => {
209
+ if (positions.length < 3) return undefined;
210
+ return new Cesium.PolygonHierarchy([...positions, positions[0]]);
211
+ }, false);
212
+ let previewEntity = this._viewer.entities.add({
213
+ polygon: {
214
+ hierarchy: dynamicPositions,
215
+ material: settings.fillColor ? Cesium.Color.fromCssColorString(settings.fillColor).withAlpha((settings.fillOpacity || 50) / 100) : Cesium.Color.GREEN.withAlpha(0.5),
216
+ outline: true,
217
+ outlineColor: settings.outlineColor ? Cesium.Color.fromCssColorString(settings.outlineColor) : Cesium.Color.BLACK,
218
+ outlineWidth: settings.outlineWidth || 1,
219
+ heightReference: Cesium.HeightReference.CLAMP_TO_GROUND
220
+ }
221
+ });
222
+ this._drawingEntities.push(previewEntity);
223
+ handler.setInputAction(event => {
224
+ const position = this._pickPosition(event.position);
225
+ if (!position) return;
226
+ positions.push(position);
227
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
228
+ handler.setInputAction(() => {
229
+ if (positions.length < 3) return;
230
+ handler.destroy();
231
+ this._currentDrawHandler = null;
232
+ const entity = this._createPolygonEntity(positions.slice(), settings);
233
+ if (previewEntity) {
234
+ this._viewer.entities.remove(previewEntity);
235
+ }
236
+ previewEntity = entity;
237
+ // 如果存在模型,则删除
238
+ this._drawingEntities = [entity];
239
+ console.log(self._drawingEntities.length);
240
+ if (onDrawComplete) {
241
+ onDrawComplete(entity, this._positionsToPolygonGeoJSON(positions));
242
+ console.log(self._drawingEntities.length);
243
+ }
244
+ }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
245
+ this._currentDrawHandler = handler;
246
+ return handler;
247
+ }
248
+
249
+ // ==================== 实体创建 ====================
250
+
251
+ /**
252
+ * @description 创建点实体(含缓冲区可视化)
253
+ * @private
254
+ */
255
+ _createPointEntity(cartesian, settings = {}) {
256
+ const cartographic = Cesium.Cartographic.fromCartesian(cartesian);
257
+ const lon = Cesium.Math.toDegrees(cartographic.longitude);
258
+ const lat = Cesium.Math.toDegrees(cartographic.latitude);
259
+ const bufferDistance = settings.bufferDistance || 500;
260
+ const upperHeight = settings.upperHeight || 120;
261
+ const lowerHeight = settings.lowerHeight || 0;
262
+ const bufferType = settings.bufferType || "sphere";
263
+
264
+ // 缓冲体的中心高度 = 地形高度 + lowerHeight + (upperHeight + lowerHeight) / 2
265
+ // 简化:中心在 lowerHeight + upperHeight/2 处
266
+ const bufferCenterHeight = cartographic.height + lowerHeight + upperHeight / 2;
267
+ const entityOptions = {
268
+ position: Cesium.Cartesian3.fromDegrees(lon, lat, bufferCenterHeight),
269
+ point: {
270
+ pixelSize: 10,
271
+ color: Cesium.Color.CYAN,
272
+ outlineColor: Cesium.Color.WHITE,
273
+ outlineWidth: 2
274
+ },
275
+ properties: {
276
+ type: "point",
277
+ settings
278
+ }
279
+ };
280
+ if (bufferType === "sphere") {
281
+ // Cesium 没有 ellipsoid 实体属性,用 box 代替(球体近似),有ellipsoid球体
282
+
283
+ const size = bufferDistance * 2;
284
+ entityOptions.ellipsoid = {
285
+ radii: new Cesium.Cartesian3(bufferDistance, bufferDistance, bufferDistance),
286
+ material: Cesium.Color.CYAN.withAlpha(0.3)
287
+ };
288
+ } else if (bufferType === "cube") {
289
+ entityOptions.box = {
290
+ dimensions: new Cesium.Cartesian3(bufferDistance * 2, bufferDistance * 2, upperHeight),
291
+ material: Cesium.Color.CYAN.withAlpha(0.3)
292
+ };
293
+ } else if (bufferType === "cylinder") {
294
+ entityOptions.cylinder = {
295
+ length: upperHeight,
296
+ topRadius: bufferDistance,
297
+ bottomRadius: bufferDistance,
298
+ material: Cesium.Color.CYAN.withAlpha(0.3)
299
+ };
300
+ } else if (bufferType === "cone") {
301
+ entityOptions.cylinder = {
302
+ length: upperHeight,
303
+ topRadius: 0,
304
+ bottomRadius: bufferDistance,
305
+ material: Cesium.Color.CYAN.withAlpha(0.3)
306
+ };
307
+ }
308
+ if (this._dataSource) {
309
+ return this._dataSource.entities.add(entityOptions);
310
+ }
311
+ return this._viewer.entities.add(entityOptions);
312
+ }
313
+ _computeCircle(radius) {
314
+ const positions = [];
315
+ for (let i = 0; i < 360; i++) {
316
+ const radians = Cesium.Math.toRadians(i);
317
+ positions.push(new Cesium.Cartesian2(radius * Math.cos(radians), radius * Math.sin(radians)));
318
+ }
319
+ return positions;
320
+ }
321
+ /**
322
+ * @description 创建线实体(含缓冲走廊)
323
+ * @private
324
+ */
325
+ _createPolylineEntity(positions, settings = {}) {
326
+ const bufferDistance = settings.bufferDistance || 500;
327
+ const upperHeight = settings.upperHeight || 120;
328
+ const lowerHeight = settings.lowerHeight || 0;
329
+ const bufferType = settings.bufferType || "cube";
330
+ const lineColor = settings.lineColor || "#0000FF";
331
+ const lineWidth = settings.lineWidth || 2;
332
+ const entityOptions = {
333
+ polyline: {
334
+ positions: positions,
335
+ width: lineWidth,
336
+ material: Cesium.Color.fromCssColorString(lineColor),
337
+ clampToGround: true
338
+ },
339
+ properties: {
340
+ type: "polyline",
341
+ settings
342
+ }
343
+ };
344
+ if (bufferType === "cube") {
345
+ entityOptions.corridor = {
346
+ positions: positions,
347
+ width: bufferDistance * 2,
348
+ height: lowerHeight,
349
+ extrudedHeight: lowerHeight + upperHeight,
350
+ material: Cesium.Color.fromCssColorString(lineColor).withAlpha(0.25),
351
+ cornerType: Cesium.CornerType.ROUNDED
352
+ };
353
+ } else if (bufferType === "cylinder") {
354
+ entityOptions.polylineVolume = {
355
+ positions: positions,
356
+ shape: this._computeCircle(bufferDistance * 0.5),
357
+ material: Cesium.Color.fromCssColorString(lineColor).withAlpha(0.25)
358
+ };
359
+ }
360
+ if (this._dataSource) {
361
+ return this._dataSource.entities.add(entityOptions);
362
+ }
363
+ return this._viewer.entities.add(entityOptions);
364
+ }
365
+
366
+ /**
367
+ * @description 创建面实体
368
+ * @private
369
+ */
370
+ _createPolygonEntity(positions, settings = {}) {
371
+ const fillColor = settings.fillColor || "#00FF00";
372
+ const fillOpacity = (settings.fillOpacity || 50) / 100;
373
+ const outlineColor = settings.outlineColor || "#000000";
374
+ const outlineWidth = settings.outlineWidth || 1;
375
+ const upperHeight = settings.upperHeight || 20;
376
+ const lowerHeight = settings.lowerHeight || 0;
377
+ const bufferDistance = settings.bufferDistance;
378
+
379
+ // 根据 bufferDistance 对原始多边形进行向外扩展
380
+ const expandedPositions = bufferDistance > 0 ? this._expandPolygon(positions, bufferDistance) : positions;
381
+ const entityOptions = {
382
+ polygon: {
383
+ hierarchy: new Cesium.PolygonHierarchy(expandedPositions),
384
+ material: Cesium.Color.fromCssColorString(fillColor).withAlpha(fillOpacity),
385
+ outline: true,
386
+ outlineColor: Cesium.Color.fromCssColorString(outlineColor),
387
+ outlineWidth: outlineWidth,
388
+ height: lowerHeight,
389
+ extrudedHeight: lowerHeight + upperHeight,
390
+ heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND,
391
+ classificationType: Cesium.ClassificationType.BOTH
392
+ },
393
+ properties: {
394
+ type: "polygon",
395
+ settings
396
+ }
397
+ };
398
+ if (this._dataSource) {
399
+ return this._dataSource.entities.add(entityOptions);
400
+ }
401
+ return this._viewer.entities.add(entityOptions);
402
+ }
403
+
404
+ // ==================== 几何工具方法 ====================
405
+
406
+ /**
407
+ * @description 将多边形顶点按照缓冲距离向外扩展
408
+ * @param {Array<Cesium.Cartesian3>} positions 原始多边形顶点
409
+ * @param {number} bufferDistance 缓冲距离(米)
410
+ * @returns {Array<Cesium.Cartesian3>} 扩展后的顶点
411
+ * @private
412
+ */
413
+ _expandPolygon(positions, bufferDistance) {
414
+ if (!positions || positions.length < 3 || !bufferDistance || bufferDistance <= 0) {
415
+ return positions;
416
+ }
417
+
418
+ // 1. 所有顶点转 cartographic
419
+ const cartos = positions.map(pos => Cesium.Cartographic.fromCartesian(pos));
420
+
421
+ // 2. 计算质心(经纬度平均)
422
+ const lonSum = cartos.reduce((s, c) => s + c.longitude, 0);
423
+ const latSum = cartos.reduce((s, c) => s + c.latitude, 0);
424
+ const count = cartos.length;
425
+ const centroidLon = lonSum / count;
426
+ const centroidLat = latSum / count;
427
+
428
+ // 3. 米 → 弧度换算(地球平均半径 ≈ 6378137 m)
429
+ const earthRadius = 6378137;
430
+ const bufferRadLat = bufferDistance / earthRadius;
431
+ const bufferRadLon = bufferDistance / (earthRadius * Math.cos(centroidLat));
432
+
433
+ // 4. 每个顶点沿质心方向外扩
434
+ return cartos.map(c => {
435
+ const dx = c.longitude - centroidLon;
436
+ const dy = c.latitude - centroidLat;
437
+ const dist = Math.sqrt(dx * dx + dy * dy);
438
+ if (dist < 1e-12) {
439
+ return Cesium.Cartesian3.fromRadians(c.longitude, c.latitude, c.height);
440
+ }
441
+ const normDx = dx / dist;
442
+ const normDy = dy / dist;
443
+ return Cesium.Cartesian3.fromRadians(c.longitude + normDx * bufferRadLon, c.latitude + normDy * bufferRadLat, c.height);
444
+ });
445
+ }
446
+
447
+ // ==================== GeoJSON 处理 ====================
448
+
449
+ /**
450
+ * @description 从GeoJSON创建实体
451
+ * @param {Object} geoJson GeoJSON对象
452
+ * @param {Object} settings 图元设置
453
+ * @returns {Array<Cesium.Entity>} 创建的实体数组
454
+ */
455
+ loadFromGeoJSON(geoJson, settings = {}, trackInDrawing = false) {
456
+ const entities = [];
457
+ const features = geoJson.type === "FeatureCollection" ? geoJson.features : [geoJson];
458
+ features.forEach(feature => {
459
+ const geometry = feature.geometry;
460
+ if (!geometry) return;
461
+ if (geometry.type === "Point") {
462
+ const pos = this._geojsonCoordToCartesian(geometry.coordinates);
463
+ entities.push(this._createPointEntity(pos, settings));
464
+ } else if (geometry.type === "LineString") {
465
+ const positions = geometry.coordinates.map(c => this._geojsonCoordToCartesian(c));
466
+ entities.push(this._createPolylineEntity(positions, settings));
467
+ } else if (geometry.type === "Polygon" && geometry.coordinates[0]) {
468
+ const positions = geometry.coordinates[0].map(c => this._geojsonCoordToCartesian(c));
469
+ entities.push(this._createPolygonEntity(positions, settings));
470
+ } else if (geometry.type === "MultiLineString") {
471
+ geometry.coordinates.forEach(lineCoords => {
472
+ const positions = lineCoords.map(c => this._geojsonCoordToCartesian(c));
473
+ entities.push(this._createPolylineEntity(positions, settings));
474
+ });
475
+ } else if (geometry.type === "MultiPolygon") {
476
+ geometry.coordinates.forEach(polygonCoords => {
477
+ if (polygonCoords[0]) {
478
+ const positions = polygonCoords[0].map(c => this._geojsonCoordToCartesian(c));
479
+ entities.push(this._createPolygonEntity(positions, settings));
480
+ }
481
+ });
482
+ }
483
+ });
484
+
485
+ // 仅在需要跟踪绘图状态时才加入 _drawingEntities(如导入 GeoJSON)
486
+ // 保存/加载已有要素时不加入,避免 clearDraw 误删
487
+ if (trackInDrawing) {
488
+ this._drawingEntities.push(...entities);
489
+ }
490
+ return entities;
491
+ }
492
+
493
+ /**
494
+ * @description GeoJSON坐标转Cartesian3
495
+ * @private
496
+ */
497
+ _geojsonCoordToCartesian(coord) {
498
+ const lon = coord[0];
499
+ const lat = coord[1];
500
+ const height = coord[2] || 0;
501
+ return Cesium.Cartesian3.fromDegrees(lon, lat, height);
502
+ }
503
+
504
+ /**
505
+ * @description 实体转GeoJSON
506
+ */
507
+ entityToGeoJSON(entity) {
508
+ if (!entity) return null;
509
+ const props = entity.properties?.getValue(Cesium.JulianDate.now()) || {};
510
+ if (props.type === "point") {
511
+ return this._pointToGeoJSON(entity);
512
+ } else if (props.type === "polyline") {
513
+ return this._polylineToGeoJSON(entity);
514
+ } else if (props.type === "polygon") {
515
+ return this._polygonToGeoJSON(entity);
516
+ }
517
+ return null;
518
+ }
519
+
520
+ /**
521
+ * @description 点实体转GeoJSON Point
522
+ * @private
523
+ */
524
+ _pointToGeoJSON(entity) {
525
+ const position = entity.position?.getValue(Cesium.JulianDate.now());
526
+ if (!position) return null;
527
+ const carto = Cesium.Cartographic.fromCartesian(position);
528
+ return {
529
+ type: "Feature",
530
+ properties: {},
531
+ geometry: {
532
+ type: "Point",
533
+ coordinates: [Cesium.Math.toDegrees(carto.longitude), Cesium.Math.toDegrees(carto.latitude), carto.height]
534
+ }
535
+ };
536
+ }
537
+
538
+ /**
539
+ * @description 线实体转GeoJSON LineString
540
+ * @private
541
+ */
542
+ _polylineToGeoJSON(entity) {
543
+ const positions = entity.polyline?.positions?._value;
544
+ if (!positions || positions.length < 2) return null;
545
+ const coords = positions.map(p => {
546
+ const c = Cesium.Cartographic.fromCartesian(p);
547
+ return [Cesium.Math.toDegrees(c.longitude), Cesium.Math.toDegrees(c.latitude), c.height];
548
+ });
549
+ return {
550
+ type: "Feature",
551
+ properties: {},
552
+ geometry: {
553
+ type: "LineString",
554
+ coordinates: coords
555
+ }
556
+ };
557
+ }
558
+
559
+ /**
560
+ * @description 面实体转GeoJSON Polygon
561
+ * @private
562
+ */
563
+ _polygonToGeoJSON(entity) {
564
+ const hierarchy = entity.polygon?.hierarchy?.getValue(Cesium.JulianDate.now());
565
+ if (!hierarchy || !hierarchy.positions || hierarchy.positions.length < 3) return null;
566
+ const coords = hierarchy.positions.map(p => {
567
+ const c = Cesium.Cartographic.fromCartesian(p);
568
+ return [Cesium.Math.toDegrees(c.longitude), Cesium.Math.toDegrees(c.latitude), c.height];
569
+ });
570
+ coords.push(coords[0]); // 闭合多边形
571
+ return {
572
+ type: "Feature",
573
+ properties: {},
574
+ geometry: {
575
+ type: "Polygon",
576
+ coordinates: [coords]
577
+ }
578
+ };
579
+ }
580
+ _positionToPointGeoJSON(position) {
581
+ const c = Cesium.Cartographic.fromCartesian(position);
582
+ return {
583
+ type: "Feature",
584
+ geometry: {
585
+ type: "Point",
586
+ coordinates: [Cesium.Math.toDegrees(c.longitude), Cesium.Math.toDegrees(c.latitude), c.height]
587
+ }
588
+ };
589
+ }
590
+ /**
591
+ * @description 坐标数组转线GeoJSON
592
+ * @private
593
+ */
594
+ _positionsToLineGeoJSON(positions) {
595
+ const coords = positions.map(p => {
596
+ const c = Cesium.Cartographic.fromCartesian(p);
597
+ return [Cesium.Math.toDegrees(c.longitude), Cesium.Math.toDegrees(c.latitude), c.height];
598
+ });
599
+ return {
600
+ type: "Feature",
601
+ properties: {},
602
+ geometry: {
603
+ type: "LineString",
604
+ coordinates: coords
605
+ }
606
+ };
607
+ }
608
+
609
+ /**
610
+ * @description 坐标数组转面GeoJSON
611
+ * @private
612
+ */
613
+ _positionsToPolygonGeoJSON(positions) {
614
+ const coords = positions.map(p => {
615
+ const c = Cesium.Cartographic.fromCartesian(p);
616
+ return [Cesium.Math.toDegrees(c.longitude), Cesium.Math.toDegrees(c.latitude), c.height];
617
+ });
618
+ coords.push(coords[0]); // 闭合
619
+ return {
620
+ type: "Feature",
621
+ properties: {},
622
+ geometry: {
623
+ type: "Polygon",
624
+ coordinates: [coords]
625
+ }
626
+ };
627
+ }
628
+
629
+ // ==================== 网格化显示 ====================
630
+
631
+ /**
632
+ * @description 切换网格化显示
633
+ * @param {string} featureId 要素ID
634
+ * @param {boolean} show 是否显示网格
635
+ * @param {Object} settings 图元设置
636
+ */
637
+ toggleGridDisplay(featureInfo, show, settings) {
638
+ this._removeGridEntities(featureInfo.id);
639
+ if (!show) return;
640
+ const gridLevel = settings.gridLevel || 120;
641
+ const gridEntities = [];
642
+
643
+ // TODO: 根据要素类型生成网格 - 需要传入要素实体
644
+ // 此处预留接口,由调用方传入实体
645
+ this.showGridOccupancyQuery(featureInfo, settings).then(gridPositions => {
646
+ // gridPositions.forEach((cellBounds) => {
647
+ // const entity = this._createGridCell(cellBounds, settings);
648
+ // gridEntities.push(entity);
649
+ });
650
+ this._gridEntities.set(featureId, gridEntities);
651
+ }
652
+ showGridOccupancyQuery(featureInfo) {
653
+ let that = this;
654
+ let queryUrl = "http://172.16.1.204:9600/kqgis/rest/services/qqq/gridflow";
655
+ let level = 23,
656
+ serviceName = "qqq";
657
+ let name = featureInfo.code; //featureInfo.name
658
+ if (this._htmlTag) this._htmlTag.destroy();
659
+ // http://172.16.3.103:8079/bigdataApi/rest/services/xgsjlxx_grid/gridflow/airspaceOccupyRegion
660
+ //POST
661
+ let url = queryUrl + `/airspaceByName?name=${name}&servicename=${serviceName}`;
662
+ fetch('http://172.16.1.204:9600/kqgis/rest/services/qqq/gridflow/airspacePage', {
663
+ method: "POST"
664
+ }).then(response => {});
665
+ fetch(url, {
666
+ method: "GET"
667
+ }).then(response => {
668
+ if (!response.ok) {
669
+ throw new Error("Network response was not ok");
670
+ }
671
+ return response.json(); // 解析JSON数据
672
+ }).then(data => {
673
+ if (data.code == 200) {
674
+ if (data.content.code) {
675
+ // console.log(data.content.types);
676
+ let code = data.content.code;
677
+ let instanc = that.getGridInstanc(code);
678
+ if (instanc) {
679
+ if (that._clickGirdPrimitive) {
680
+ that._clickGirdPrimitive.geometryInstances = instanc;
681
+ that._clickGirdPrimitive._state = Cesium.PrimitiveState.READY;
682
+ that._clickGirdPrimitive.updateVertex = true;
683
+ } else {
684
+ that._clickGirdPrimitive = that._viewer.scene.primitives.add(new Cesium.Primitive({
685
+ geometryInstances: instanc,
686
+ appearance: new Cesium.MaterialAppearance({
687
+ flat: true,
688
+ translucent: false,
689
+ material: new Cesium.Material({
690
+ fabric: {
691
+ type: "Color",
692
+ uniforms: {
693
+ color: Cesium.Color.RED.withAlpha(0.3)
694
+ }
695
+ }
696
+ }),
697
+ renderState: {
698
+ depthTest: {
699
+ enabled: true
700
+ }
701
+ // depthMask: false
702
+ }
703
+ }),
704
+ cull: false,
705
+ asynchronous: false
706
+ }));
707
+ }
708
+ let gridcode = code.substring(0, (code.length + 1) / 2);
709
+ let type = data.content.types.map(item => item.description);
710
+ //显示网格暂用情况
711
+ that._htmlTag = new Cesium.Kq3dDragableHtmlTag(that._viewer, {
712
+ showLine: true,
713
+ lineStyle: "solid",
714
+ lineWidth: 2,
715
+ lineColor: Cesium.Color.DARKCYAN,
716
+ position: position,
717
+ panelOffset: [20, 20],
718
+ html: `<div class='grid_info'>
719
+ <span id='grid_info_close' class='close'>×</span>
720
+ <div class='title'>${that._language.value.webgl["gridOccupancyQuery"]}</div>
721
+ <div class='attr'>${that._language.value.common["gridCode"]} : ${gridcode}</div>
722
+ <div class='attr'>${that._language.value.webgl["occupancyType"]} : ${type.join(",")}</div>
723
+ </div>`
724
+ });
725
+ setTimeout(() => {
726
+ let close = document.querySelector("#grid_info_close");
727
+ close.addEventListener("click", function () {
728
+ if (that._htmlTag) {
729
+ that._htmlTag.destroy();
730
+ that._htmlTag = null;
731
+ }
732
+ if (that._clickGirdPrimitive) {
733
+ that._clickGirdPrimitive.geometryInstances = [];
734
+ that._clickGirdPrimitive._state = Cesium.PrimitiveState.READY;
735
+ that._clickGirdPrimitive.updateVertex = true;
736
+ }
737
+ });
738
+ }, 1000);
739
+ }
740
+ }
741
+ }
742
+ }).catch(error => {
743
+ console.error("There was a problem with your fetch operation:", error);
744
+ });
745
+ }
746
+ getGridOccupancy(featureInfo) {
747
+ let that = this;
748
+ let queryUrl = "http://172.16.1.204:9600/kqgis/rest/services/qqq/gridflow";
749
+ let level = 23,
750
+ serviceName = "qqq";
751
+ let name = featureInfo.code; //featureInfo.name
752
+ if (this._htmlTag) this._htmlTag.destroy();
753
+ // http://172.16.3.103:8079/bigdataApi/rest/services/xgsjlxx_grid/gridflow/airspaceOccupyRegion
754
+ //POST
755
+ let url = queryUrl + `/airspaceOccupyRegion?name=${name}&servicename=${serviceName}`;
756
+ fetch(url, {
757
+ method: "POST"
758
+ }).then(response => {
759
+ if (!response.ok) {
760
+ throw new Error("Network response was not ok");
761
+ }
762
+ return response.json(); // 解析JSON数据
763
+ }).then(data => {
764
+ if (data.code == 200) {
765
+ if (data.content.code) {
766
+ // console.log(data.content.types);
767
+ let code = data.content.code;
768
+ let instanc = that.getGridInstanc(code);
769
+ }
770
+ }
771
+ }).catch(error => {
772
+ console.error("There was a problem with your fetch operation:", error);
773
+ });
774
+ }
775
+ getGridInstanc(code) {
776
+ let index = (code.length + 1) / 2;
777
+ let grid = Module.decodeGeoSotGBCodeToBox(code.substring(0, index), code.substring(index));
778
+ if (grid) {
779
+ if (grid.minx < -180) grid.minx = -180;
780
+ if (grid.maxx > 180) grid.maxx = 180;
781
+ if (grid.miny < -90) grid.miny = -90;
782
+ if (grid.maxy > 90) grid.maxy = 90;
783
+ const minLon = Math.min(grid.minx, grid.maxx);
784
+ const minLat = Math.min(grid.miny, grid.maxy);
785
+ const maxLon = Math.max(grid.minx, grid.maxx);
786
+ const maxLat = Math.max(grid.miny, grid.maxy);
787
+ const minz = grid.minz;
788
+ const maxz = grid.maxz;
789
+ let rectangle = new Cesium.RectangleGeometry({
790
+ ellipsoid: Cesium.Ellipsoid.WGS84,
791
+ rectangle: Cesium.Rectangle.fromDegrees(minLon, minLat, maxLon, maxLat),
792
+ height: minz,
793
+ extrudedHeight: maxz
794
+ });
795
+ let gridInstanc = new Cesium.GeometryInstance({
796
+ geometry: rectangle
797
+ });
798
+ return gridInstanc;
799
+ }
800
+ }
801
+
802
+ /**
803
+ * @description 移除网格实体
804
+ * @private
805
+ */
806
+ _removeGridEntities(featureId) {
807
+ const entityIds = this._gridEntities.get(featureId);
808
+ if (entityIds) {
809
+ entityIds.forEach(id => {
810
+ const entity = this._viewer?.entities.getById(id);
811
+ if (entity) this._viewer.entities.remove(entity);
812
+ });
813
+ this._gridEntities.delete(featureId);
814
+ }
815
+ }
816
+
817
+ /**
818
+ * @description 在面内生成网格单元
819
+ * @private
820
+ */
821
+ _generateGridInPolygon(boundaryPositions, gridSizeMeters) {
822
+ // TODO: 实现面内网格化算法(基于Delaunay三角剖分或四叉树)
823
+ return [];
824
+ }
825
+
826
+ /**
827
+ * @description 沿线生成网格缓冲
828
+ * @private
829
+ */
830
+ _generateGridAlongLine(positions, bufferSize, gridSizeMeters) {
831
+ // TODO: 实现沿线网格化算法
832
+ return [];
833
+ }
834
+
835
+ /**
836
+ * @description 在点周围生成网格
837
+ * @private
838
+ */
839
+ _generateGridAroundPoint(center, radius, gridSizeMeters) {
840
+ // TODO: 实现点周围网格化算法
841
+ return [];
842
+ }
843
+
844
+ /**
845
+ * @description 创建网格单元实体
846
+ * @private
847
+ */
848
+ _createGridCell(cellBounds, settings) {
849
+ return this._viewer.entities.add({
850
+ rectangle: {
851
+ coordinates: Cesium.Rectangle.fromDegrees(...cellBounds),
852
+ material: Cesium.Color.CYAN.withAlpha(0.15),
853
+ outline: true,
854
+ outlineColor: Cesium.Color.CYAN.withAlpha(0.4),
855
+ outlineWidth: 1,
856
+ height: settings.lowerHeight || 0,
857
+ extrudedHeight: (settings.lowerHeight || 0) + (settings.upperHeight || 100)
858
+ }
859
+ });
860
+ }
861
+
862
+ // ==================== 工具方法 ====================
863
+
864
+ /**
865
+ * @description 拾取鼠标位置的地理坐标
866
+ * @private
867
+ */
868
+ _pickPosition(screenPos) {
869
+ if (!this._viewer) return null;
870
+ const ray = this._viewer.camera.getPickRay(screenPos);
871
+ if (!ray) return null;
872
+ const position = this._viewer.scene.globe.pick(ray, this._viewer.scene);
873
+ if (!position) {
874
+ return this._viewer.camera.pickEllipsoid(screenPos, this._viewer.scene.globe.ellipsoid);
875
+ }
876
+ return position;
877
+ }
878
+
879
+ /**
880
+ * @description 清除当前绘制
881
+ */
882
+ clearDraw() {
883
+ if (this._currentDrawHandler) {
884
+ this._currentDrawHandler.destroy();
885
+ this._currentDrawHandler = null;
886
+ }
887
+ this._activeDrawMode = null;
888
+ this._drawingEntities.forEach(entity => {
889
+ if (entity) {
890
+ // 实体可能添加到 dataSource.entities(_createXxxEntity)或 viewer.entities(预览实体)
891
+ if (this._dataSource) {
892
+ this._dataSource.entities.remove(entity);
893
+ }
894
+ this._viewer.entities.remove(entity);
895
+ }
896
+ });
897
+ this._drawingEntities = [];
898
+ }
899
+
900
+ /**
901
+ * @description 缩放到实体
902
+ */
903
+ zoomToEntity(entityOrId) {
904
+ let entity = entityOrId;
905
+ if (typeof entityOrId === "string") {
906
+ entity = this._viewer.entities.getById(entityOrId);
907
+ }
908
+ if (entity) {
909
+ this._viewer.zoomTo(entity);
910
+ return true;
911
+ }
912
+ return false;
913
+ }
914
+
915
+ /**
916
+ * @description 更新要素实体可见性
917
+ * @param {Object} feature 要素对象(含 entityIds)
918
+ * @param {boolean} checked 是否可见
919
+ */
920
+ updateFeatureVisibility(feature, checked) {
921
+ if (!this._viewer || !feature || !feature.entityIds) return;
922
+ feature.entityIds.forEach(id => {
923
+ // const entity = this._viewer.entities.getById(id);
924
+ // 通过_drawingEntities更新可见性,避免直接操作实体
925
+ // const entity= this._drawingEntities.find((e) => e.id === id);
926
+ const entity = this._dataSource.entities.getById(id);
927
+ if (entity) entity.show = checked;
928
+ });
929
+ }
930
+
931
+ /**
932
+ * @description 销毁ViewModel
933
+ */
934
+ destroy() {
935
+ this.clearDraw();
936
+ this._gridEntities.forEach((_, featureId) => {
937
+ this._removeGridEntities(featureId);
938
+ });
939
+ this._gridEntities.clear();
940
+ if (this._dataSource && this._viewer) {
941
+ this._viewer.dataSources.remove(this._dataSource);
942
+ }
943
+ this._viewer = null;
944
+ this._dataSource = null;
945
+ }
946
+
947
+ // ==================== 地图操作(供 Vue 组件调用)====================
948
+
949
+ /**
950
+ * @description 缩放到要素(通过 feature 对象)
951
+ * @param {Object} feature 要素对象(含 geojson)
952
+ * @returns {boolean}
953
+ */
954
+ zoomToFeature(feature) {
955
+ if (!this._viewer || !feature || !feature.geojson) return false;
956
+ try {
957
+ const geojson = typeof feature.geojson === "string" ? JSON.parse(feature.geojson) : feature.geojson;
958
+ const positions = this._extractPositionsFromGeoJSON(geojson);
959
+ if (positions && positions.length > 0) {
960
+ this._viewer.camera.flyTo({
961
+ destination: Cesium.Rectangle.fromCartographicArray(positions),
962
+ duration: 1.5
963
+ });
964
+ return true;
965
+ }
966
+ } catch (e) {
967
+ console.error("缩放失败:", e);
968
+ }
969
+ return false;
970
+ }
971
+
972
+ /**
973
+ * @description 删除要素实体(通过 entityIds 数组)
974
+ * @param {Array<string>} entityIds
975
+ */
976
+ removeFeatureEntities(entityIds) {
977
+ if (!this._viewer || !entityIds) return;
978
+ entityIds.forEach(id => {
979
+ // 优先从 dataSource 中移除
980
+ let entity = null;
981
+ if (this._dataSource) {
982
+ entity = this._dataSource.entities.getById(id);
983
+ if (entity) {
984
+ this._dataSource.entities.remove(entity);
985
+ }
986
+ }
987
+ // 如果 dataSource 中没找到,尝试从 viewer.entities 中移除
988
+ if (!entity) {
989
+ entity = this._viewer.entities.getById(id);
990
+ if (entity) {
991
+ this._viewer.entities.remove(entity);
992
+ }
993
+ }
994
+ // 从 _drawingEntities 中移除
995
+ const drawingIndex = this._drawingEntities.findIndex(e => e.id === id);
996
+ if (drawingIndex !== -1) {
997
+ this._drawingEntities.splice(drawingIndex, 1);
998
+ }
999
+ });
1000
+ }
1001
+
1002
+ /**
1003
+ * @description 移除当前绘制中的实体
1004
+ */
1005
+ removeCurrentDrawingEntities() {
1006
+ this._drawingEntities.forEach(entity => {
1007
+ if (entity) {
1008
+ // 优先从 dataSource 中移除(_createXxxEntity 添加到 dataSource)
1009
+ if (this._dataSource) {
1010
+ this._dataSource.entities.remove(entity);
1011
+ }
1012
+ // 同时尝试从 viewer.entities 中移除(预览实体添加到 viewer.entities)
1013
+ this._viewer.entities.remove(entity);
1014
+ }
1015
+ });
1016
+ this._drawingEntities = [];
1017
+ }
1018
+
1019
+ /**
1020
+ * @description 从 GeoJSON 提取 Cartographic 数组(私有工具方法)
1021
+ * @private
1022
+ */
1023
+ _extractPositionsFromGeoJSON(geojson) {
1024
+ const positions = [];
1025
+ const features = geojson.type === "FeatureCollection" ? geojson.features : [geojson];
1026
+ features.forEach(f => {
1027
+ const geom = f.type === "Feature" ? f.geometry : f;
1028
+ if (!geom) return;
1029
+ const coords = geom.coordinates;
1030
+ if (geom.type === "Point") {
1031
+ positions.push(Cesium.Cartographic.fromDegrees(coords[0], coords[1]));
1032
+ } else if (geom.type === "LineString") {
1033
+ coords.forEach(c => positions.push(Cesium.Cartographic.fromDegrees(c[0], c[1])));
1034
+ } else if (geom.type === "Polygon" && coords[0]) {
1035
+ coords[0].forEach(c => positions.push(Cesium.Cartographic.fromDegrees(c[0], c[1])));
1036
+ }
1037
+ });
1038
+ return positions;
1039
+ }
1040
+ getEntityById(id) {
1041
+ // 优先从 dataSource 中获取实体
1042
+ if (this._dataSource) {
1043
+ const entity = this._dataSource.entities.getById(id);
1044
+ if (entity) return entity;
1045
+ }
1046
+ // 如果 dataSource 中没找到,尝试从 viewer.entities 中获取
1047
+ return this._viewer.entities.getById(id);
1048
+ }
1049
+ }
1050
+ exports["default"] = LowAltitudeFeatureViewModel;
1051
+
1052
+ /***/ }),
1053
+
1054
+ /***/ 6663:
1055
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1056
+
1057
+
1058
+
1059
+ var _interopRequireDefault = __webpack_require__(33751);
1060
+ Object.defineProperty(exports, "B", ({
1061
+ value: true
1062
+ }));
1063
+ exports.A = void 0;
1064
+ var _indexFull = __webpack_require__(56363);
1065
+ var _render = _interopRequireDefault(__webpack_require__(74383));
1066
+ var _default = exports.A = {
1067
+ name: "KqSlider",
1068
+ defaultComponent: _indexFull.ElSlider,
1069
+ mixins: [_render.default],
1070
+ setup(props, context) {
1071
+ _render.default.setup && _render.default.setup(props, context);
1072
+ }
1073
+ };
1074
+
1075
+ /***/ }),
1076
+
1077
+ /***/ 7955:
1078
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1079
+
1080
+ // ESM COMPAT FLAG
1081
+ __webpack_require__.r(__webpack_exports__);
1082
+
1083
+ // EXPORTS
1084
+ __webpack_require__.d(__webpack_exports__, {
1085
+ __esModule: function() { return /* reexport */ Formvue_type_script_lang_js/* __esModule */.B; },
1086
+ "default": function() { return /* binding */ Form; }
1087
+ });
1088
+
1089
+ // 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/common/_ui/form/Form.vue?vue&type=script&lang=js
1090
+ var Formvue_type_script_lang_js = __webpack_require__(75797);
1091
+ ;// ./src/common/_ui/form/Form.vue?vue&type=script&lang=js
1092
+
1093
+ ;// ./src/common/_ui/form/Form.vue
1094
+
1095
+
1096
+
1097
+ const __exports__ = Formvue_type_script_lang_js/* default */.A;
1098
+
1099
+ /* harmony default export */ var Form = (__exports__);
1100
+
1101
+ /***/ }),
1102
+
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
+ /***/ 14464:
1156
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1157
+
1158
+
1159
+
1160
+ var _interopRequireDefault = __webpack_require__(33751);
1161
+ Object.defineProperty(exports, "__esModule", ({
1162
+ value: true
1163
+ }));
1164
+ exports["default"] = void 0;
1165
+ var _Tree = _interopRequireDefault(__webpack_require__(65310));
1166
+ var _init = _interopRequireDefault(__webpack_require__(20455));
1167
+ var _KqGIS = __webpack_require__(99602);
1168
+ /*
1169
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
1170
+ * All rights reserved.
1171
+ */
1172
+
1173
+ _Tree.default.install = (Vue, opts) => {
1174
+ (0, _init.default)(Vue, opts);
1175
+ Vue.component(_Tree.default.name, _Tree.default);
1176
+ };
1177
+ var _default = exports["default"] = _Tree.default;
1178
+ _KqGIS.kq_npm_client_common_vue.KqTree = _Tree.default;
1179
+
1180
+ /***/ }),
1181
+
1182
+ /***/ 15255:
1183
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1184
+
1185
+
1186
+
1187
+ var _interopRequireDefault = __webpack_require__(33751);
1188
+ Object.defineProperty(exports, "B", ({
1189
+ value: true
1190
+ }));
1191
+ exports.A = void 0;
1192
+ var _indexFull = __webpack_require__(56363);
1193
+ var _render = _interopRequireDefault(__webpack_require__(74383));
1194
+ var _default = exports.A = {
1195
+ name: "KqTooltip",
1196
+ defaultComponent: _indexFull.ElTooltip,
1197
+ mixins: [_render.default],
1198
+ setup(props, context) {
1199
+ _render.default.setup && _render.default.setup(props, context);
1200
+ }
1201
+ };
1202
+
1203
+ /***/ }),
1204
+
1205
+ /***/ 16676:
1206
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1207
+
1208
+ // ESM COMPAT FLAG
1209
+ __webpack_require__.r(__webpack_exports__);
1210
+
1211
+ // EXPORTS
1212
+ __webpack_require__.d(__webpack_exports__, {
1213
+ __esModule: function() { return /* reexport */ Tooltipvue_type_script_lang_js/* __esModule */.B; },
1214
+ "default": function() { return /* binding */ Tooltip; }
1215
+ });
1216
+
1217
+ // 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/common/_ui/tooltip/Tooltip.vue?vue&type=script&lang=js
1218
+ var Tooltipvue_type_script_lang_js = __webpack_require__(15255);
1219
+ ;// ./src/common/_ui/tooltip/Tooltip.vue?vue&type=script&lang=js
1220
+
1221
+ ;// ./src/common/_ui/tooltip/Tooltip.vue
1222
+
1223
+
1224
+
1225
+ const __exports__ = Tooltipvue_type_script_lang_js/* default */.A;
1226
+
1227
+ /* harmony default export */ var Tooltip = (__exports__);
1228
+
1229
+ /***/ }),
1230
+
1231
+ /***/ 19000:
1232
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1233
+
1234
+
1235
+
1236
+ var _interopRequireDefault = __webpack_require__(33751);
1237
+ Object.defineProperty(exports, "B", ({
1238
+ value: true
1239
+ }));
1240
+ exports.A = void 0;
1241
+ var _indexFull = __webpack_require__(56363);
1242
+ var _render = _interopRequireDefault(__webpack_require__(74383));
1243
+ var _default = exports.A = {
1244
+ name: "KqFormItem",
1245
+ defaultComponent: _indexFull.ElFormItem,
1246
+ mixins: [_render.default],
1247
+ setup(props, context) {
1248
+ _render.default.setup && _render.default.setup(props, context);
1249
+ }
1250
+ };
1251
+
1252
+ /***/ }),
1253
+
1254
+ /***/ 20064:
1255
+ /***/ (function(module) {
1256
+
1257
+ module.exports = __WEBPACK_EXTERNAL_MODULE__20064__;
1258
+
1259
+ /***/ }),
1260
+
1261
+ /***/ 20455:
1262
+ /***/ (function(module) {
1263
+
1264
+ module.exports = __WEBPACK_EXTERNAL_MODULE__20455__;
1265
+
1266
+ /***/ }),
1267
+
1268
+ /***/ 22295:
1269
+ /***/ (function(module) {
1270
+
1271
+ module.exports = require("element-plus");
1272
+
1273
+ /***/ }),
1274
+
1275
+ /***/ 22686:
1276
+ /***/ (function(module) {
1277
+
1278
+ module.exports = __WEBPACK_EXTERNAL_MODULE__22686__;
1279
+
1280
+ /***/ }),
1281
+
1282
+ /***/ 23043:
1283
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1284
+
1285
+
1286
+
1287
+ var _interopRequireDefault = __webpack_require__(33751);
1288
+ Object.defineProperty(exports, "B", ({
1289
+ value: true
1290
+ }));
1291
+ exports.A = void 0;
1292
+ var _vue = __webpack_require__(50154);
1293
+ var _message = _interopRequireDefault(__webpack_require__(71323));
1294
+ var _messagebox = _interopRequireDefault(__webpack_require__(81328));
1295
+ var _iconsVue = __webpack_require__(29371);
1296
+ var _client_icons_vue = __webpack_require__(65698);
1297
+ var _util = __webpack_require__(42975);
1298
+ var _useGlobalConfig = __webpack_require__(22686);
1299
+ var _icon = _interopRequireDefault(__webpack_require__(80881));
1300
+ var _button = _interopRequireDefault(__webpack_require__(68676));
1301
+ var _checkbox = _interopRequireDefault(__webpack_require__(95857));
1302
+ var _elementPlus = __webpack_require__(22295);
1303
+ var _tooltip = _interopRequireDefault(__webpack_require__(60479));
1304
+ var _input = _interopRequireDefault(__webpack_require__(77228));
1305
+ var _select = _interopRequireWildcard(__webpack_require__(92936));
1306
+ var _collapse = _interopRequireWildcard(__webpack_require__(41219));
1307
+ var _slider = _interopRequireDefault(__webpack_require__(95765));
1308
+ var _upload = _interopRequireDefault(__webpack_require__(89393));
1309
+ var _divider = _interopRequireDefault(__webpack_require__(2409));
1310
+ var _form = _interopRequireWildcard(__webpack_require__(39466));
1311
+ var _tree = _interopRequireDefault(__webpack_require__(14464));
1312
+ var _scrollbar = _interopRequireDefault(__webpack_require__(62842));
1313
+ var _LowAltitudeFeatureViewModel = _interopRequireDefault(__webpack_require__(4494));
1314
+ var _gisUtils = __webpack_require__(20064);
1315
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
1316
+ const _hoisted_1 = {
1317
+ class: "kq-low-altitude-feature-box"
1318
+ };
1319
+ const _hoisted_2 = {
1320
+ class: "kq-laf-left-panel"
1321
+ };
1322
+ const _hoisted_3 = {
1323
+ class: "kq-laf-search"
1324
+ };
1325
+ const _hoisted_4 = {
1326
+ key: 0,
1327
+ class: "kq-laf-tree-label"
1328
+ };
1329
+ const _hoisted_5 = ["title"];
1330
+ const _hoisted_6 = ["title", "onClick"];
1331
+ const _hoisted_7 = {
1332
+ class: "kq-laf-tree-label kq-laf-feature-row"
1333
+ };
1334
+ const _hoisted_8 = ["title"];
1335
+ const _hoisted_9 = {
1336
+ class: "kq-laf-feature-actions"
1337
+ };
1338
+ const _hoisted_10 = {
1339
+ key: 0,
1340
+ class: "kq-laf-right-panel"
1341
+ };
1342
+ const _hoisted_11 = {
1343
+ class: "kq-laf-panel-header"
1344
+ };
1345
+ const _hoisted_12 = {
1346
+ class: "kq-laf-panel-title"
1347
+ };
1348
+ const _hoisted_13 = {
1349
+ class: "kq-laf-panel-body"
1350
+ };
1351
+ const _hoisted_14 = {
1352
+ class: "kq-laf-toolbar"
1353
+ };
1354
+ const _hoisted_15 = {
1355
+ class: "kq-laf-status-text"
1356
+ };
1357
+ const _hoisted_16 = {
1358
+ class: "kq-laf-slider-wrap",
1359
+ style: {
1360
+ "width": "285px"
1361
+ }
1362
+ };
1363
+ const _hoisted_17 = {
1364
+ class: "kq-laf-slider-wrap",
1365
+ style: {
1366
+ "width": "285px"
1367
+ }
1368
+ };
1369
+ const _hoisted_18 = {
1370
+ class: "kq-laf-slider-wrap",
1371
+ style: {
1372
+ "width": "285px"
1373
+ }
1374
+ };
1375
+ const _hoisted_19 = {
1376
+ class: "kq-laf-slider-wrap",
1377
+ style: {
1378
+ "width": "285px"
1379
+ }
1380
+ };
1381
+ const _hoisted_20 = {
1382
+ class: "kq-laf-panel-footer"
1383
+ };
1384
+ const __default__ = {
1385
+ name: "Kq3dLowAltitudeFeature"
1386
+ };
1387
+ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
1388
+ props: {
1389
+ mapTarget: {
1390
+ type: String
1391
+ },
1392
+ showShadow: {
1393
+ type: Boolean,
1394
+ default: true
1395
+ },
1396
+ loadLowAltitudeFeature: {
1397
+ type: Function
1398
+ },
1399
+ saveLowAltitudeFeature: {
1400
+ type: Function
1401
+ },
1402
+ deleteLowAltitudeFeature: {
1403
+ type: Function
1404
+ },
1405
+ position: [String, Object],
1406
+ showHeaderTemp: {
1407
+ type: Boolean,
1408
+ default: false
1409
+ },
1410
+ isCollapseHeaderTemp: {
1411
+ type: Boolean,
1412
+ default: false
1413
+ },
1414
+ headerTempTitle: {
1415
+ type: String
1416
+ },
1417
+ headerTempIcon: {
1418
+ type: [Object, String],
1419
+ default: _client_icons_vue.IconImport
1420
+ },
1421
+ isRight: {
1422
+ type: Boolean,
1423
+ default: true
1424
+ },
1425
+ // 显示绘图设置模块
1426
+ showSettingPanel: {
1427
+ type: Boolean,
1428
+ default: true
1429
+ }
1430
+ },
1431
+ setup(__props, {
1432
+ expose: __expose
1433
+ }) {
1434
+ const {
1435
+ t,
1436
+ lang,
1437
+ locale
1438
+ } = (0, _useGlobalConfig.useLocale)();
1439
+ const props = __props;
1440
+
1441
+ // ==================== 组件状态 ====================
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)("");
1448
+
1449
+ // 当前编辑的要素所属分类(新建时强制)
1450
+ let forcedCategory = (0, _vue.ref)(null);
1451
+ // 编辑时编码是否可编辑
1452
+ let editableCode = (0, _vue.ref)(true);
1453
+
1454
+ // 表单数据
1455
+ let formData = (0, _vue.reactive)({
1456
+ code: "",
1457
+ name: "",
1458
+ featureClass: "",
1459
+ subclass: "",
1460
+ routeType: ""
1461
+ });
1462
+
1463
+ // 图元设置
1464
+ const defaultSymbolSettings = () => ({
1465
+ altitudeType: "trueHeight",
1466
+ shapeType: "pointData",
1467
+ gridLevel: 15,
1468
+ bufferType: "sphere",
1469
+ bufferDistance: 500,
1470
+ upperHeight: 20,
1471
+ lowerHeight: 0
1472
+ });
1473
+ let symbolSettings = (0, _vue.reactive)(defaultSymbolSettings());
1474
+
1475
+ // ==================== 要素分类树数据(kq-tree 数据源)====================
1476
+ let featureCategories = (0, _vue.reactive)([{
1477
+ treeNodeKey: "cat-airspace",
1478
+ key: "airspace",
1479
+ label: "空域",
1480
+ checked: true,
1481
+ expanded: true,
1482
+ children: []
1483
+ }, {
1484
+ treeNodeKey: "cat-airroute",
1485
+ key: "airroute",
1486
+ label: "航线",
1487
+ checked: true,
1488
+ expanded: true,
1489
+ children: []
1490
+ }, {
1491
+ treeNodeKey: "cat-hangar",
1492
+ key: "hangar",
1493
+ label: "机库",
1494
+ checked: true,
1495
+ expanded: true,
1496
+ children: []
1497
+ }]);
1498
+
1499
+ // ==================== 分类选项配置 ====================
1500
+ const featureClassMap = {
1501
+ hangar: {
1502
+ value: "hangar",
1503
+ label: "机库"
1504
+ },
1505
+ airspace: {
1506
+ value: "airspace",
1507
+ label: "空域"
1508
+ },
1509
+ airroute: {
1510
+ value: "airroute",
1511
+ label: "航线"
1512
+ }
1513
+ };
1514
+ const subclassOptionsMap = {
1515
+ hangar: [{
1516
+ value: "takeoffPoint",
1517
+ label: "起降点"
1518
+ }],
1519
+ airspace: [{
1520
+ value: "controlZone",
1521
+ label: "管制区"
1522
+ }, {
1523
+ value: "temporaryControl",
1524
+ label: "临时管制"
1525
+ }, {
1526
+ value: "electronicFence",
1527
+ label: "电子围栏"
1528
+ }],
1529
+ airroute: [{
1530
+ value: "routeLine",
1531
+ label: "航线"
1532
+ }]
1533
+ };
1534
+ const shapeTypeMap = {
1535
+ point: [{
1536
+ value: "pointData"
1537
+ }],
1538
+ polyline: [{
1539
+ value: "lineData"
1540
+ }],
1541
+ polygon: [{
1542
+ value: "faceData"
1543
+ }]
1544
+ };
1545
+ const bufferTypeMap = {
1546
+ point: [{
1547
+ value: "sphere"
1548
+ }, {
1549
+ value: "cube"
1550
+ }, {
1551
+ value: "cylinder"
1552
+ }, {
1553
+ value: "cone"
1554
+ }],
1555
+ polyline: [{
1556
+ value: "cube"
1557
+ }, {
1558
+ value: "cylinder"
1559
+ }],
1560
+ polygon: [{
1561
+ value: "cube"
1562
+ }]
1563
+ };
1564
+ const routeTypeOptions = [{
1565
+ value: "longTerm",
1566
+ label: "长期"
1567
+ }, {
1568
+ value: "shortTerm",
1569
+ label: "短期"
1570
+ }, {
1571
+ value: "temporary",
1572
+ label: "临时"
1573
+ }];
1574
+ const featureClassOptions = [{
1575
+ value: "hangar",
1576
+ label: "机库"
1577
+ }, {
1578
+ value: "airspace",
1579
+ label: "空域"
1580
+ }, {
1581
+ value: "airroute",
1582
+ label: "航线"
1583
+ }];
1584
+ // ==================== 计算属性 ====================
1585
+ // let featureClassOptions = computed(() => {
1586
+ // if (forcedCategory.value && featureClassMap[forcedCategory.value]) {
1587
+ // return [featureClassMap[forcedCategory.value]];
1588
+ // }
1589
+ // return Object.values(featureClassMap);
1590
+ // });
1591
+
1592
+ let currentSubclassOptions = (0, _vue.computed)(() => {
1593
+ return subclassOptionsMap[formData.featureClass] || [];
1594
+ });
1595
+ let currentShapeTypes = (0, _vue.computed)(() => {
1596
+ return shapeTypeMap[currentGeometryType()] || [];
1597
+ });
1598
+ let currentBufferTypes = (0, _vue.computed)(() => {
1599
+ return bufferTypeMap[currentGeometryType()] || [];
1600
+ });
1601
+ function currentGeometryType() {
1602
+ if (formData.featureClass === "hangar") return "point";
1603
+ if (formData.featureClass === "airroute") return "polyline";
1604
+ if (formData.featureClass === "airspace") return "polygon";
1605
+ return currentDrawMode.value || "point";
1606
+ }
1607
+ let showRouteTypeField = (0, _vue.computed)(() => {
1608
+ return formData.featureClass === "airroute";
1609
+ });
1610
+ let showBufferTypeField = (0, _vue.computed)(() => {
1611
+ return currentBufferTypes.value.length > 0;
1612
+ });
1613
+ let showBufferDistanceField = (0, _vue.computed)(() => {
1614
+ // if (currentGeometryType() === "polygon") return false;
1615
+ return symbolSettings.bufferType && symbolSettings.bufferType !== "none";
1616
+ });
1617
+
1618
+ // ==================== Cesium 相关 ====================
1619
+
1620
+ let currentEditFeature = null;
1621
+ let boxRef = (0, _vue.ref)(null);
1622
+ let headerTemp = (0, _vue.ref)();
1623
+ let headerTempRef = (0, _vue.ref)(null);
1624
+ let currentEntities = [];
1625
+ let currentGeoJSON = null;
1626
+ let viewer = null;
1627
+ let viewModel = null;
1628
+
1629
+ // ==================== kq-tree 相关 ====================
1630
+ // 树节点唯一 key 字段名
1631
+ const treeNodeKey = "treeNodeKey";
1632
+
1633
+ // 树默认展开的一级分类 key
1634
+ let defaultExpandedKeys = (0, _vue.ref)(["cat-airspace", "cat-airroute", "cat-hangar"]);
1635
+
1636
+ // 树默认选中的要素 key
1637
+ let defaultCheckedKeys = (0, _vue.ref)(["cat-airspace", "cat-airroute", "cat-hangar"]);
1638
+
1639
+ // 受控展开(与 default-expanded-keys 二选一,使用受控模式以便数据加载后动态展开)
1640
+ let expandedKeys = (0, _vue.ref)([]);
1641
+ // 受控选中(与 default-checked-keys 二选一,使用受控模式同步复选框状态)
1642
+ let checkedKeys = (0, _vue.ref)([]);
1643
+
1644
+ // 树的 props 配置(映射字段名)
1645
+ const treeProps = {
1646
+ children: "children",
1647
+ label: "name"
1648
+ };
1649
+
1650
+ // 初始化受控展开状态(数据加载后调用)
1651
+ function initExpandedKeys() {
1652
+ expandedKeys.value = featureCategories.filter(cat => cat.expanded).map(cat => cat[treeNodeKey]);
1653
+ }
1654
+
1655
+ // 同步受控选中状态(根据数据 checked 属性更新 checkedKeys)
1656
+ function updateCheckedKeys() {
1657
+ const keys = [];
1658
+ featureCategories.forEach(cat => {
1659
+ if (cat.children) {
1660
+ cat.children.forEach(f => {
1661
+ if (f.checked) {
1662
+ keys.push(f[treeNodeKey]);
1663
+ }
1664
+ });
1665
+ }
1666
+ });
1667
+ checkedKeys.value = keys;
1668
+ // 设置组件的checked-keys属性
1669
+ featureTreeRef.value.$refs.child.setCheckedKeys(checkedKeys.value);
1670
+ }
1671
+
1672
+ // 节点展开回调(受控模式同步)
1673
+ function handleNodeExpand(data, node) {
1674
+ const key = data[treeNodeKey];
1675
+ if (key && !expandedKeys.value.includes(key)) {
1676
+ expandedKeys.value = [...expandedKeys.value, key];
1677
+ }
1678
+ }
1679
+
1680
+ // 节点折叠回调(受控模式同步)
1681
+ function handleNodeCollapse(data, node) {
1682
+ const key = data[treeNodeKey];
1683
+ if (key) {
1684
+ expandedKeys.value = expandedKeys.value.filter(k => k !== key);
1685
+ }
1686
+ }
1687
+
1688
+ // 树节点过滤方法(搜索)
1689
+ function filterTreeNode(value, data) {
1690
+ if (!value) return true;
1691
+ const keyword = value.toLowerCase();
1692
+ // 分类节点:匹配 label
1693
+ if (data.children) {
1694
+ return data.label && data.label.toLowerCase().includes(keyword);
1695
+ }
1696
+ // 要素节点:匹配 name
1697
+ if (data.name) {
1698
+ return data.name.toLowerCase().includes(keyword);
1699
+ }
1700
+ return false;
1701
+ }
1702
+
1703
+ // 搜索框输入时触发树过滤
1704
+ function handleTreeFilter() {
1705
+ const tree = featureTreeRef.value;
1706
+ if (tree && tree.$refs && tree.$refs.child) {
1707
+ tree.$refs.child.filter(searchKeyword.value);
1708
+ }
1709
+ }
1710
+
1711
+ // 树节点勾选事件
1712
+ function handleTreeCheck(data, checkedInfo) {
1713
+ let currenNode = featureTreeRef.value.$refs.child.getNode(data);
1714
+ if (data.children) {
1715
+ // 分类节点:全选/取消子节点
1716
+ toggleCategoryCheckByKey(data.key, currenNode.checked);
1717
+ } else {
1718
+ // 要素节点:同步 checked 属性并更新实体可见性
1719
+
1720
+ data.checked = currenNode.checked;
1721
+ updateEntityVisibility(data, currenNode.checked);
1722
+ }
1723
+ // 同步受控选中状态
1724
+ updateCheckedKeys();
1725
+ }
1726
+
1727
+ // 树节点点击事件
1728
+ function handleTreeNodeClick(data, node) {
1729
+ // 分类节点:切换展开/折叠
1730
+ if (data.children) {
1731
+ const tree = featureTreeRef.value;
1732
+ if (tree && tree.$refs && tree.$refs.child) {
1733
+ const isExpanded = node.expanded;
1734
+ tree.$refs.child.store.nodesMap[data[treeNodeKey]].expanded = !isExpanded;
1735
+ }
1736
+ }
1737
+ // 要素节点点击不展开(无 children)
1738
+ }
1739
+
1740
+ // 根据分类 key 切换该分类下所有要素的勾选状态
1741
+ function toggleCategoryCheckByKey(categoryKey, checked) {
1742
+ const category = featureCategories.find(cat => cat.key === categoryKey);
1743
+ if (category && category.children) {
1744
+ category.children.forEach(child => {
1745
+ child.checked = checked;
1746
+ updateEntityVisibility(child, checked);
1747
+ });
1748
+ }
1749
+ updateCheckedKeys();
1750
+ }
1751
+
1752
+ // 通过节点数据编辑要素(树节点回调用)
1753
+ function editFeatureFromNode(data) {
1754
+ const category = featureCategories.find(cat => cat.key === data.category);
1755
+ if (category) {
1756
+ editFeature(data, category);
1757
+ }
1758
+ }
1759
+
1760
+ // 通过节点数据缩放至要素
1761
+ function zoomToFeatureByKey(data) {
1762
+ zoomToFeature(data);
1763
+ }
1764
+
1765
+ // 通过节点数据删除要素
1766
+ function deleteFeatureByKey(data) {
1767
+ const category = featureCategories.find(cat => cat.key === data.category);
1768
+ if (category) {
1769
+ deleteFeature(data, category);
1770
+ }
1771
+ }
1772
+
1773
+ // 通过分类 key 添加要素
1774
+ function addFeatureByCategoryByKey(categoryKey) {
1775
+ const category = featureCategories.find(cat => cat.key === categoryKey);
1776
+ if (category) {
1777
+ addFeatureByCategory(category);
1778
+ }
1779
+ }
1780
+ let featureTreeRef = (0, _vue.ref)(null);
1781
+ (0, _vue.onMounted)(() => {
1782
+ (0, _util.updatePosition)(boxRef.value, props);
1783
+ (0, _vue.watch)(() => props.position, newVal => (0, _util.updatePosition)(boxRef.value, props));
1784
+ watchCreateHeaderTemp();
1785
+ (0, _vue.watch)(() => props.showHeaderTemp, () => (0, _vue.nextTick)(watchCreateHeaderTemp));
1786
+
1787
+ // 初始化树展开状态
1788
+ initExpandedKeys();
1789
+
1790
+ // 加载外部数据(不依赖地图)
1791
+ loadExternalData();
1792
+ // 初始化树全选状态
1793
+ updateCheckedKeys();
1794
+ _gisUtils.utils.getWebMap(props.mapTarget, scenceView => {
1795
+ if (scenceView) {
1796
+ viewer = scenceView._viewer;
1797
+ viewModel = new _LowAltitudeFeatureViewModel.default(viewer);
1798
+ // 地图准备好后,把已有 geojson 的要素渲染到地图
1799
+ renderExistingFeatures(viewModel);
1800
+ }
1801
+ });
1802
+ });
1803
+ (0, _vue.onBeforeUnmount)(() => {
1804
+ if (viewModel) {
1805
+ viewModel.destroy();
1806
+ viewModel = null;
1807
+ }
1808
+ });
1809
+
1810
+ /**
1811
+ * 监听header生成
1812
+ */
1813
+ const watchCreateHeaderTemp = () => {
1814
+ if (props.showHeaderTemp) {
1815
+ headerTemp.value = (0, _util.createHeaderTemp)(boxRef.value, (0, _vue.toRefs)(props), headerTempRef, "webgl.lowAltitudeFeature");
1816
+ }
1817
+ };
1818
+
1819
+ /**
1820
+ * 地图准备好后,将已有 geojson 的要素渲染到地图
1821
+ */
1822
+ function renderExistingFeatures(vm) {
1823
+ if (!vm) return;
1824
+ featureCategories.forEach(cat => {
1825
+ if (!cat.children) return;
1826
+ cat.children.forEach(feat => {
1827
+ if (feat.geojson && (!feat.entityIds || feat.entityIds.length === 0)) {
1828
+ try {
1829
+ const entities = vm.loadFromGeoJSON(feat.geojson, feat.settings || {});
1830
+ feat.entityIds = entities.map(e => e.id);
1831
+ } catch (e) {
1832
+ console.error("渲染已有要素失败:", feat.name, e);
1833
+ }
1834
+ }
1835
+ });
1836
+ });
1837
+ }
1838
+
1839
+ /**
1840
+ * 加载模拟示例数据
1841
+ */
1842
+ function loadMockData() {
1843
+ MOCK_FEATURE_S.forEach(item => addFeatureToTree(item));
1844
+ }
1845
+
1846
+ /**
1847
+ * 加载外部数据
1848
+ */
1849
+ function loadExternalData() {
1850
+ if (props.loadLowAltitudeFeature) {
1851
+ props.loadLowAltitudeFeature(dataList => {
1852
+ if (dataList && Array.isArray(dataList)) {
1853
+ dataList.forEach(item => addFeatureToTree(item));
1854
+ // 批量加载后统一同步全选状态
1855
+ (0, _vue.nextTick)(updateCheckedKeys);
1856
+ }
1857
+ });
1858
+ }
1859
+ }
1860
+
1861
+ /**
1862
+ * 将要素添加到树中,并渲染到地图
1863
+ */
1864
+ function addFeatureToTree(item) {
1865
+ const category = featureCategories.find(cat => cat.key === item.category);
1866
+ if (category) {
1867
+ // 避免重复添加
1868
+ if (category.children.find(f => f.id === item.id)) return;
1869
+ const newFeature = {
1870
+ [treeNodeKey]: item.id || Cesium.createGuid(),
1871
+ id: item.id || Cesium.createGuid(),
1872
+ code: item.code || "",
1873
+ name: item.name || "",
1874
+ geometryType: item.geometryType || "point",
1875
+ category: item.category,
1876
+ checked: item.visible !== false,
1877
+ gridDisplay: item.gridDisplay || false,
1878
+ subclass: item.subclass || "",
1879
+ routeType: item.routeType || "",
1880
+ settings: item.settings || {},
1881
+ geojson: item.geojson || null,
1882
+ entityIds: []
1883
+ };
1884
+
1885
+ // 如果有 viewModel 且有 geojson,渲染到地图
1886
+ if (viewModel && newFeature.geojson) {
1887
+ try {
1888
+ const entities = viewModel.loadFromGeoJSON(newFeature.geojson, newFeature.settings);
1889
+ newFeature.entityIds = entities.map(e => e.id);
1890
+ } catch (e) {
1891
+ console.error("渲染要素失败:", e);
1892
+ }
1893
+ }
1894
+ category.children.push(newFeature);
1895
+ // 默认全选:新增要素默认选中
1896
+ newFeature.checked = true;
1897
+ // 新增要素后同步受控选中状态
1898
+ (0, _vue.nextTick)(updateCheckedKeys);
1899
+ }
1900
+ }
1901
+
1902
+ // ==================== 树形操作 ====================
1903
+
1904
+ // ==================== 要素CRUD操作 ====================
1905
+
1906
+ // ==================== 要素CRUD操作 ====================
1907
+ /**
1908
+ * 通过一级分类添加要素
1909
+ */
1910
+ function addFeatureByCategory(category) {
1911
+ isAddOrEdit.value = true;
1912
+ isEdit.value = false;
1913
+ panelCollapsed.value = false;
1914
+ resetForm();
1915
+ forcedCategory.value = category.key;
1916
+ formData.featureClass = featureClassMap[category.key] ? featureClassMap[category.key].value : "";
1917
+ onFeatureClassChange(formData.featureClass);
1918
+ }
1919
+
1920
+ /**
1921
+ * 开始绘制
1922
+ */
1923
+ function startDraw(mode) {
1924
+ if (!viewModel || !viewModel.isReady()) {
1925
+ (0, _message.default)({
1926
+ message: `${locale.value.webgl.mapNotReady}`,
1927
+ type: "warning"
1928
+ });
1929
+ return;
1930
+ }
1931
+ currentDrawMode.value = mode;
1932
+
1933
+ // 编辑模式下:先将当前要素的旧实体从地图移除
1934
+ // (这些实体不在 _drawingEntities 中,clearDraw 不会处理它们)
1935
+ if (isEdit.value && viewModel && currentEntities.length > 0) {
1936
+ currentEntities.forEach(entity => {
1937
+ if (entity) {
1938
+ if (viewModel._dataSource) {
1939
+ viewModel._dataSource.entities.remove(entity);
1940
+ }
1941
+ viewModel._viewer.entities.remove(entity);
1942
+ }
1943
+ });
1944
+ currentEntities = [];
1945
+ }
1946
+
1947
+ // 清除之前的绘制处理器和已绘制的实体,重置 geoJSON
1948
+ clearDrawHandler();
1949
+ removeCurrentEntities();
1950
+ currentGeoJSON = null;
1951
+ if (mode === "point") symbolSettings.shapeType = "pointData";else if (mode === "polyline") symbolSettings.shapeType = "lineData";else if (mode === "polygon") symbolSettings.shapeType = "faceData";
1952
+ if (viewModel) {
1953
+ if (mode === "point") {
1954
+ viewModel.drawPoint(symbolSettings, (entity, geojson) => {
1955
+ currentEntities.push(entity);
1956
+ currentGeoJSON = geojson;
1957
+ });
1958
+ } else if (mode === "polyline") {
1959
+ viewModel.drawPolyline(symbolSettings, (entity, geojson) => {
1960
+ currentEntities.push(entity);
1961
+ currentGeoJSON = geojson;
1962
+ });
1963
+ } else if (mode === "polygon") {
1964
+ viewModel.drawPolygon(symbolSettings, (entity, geojson) => {
1965
+ currentEntities.push(entity);
1966
+ currentGeoJSON = geojson;
1967
+ });
1968
+ }
1969
+ }
1970
+ }
1971
+
1972
+ /**
1973
+ * 编辑要素
1974
+ */
1975
+ function editFeature(feature, category) {
1976
+ // 1. 先准备所有数据,暂不显示面板
1977
+ currentEditFeature = {
1978
+ ...feature,
1979
+ categoryKey: category.key
1980
+ };
1981
+ forcedCategory.value = category.key;
1982
+ editableCode.value = false;
1983
+ formData.code = feature.code || "";
1984
+ formData.name = feature.name || "";
1985
+ formData.featureClass = category.key;
1986
+ formData.subclass = feature.subclass || "";
1987
+ formData.routeType = feature.routeType || "";
1988
+ formData.geojson = feature.geojson || null;
1989
+ formData.entityIds = feature.entityIds || [];
1990
+ currentGeoJSON = feature.geojson || null;
1991
+ currentEntities = [feature.entityIds || []].flat().map(id => viewModel.getEntityById(id)).filter(e => e);
1992
+
1993
+ // 2. 根据分类设置绘图模式、图形类型和缓冲类型
1994
+ if (category.key === "hangar") {
1995
+ currentDrawMode.value = "point";
1996
+ symbolSettings.shapeType = "pointData";
1997
+ symbolSettings.bufferType = "sphere";
1998
+ } else if (category.key === "airroute") {
1999
+ currentDrawMode.value = "polyline";
2000
+ symbolSettings.shapeType = "lineData";
2001
+ symbolSettings.bufferType = "cube";
2002
+ } else if (category.key === "airspace") {
2003
+ currentDrawMode.value = "polygon";
2004
+ symbolSettings.shapeType = "faceData";
2005
+ symbolSettings.bufferType = "cube";
2006
+ }
2007
+
2008
+ // 3. 用已保存的设置覆盖 symbolSettings
2009
+ if (feature.settings) {
2010
+ const savedShapeType = symbolSettings.shapeType;
2011
+ Object.assign(symbolSettings, defaultSymbolSettings(), feature.settings);
2012
+ // 确保 shapeType 与当前分类一致;bufferType 由 feature.settings 决定,无需恢复
2013
+ symbolSettings.shapeType = savedShapeType;
2014
+ }
2015
+ // 如果 feature.settings 里没有 bufferType,用当前分类对应的默认值
2016
+ if (!feature.settings || feature.settings.bufferType === undefined) {
2017
+ if (category.key === "hangar") {
2018
+ symbolSettings.bufferType = "sphere";
2019
+ } else {
2020
+ symbolSettings.bufferType = "cube";
2021
+ }
2022
+ }
2023
+
2024
+ // 4. 所有数据准备好后再显示面板
2025
+ (0, _vue.nextTick)(() => {
2026
+ isAddOrEdit.value = true;
2027
+ isEdit.value = true;
2028
+ panelCollapsed.value = false;
2029
+ });
2030
+ }
2031
+
2032
+ /**
2033
+ * 根据分类推断几何类型
2034
+ */
2035
+ function inferGeometryFromCategory(categoryKey) {
2036
+ if (categoryKey === "hangar") return "point";
2037
+ if (categoryKey === "airroute") return "polyline";
2038
+ return "polygon";
2039
+ }
2040
+
2041
+ /**
2042
+ * 缩放至要素
2043
+ */
2044
+ function zoomToFeature(feature) {
2045
+ if (!viewModel) {
2046
+ (0, _message.default)({
2047
+ message: `${locale.value.webgl.mapNotReady}`,
2048
+ type: "warning"
2049
+ });
2050
+ return;
2051
+ }
2052
+ const ok = viewModel.zoomToFeature(feature);
2053
+ if (!ok) {
2054
+ (0, _message.default)({
2055
+ message: `${locale.value.webgl.noGeoData}`,
2056
+ type: "warning"
2057
+ });
2058
+ }
2059
+ }
2060
+
2061
+ /**
2062
+ * 删除要素
2063
+ */
2064
+ function deleteFeature(feature, category) {
2065
+ const index = category.children.findIndex(f => f.id === feature.id);
2066
+ if (index !== -1) {
2067
+ category.children.splice(index, 1);
2068
+ if (feature.entityIds && viewModel) {
2069
+ viewModel.removeFeatureEntities(feature.entityIds);
2070
+ }
2071
+ }
2072
+ if (props.deleteLowAltitudeFeature) {
2073
+ props.deleteLowAltitudeFeature(feature.id);
2074
+ }
2075
+ // 删除要素后同步受控选中状态
2076
+ updateCheckedKeys();
2077
+ (0, _message.default)({
2078
+ message: `${locale.value.webgl.deleteSuccess}`,
2079
+ type: "success"
2080
+ });
2081
+ }
2082
+
2083
+ /**
2084
+ * 切换网格化显示
2085
+ */
2086
+ function toggleGridDisplay(feature) {
2087
+ feature.gridDisplay = !feature.gridDisplay;
2088
+ if (viewModel && feature.geojson) {
2089
+ viewModel.toggleGridDisplay(feature, feature.gridDisplay, feature.settings);
2090
+ }
2091
+ (0, _message.default)({
2092
+ message: `${locale.value.webgl.gridDisplay}: ${feature.name} - ${feature.gridDisplay ? locale.value.webgl.on : locale.value.webgl.off}`,
2093
+ type: "info"
2094
+ });
2095
+ }
2096
+
2097
+ /**
2098
+ * 更新实体可见性
2099
+ */
2100
+ function updateEntityVisibility(feature, checked) {
2101
+ if (viewModel) {
2102
+ viewModel.updateFeatureVisibility(feature, checked);
2103
+ }
2104
+ }
2105
+
2106
+ // ==================== GeoJSON 操作 ====================
2107
+ function handleGeoJSONUpload(file) {
2108
+ const reader = new FileReader();
2109
+ reader.onload = e => {
2110
+ try {
2111
+ const geojson = JSON.parse(e.target.result);
2112
+ // 清除之前绘制/导入的实体和 geoJSON,用新导入的替换
2113
+ clearDrawHandler();
2114
+ removeCurrentEntities();
2115
+ currentGeoJSON = geojson;
2116
+ autoInferGeometryType(geojson);
2117
+ // 加载新的 GeoJSON 到地图
2118
+ if (viewModel) {
2119
+ const entities = viewModel.loadFromGeoJSON(geojson, symbolSettings, true);
2120
+ currentEntities.push(...entities);
2121
+ }
2122
+ (0, _message.default)({
2123
+ message: `${locale.value.webgl.geojsonLoaded}`,
2124
+ type: "success"
2125
+ });
2126
+ } catch (err) {
2127
+ (0, _message.default)({
2128
+ message: `${locale.value.webgl.geojsonParseError}`,
2129
+ type: "error"
2130
+ });
2131
+ }
2132
+ };
2133
+ reader.readAsText(file.raw);
2134
+ }
2135
+ function autoInferGeometryType(geojson) {
2136
+ let geomType = "";
2137
+ if (geojson.type === "FeatureCollection" && geojson.features && geojson.features.length > 0) {
2138
+ geomType = geojson.features[0].geometry && geojson.features[0].geometry.type;
2139
+ } else if (geojson.type === "Feature") {
2140
+ geomType = geojson.geometry && geojson.geometry.type;
2141
+ }
2142
+ if (geomType === "Point" || geomType === "MultiPoint") {
2143
+ currentDrawMode.value = "point";
2144
+ symbolSettings.shapeType = "pointData";
2145
+ } else if (geomType === "LineString" || geomType === "MultiLineString") {
2146
+ currentDrawMode.value = "polyline";
2147
+ symbolSettings.shapeType = "lineData";
2148
+ } else if (geomType === "Polygon" || geomType === "MultiPolygon") {
2149
+ currentDrawMode.value = "polygon";
2150
+ symbolSettings.shapeType = "faceData";
2151
+ }
2152
+ }
2153
+ function exportGeoJSON() {
2154
+ if (!currentGeoJSON) {
2155
+ (0, _message.default)({
2156
+ message: `${locale.value.webgl.noGeoDataToExport}`,
2157
+ type: "warning"
2158
+ });
2159
+ return;
2160
+ }
2161
+ const blob = new Blob([JSON.stringify(currentGeoJSON, null, 2)], {
2162
+ type: "application/json"
2163
+ });
2164
+ const url = URL.createObjectURL(blob);
2165
+ const a = document.createElement("a");
2166
+ a.href = url;
2167
+ a.download = (formData.name || "low_altitude_feature") + ".geojson";
2168
+ a.click();
2169
+ URL.revokeObjectURL(url);
2170
+ (0, _message.default)({
2171
+ message: `${locale.value.webgl.exportSuccess}`,
2172
+ type: "success"
2173
+ });
2174
+ }
2175
+ function deleteCurrentDrawing() {
2176
+ removeCurrentEntities();
2177
+ currentGeoJSON = null;
2178
+ // currentDrawMode.value = "";
2179
+ (0, _message.default)({
2180
+ message: `${locale.value.webgl.currentDrawingDeleted}`,
2181
+ type: "success"
2182
+ });
2183
+ }
2184
+ function removeCurrentEntities() {
2185
+ if (viewModel) {
2186
+ viewModel.removeCurrentDrawingEntities();
2187
+ }
2188
+ currentEntities = [];
2189
+ }
2190
+
2191
+ // ==================== 表单操作 ====================
2192
+ function onFeatureClassChange(val) {
2193
+ // 仅当子类在当前分类下无效时才重置,避免编辑要素时被意外清空
2194
+ const validSubclasses = (subclassOptionsMap[val] || []).map(opt => opt.value);
2195
+ if (formData.subclass && !validSubclasses.includes(formData.subclass)) {
2196
+ formData.subclass = "";
2197
+ }
2198
+ if (val === "hangar") {
2199
+ currentDrawMode.value = "point";
2200
+ symbolSettings.shapeType = "pointData";
2201
+ symbolSettings.bufferType = "sphere";
2202
+ } else if (val === "airroute") {
2203
+ currentDrawMode.value = "polyline";
2204
+ symbolSettings.shapeType = "lineData";
2205
+ symbolSettings.bufferType = "cube";
2206
+ } else if (val === "airspace") {
2207
+ currentDrawMode.value = "polygon";
2208
+ symbolSettings.shapeType = "faceData";
2209
+ symbolSettings.bufferType = "cube";
2210
+ }
2211
+ }
2212
+ function resetForm() {
2213
+ formData.code = "";
2214
+ formData.name = "";
2215
+ formData.featureClass = "";
2216
+ formData.subclass = "";
2217
+ formData.routeType = "";
2218
+ forcedCategory.value = null;
2219
+ editableCode.value = true;
2220
+ currentDrawMode.value = "";
2221
+ currentGeoJSON = null;
2222
+ currentEditFeature = null;
2223
+ Object.assign(symbolSettings, defaultSymbolSettings());
2224
+ }
2225
+ function clearForm() {
2226
+ resetForm();
2227
+ clearDrawHandler();
2228
+ removeCurrentEntities();
2229
+ (0, _message.default)({
2230
+ message: `${locale.value.webgl.formCleared}`,
2231
+ type: "info"
2232
+ });
2233
+ }
2234
+ function saveFeature() {
2235
+ // 验证要素编码
2236
+ if (!formData.code.trim()) {
2237
+ (0, _message.default)({
2238
+ message: `${locale.value.webgl.pleaseEnterFeatureCode}`,
2239
+ type: "warning"
2240
+ });
2241
+ return;
2242
+ }
2243
+ // 验证要素名称
2244
+ if (!formData.name.trim()) {
2245
+ (0, _message.default)({
2246
+ message: `${locale.value.webgl.pleaseEnterFeatureName}`,
2247
+ type: "warning"
2248
+ });
2249
+ return;
2250
+ }
2251
+ // 验证是否已绘制几何图形
2252
+ if (!currentGeoJSON) {
2253
+ (0, _message.default)({
2254
+ message: `${locale.value.webgl.pleaseDrawGeometry}`,
2255
+ type: "warning"
2256
+ });
2257
+ return;
2258
+ }
2259
+ const featureData = {
2260
+ id: currentEditFeature ? currentEditFeature.id : Cesium.createGuid(),
2261
+ code: formData.code,
2262
+ name: formData.name.trim(),
2263
+ featureClass: formData.featureClass,
2264
+ subclass: formData.subclass,
2265
+ routeType: formData.routeType,
2266
+ geometryType: currentGeometryType(),
2267
+ category: forcedCategory.value || formData.featureClass || "airspace",
2268
+ settings: {
2269
+ ...symbolSettings
2270
+ },
2271
+ geojson: currentGeoJSON,
2272
+ visible: true,
2273
+ gridDisplay: false,
2274
+ // 保留原有的 checked 状态,避免编辑后复选框变成未选中
2275
+ checked: currentEditFeature ? currentEditFeature.checked : true
2276
+ };
2277
+ if (isEdit.value && currentEditFeature) {
2278
+ // 编辑已有要素
2279
+ const category = featureCategories.find(cat => cat.key === currentEditFeature.categoryKey);
2280
+ if (category) {
2281
+ const idx = category.children.findIndex(f => f.id === currentEditFeature.id);
2282
+ if (idx !== -1) {
2283
+ // 保存原有的 checked 状态
2284
+ const originalChecked = category.children[idx].checked;
2285
+ // 构建更新后的要素对象
2286
+ const updatedFeature = {
2287
+ ...category.children[idx],
2288
+ ...featureData,
2289
+ checked: originalChecked
2290
+ };
2291
+ // 使用 splice 更新数组元素,确保触发响应性
2292
+ category.children.splice(idx, 1, updatedFeature);
2293
+
2294
+ // 更新地图上的实体
2295
+ if (viewModel) {
2296
+ // 判断是否需要更新地图实体:几何图形变了 或 图元设置变了
2297
+ const oldIds = updatedFeature.entityIds || [];
2298
+ const newIds = currentEntities.map(e => e.id);
2299
+ const idsMatch = oldIds.length === newIds.length && oldIds.every((id, i) => id === newIds[i]);
2300
+ const settingsMatch = JSON.stringify(updatedFeature.settings) === JSON.stringify(currentEditFeature.settings);
2301
+ if (!idsMatch || !settingsMatch) {
2302
+ // 需要更新地图 → 删除旧实体
2303
+ if (oldIds.length > 0) viewModel.removeFeatureEntities(oldIds);
2304
+ if (newIds.length > 0 && !idsMatch) {
2305
+ // 用户重绘了几何图形 → 直接用绘制好的实体
2306
+ updatedFeature.entityIds = newIds;
2307
+ currentEntities = [];
2308
+ } else if (updatedFeature.geojson) {
2309
+ // 只改了图元设置/无可绘制实体 → 从 geojson 用当前设置重建
2310
+ const entities = viewModel.loadFromGeoJSON(updatedFeature.geojson, symbolSettings);
2311
+ updatedFeature.entityIds = entities.map(e => e.id);
2312
+ } else {
2313
+ updatedFeature.entityIds = [];
2314
+ }
2315
+ }
2316
+ // 几何和设置都没变 → 保留原有实体不动
2317
+
2318
+ // 清空绘图追踪
2319
+ viewModel._drawingEntities = [];
2320
+ }
2321
+ // 编辑要素后同步受控选中状态
2322
+ (0, _vue.nextTick)(updateCheckedKeys);
2323
+ }
2324
+ }
2325
+ } else {
2326
+ // 新建要素 - 直接添加到树中,并使用当前已绘制的实体
2327
+ const category = featureCategories.find(cat => cat.key === featureData.category);
2328
+ if (category) {
2329
+ // 避免重复添加
2330
+ if (category.children.find(f => f.id === featureData.id)) {
2331
+ (0, _message.default)({
2332
+ message: `${locale.value.webgl.featureAlreadyExists}`,
2333
+ type: "warning"
2334
+ });
2335
+ return;
2336
+ }
2337
+ const newFeature = {
2338
+ [treeNodeKey]: featureData.id,
2339
+ id: featureData.id,
2340
+ code: featureData.code,
2341
+ name: featureData.name,
2342
+ geometryType: featureData.geometryType,
2343
+ category: featureData.category,
2344
+ checked: true,
2345
+ gridDisplay: false,
2346
+ subclass: featureData.subclass,
2347
+ routeType: featureData.routeType,
2348
+ settings: featureData.settings,
2349
+ geojson: featureData.geojson,
2350
+ entityIds: []
2351
+ };
2352
+
2353
+ // 将当前绘制的实体添加到地图,并保存entityIds
2354
+ if (viewModel && currentEntities.length > 0) {
2355
+ // 使用当前已绘制的实体
2356
+ newFeature.entityIds = currentEntities.map(e => e.id);
2357
+ // 清空currentEntities,避免下次重复添加
2358
+ currentEntities = [];
2359
+ } else if (viewModel && currentGeoJSON) {
2360
+ // 如果没有当前实体,则从geojson加载
2361
+ try {
2362
+ const entities = viewModel.loadFromGeoJSON(currentGeoJSON, symbolSettings);
2363
+ newFeature.entityIds = entities.map(e => e.id);
2364
+ } catch (e) {
2365
+ console.error("渲染要素失败:", e);
2366
+ }
2367
+ }
2368
+ // 保存后清除当前绘制的实体
2369
+ viewModel._drawingEntities = [];
2370
+ category.children.push(newFeature);
2371
+ // 新增要素后同步受控选中状态
2372
+ (0, _vue.nextTick)(updateCheckedKeys);
2373
+ }
2374
+ }
2375
+ if (props.saveLowAltitudeFeature) {
2376
+ props.saveLowAltitudeFeature(featureData);
2377
+ }
2378
+ (0, _message.default)({
2379
+ message: `${locale.value.webgl.saveSuccess}`,
2380
+ type: "success"
2381
+ });
2382
+ isAddOrEdit.value = false;
2383
+ isEdit.value = false;
2384
+ resetForm();
2385
+ }
2386
+ function cancel() {
2387
+ isAddOrEdit.value = false;
2388
+ isEdit.value = false;
2389
+ resetForm();
2390
+ clearDrawHandler();
2391
+ removeCurrentEntities();
2392
+ }
2393
+ function togglePanelCollapse() {
2394
+ panelCollapsed.value = !panelCollapsed.value;
2395
+ }
2396
+ function clearDrawHandler() {
2397
+ if (viewModel) {
2398
+ viewModel.clearDraw();
2399
+ }
2400
+ }
2401
+
2402
+ // ==================== 暴露方法 ====================
2403
+ __expose({
2404
+ addFeature: addFeatureByCategory,
2405
+ editFeature,
2406
+ deleteFeature,
2407
+ zoomToFeature,
2408
+ toggleGridDisplay,
2409
+ save: saveFeature,
2410
+ cancel,
2411
+ startDraw,
2412
+ handleGeoJSONUpload,
2413
+ exportGeoJSON
2414
+ });
2415
+ return (_ctx, _cache) => {
2416
+ const _component_CaretRight = (0, _vue.resolveComponent)("CaretRight");
2417
+ const _component_kq_radio = (0, _vue.resolveComponent)("kq-radio");
2418
+ const _component_kq_radio_group = (0, _vue.resolveComponent)("kq-radio-group");
2419
+ const _component_kq_col = (0, _vue.resolveComponent)("kq-col");
2420
+ const _component_kq_row = (0, _vue.resolveComponent)("kq-row");
2421
+ return (0, _vue.openBlock)(), (0, _vue.createElementBlock)("section", {
2422
+ class: (0, _vue.normalizeClass)(["kq-low-altitude-feature", {
2423
+ 'kq-box-shadow': __props.showShadow
2424
+ }]),
2425
+ ref_key: "boxRef",
2426
+ ref: boxRef
2427
+ }, [__props.showHeaderTemp ? ((0, _vue.openBlock)(), (0, _vue.createBlock)((0, _vue.resolveDynamicComponent)((0, _vue.unref)(headerTemp)), {
2428
+ key: 0,
2429
+ ref_key: "headerTempRef",
2430
+ ref: headerTempRef
2431
+ }, null, 512 /* NEED_PATCH */)) : (0, _vue.createCommentVNode)("v-if", true), (0, _vue.createElementVNode)("div", _hoisted_1, [(0, _vue.createCommentVNode)(" 左侧:低空要素列表(kq-tree 实现) "), (0, _vue.createElementVNode)("div", _hoisted_2, [(0, _vue.createCommentVNode)(" 搜索框 "), (0, _vue.createElementVNode)("div", _hoisted_3, [(0, _vue.createVNode)((0, _vue.unref)(_input.default), {
2432
+ modelValue: (0, _vue.unref)(searchKeyword),
2433
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (0, _vue.isRef)(searchKeyword) ? searchKeyword.value = $event : searchKeyword = $event),
2434
+ placeholder: (0, _vue.unref)(locale).webgl.searchPlaceholder,
2435
+ clearable: "",
2436
+ onInput: handleTreeFilter
2437
+ }, {
2438
+ prefix: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2439
+ size: 14
2440
+ }, {
2441
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_iconsVue.Search))]),
2442
+ _: 1 /* STABLE */
2443
+ })]),
2444
+ _: 1 /* STABLE */
2445
+ }, 8 /* PROPS */, ["modelValue", "placeholder"])]), (0, _vue.createCommentVNode)(" kq-tree 树形列表 "), (0, _vue.createVNode)((0, _vue.unref)(_scrollbar.default), {
2446
+ class: "kq-laf-tree-scroll"
2447
+ }, {
2448
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_tree.default), {
2449
+ ref_key: "featureTreeRef",
2450
+ ref: featureTreeRef,
2451
+ data: (0, _vue.unref)(featureCategories),
2452
+ "node-key": "treeNodeKey",
2453
+ props: treeProps,
2454
+ "show-checkbox": "",
2455
+ "expand-on-click-node": false,
2456
+ "filter-node-method": filterTreeNode,
2457
+ "expanded-keys": (0, _vue.unref)(expandedKeys),
2458
+ "default-expanded-keys": (0, _vue.unref)(defaultExpandedKeys),
2459
+ onCheck: handleTreeCheck,
2460
+ onNodeClick: handleTreeNodeClick,
2461
+ onNodeExpand: handleNodeExpand,
2462
+ onNodeCollapse: handleNodeCollapse
2463
+ }, {
2464
+ default: (0, _vue.withCtx)(({
2465
+ node,
2466
+ data
2467
+ }) => [(0, _vue.createCommentVNode)(" 分类节点(有 children) "), data.children ? ((0, _vue.openBlock)(), (0, _vue.createElementBlock)("span", _hoisted_4, [(0, _vue.createElementVNode)("span", {
2468
+ class: "kq-laf-category-name",
2469
+ title: data.label
2470
+ }, (0, _vue.toDisplayString)(data.label), 9 /* TEXT, PROPS */, _hoisted_5), data.key ? ((0, _vue.openBlock)(), (0, _vue.createElementBlock)("span", {
2471
+ key: 0,
2472
+ class: "kq-laf-add-btn",
2473
+ title: (0, _vue.unref)(locale).webgl.addFeature,
2474
+ onClick: (0, _vue.withModifiers)($event => addFeatureByCategoryByKey(data.key), ["stop"])
2475
+ }, [(0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2476
+ size: 16
2477
+ }, {
2478
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_iconsVue.Plus))]),
2479
+ _: 1 /* STABLE */
2480
+ })], 8 /* PROPS */, _hoisted_6)) : (0, _vue.createCommentVNode)("v-if", true)])) : ((0, _vue.openBlock)(), (0, _vue.createElementBlock)(_vue.Fragment, {
2481
+ key: 1
2482
+ }, [(0, _vue.createCommentVNode)(" 要素节点(无 children,即叶子节点) "), (0, _vue.createElementVNode)("span", _hoisted_7, [(0, _vue.createElementVNode)("span", {
2483
+ class: "kq-laf-feature-name",
2484
+ title: data.name
2485
+ }, (0, _vue.toDisplayString)(data.name), 9 /* TEXT, PROPS */, _hoisted_8), (0, _vue.createElementVNode)("span", _hoisted_9, [(0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2486
+ size: 15,
2487
+ class: (0, _vue.normalizeClass)(["kq-laf-action-btn kq-laf-grid-btn", {
2488
+ active: data.gridDisplay
2489
+ }]),
2490
+ title: (0, _vue.unref)(locale).webgl.gridDisplay,
2491
+ onClick: (0, _vue.withModifiers)($event => toggleGridDisplay(data), ["stop"])
2492
+ }, {
2493
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_iconsVue.Grid))]),
2494
+ _: 2 /* DYNAMIC */
2495
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["class", "title", "onClick"]), (0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2496
+ size: 15,
2497
+ class: "kq-laf-action-btn kq-laf-edit-btn",
2498
+ title: (0, _vue.unref)(locale).webgl.edit,
2499
+ onClick: (0, _vue.withModifiers)($event => editFeatureFromNode(data), ["stop"])
2500
+ }, {
2501
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_iconsVue.EditPen))]),
2502
+ _: 2 /* DYNAMIC */
2503
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["title", "onClick"]), (0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2504
+ size: 15,
2505
+ class: "kq-laf-action-btn kq-laf-zoom-btn",
2506
+ title: (0, _vue.unref)(locale).webgl.zoomTo,
2507
+ onClick: (0, _vue.withModifiers)($event => zoomToFeatureByKey(data), ["stop"])
2508
+ }, {
2509
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_client_icons_vue.IconZoomTo))]),
2510
+ _: 2 /* DYNAMIC */
2511
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["title", "onClick"]), (0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2512
+ size: 15,
2513
+ class: "kq-laf-action-btn kq-laf-delete-btn",
2514
+ title: (0, _vue.unref)(locale).webgl.delete,
2515
+ onClick: (0, _vue.withModifiers)($event => deleteFeatureByKey(data), ["stop"])
2516
+ }, {
2517
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_iconsVue.DeleteFilled))]),
2518
+ _: 2 /* DYNAMIC */
2519
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["title", "onClick"])])])], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))]),
2520
+ _: 1 /* STABLE */
2521
+ }, 8 /* PROPS */, ["data", "expanded-keys", "default-expanded-keys"])]),
2522
+ _: 1 /* STABLE */
2523
+ })]), (0, _vue.createCommentVNode)(" 右侧:低空要素标绘面板 "), (0, _vue.unref)(isAddOrEdit) ? (0, _vue.withDirectives)(((0, _vue.openBlock)(), (0, _vue.createElementBlock)("div", _hoisted_10, [(0, _vue.createElementVNode)("div", _hoisted_11, [(0, _vue.createElementVNode)("span", _hoisted_12, (0, _vue.toDisplayString)((0, _vue.unref)(locale).webgl.lowAltitudeFeatureDraw), 1 /* TEXT */), (0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2524
+ size: 16,
2525
+ class: "kq-laf-collapse-btn",
2526
+ onClick: togglePanelCollapse
2527
+ }, {
2528
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_iconsVue.Close))]),
2529
+ _: 1 /* STABLE */
2530
+ })]), (0, _vue.withDirectives)((0, _vue.createElementVNode)("div", _hoisted_13, [(0, _vue.createCommentVNode)(" 工具栏 "), (0, _vue.createElementVNode)("div", _hoisted_14, [(0, _vue.createVNode)((0, _vue.unref)(_button.default), {
2531
+ title: (0, _vue.unref)(locale).webgl.drawPoint,
2532
+ class: "kq-laf-tool-btn",
2533
+ disabled: (0, _vue.unref)(currentDrawMode) !== 'point',
2534
+ type: (0, _vue.unref)(currentDrawMode) === 'point' ? 'primary' : 'default',
2535
+ onClick: _cache[1] || (_cache[1] = $event => startDraw('point'))
2536
+ }, {
2537
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2538
+ size: 20
2539
+ }, {
2540
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_client_icons_vue.IconLocation))]),
2541
+ _: 1 /* STABLE */
2542
+ })]),
2543
+ _: 1 /* STABLE */
2544
+ }, 8 /* PROPS */, ["title", "disabled", "type"]), (0, _vue.createVNode)((0, _vue.unref)(_button.default), {
2545
+ title: (0, _vue.unref)(locale).webgl.drawLine,
2546
+ class: "kq-laf-tool-btn",
2547
+ disabled: (0, _vue.unref)(currentDrawMode) !== 'polyline',
2548
+ type: (0, _vue.unref)(currentDrawMode) === 'polyline' ? 'primary' : 'default',
2549
+ onClick: _cache[2] || (_cache[2] = $event => startDraw('polyline'))
2550
+ }, {
2551
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2552
+ size: 20
2553
+ }, {
2554
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_client_icons_vue.IconLine))]),
2555
+ _: 1 /* STABLE */
2556
+ })]),
2557
+ _: 1 /* STABLE */
2558
+ }, 8 /* PROPS */, ["title", "disabled", "type"]), (0, _vue.createVNode)((0, _vue.unref)(_button.default), {
2559
+ title: (0, _vue.unref)(locale).webgl.drawPolygon,
2560
+ class: "kq-laf-tool-btn",
2561
+ disabled: (0, _vue.unref)(currentDrawMode) !== 'polygon',
2562
+ type: (0, _vue.unref)(currentDrawMode) === 'polygon' ? 'primary' : 'default',
2563
+ onClick: _cache[3] || (_cache[3] = $event => startDraw('polygon'))
2564
+ }, {
2565
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2566
+ size: 20
2567
+ }, {
2568
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_client_icons_vue.IconPolygon))]),
2569
+ _: 1 /* STABLE */
2570
+ })]),
2571
+ _: 1 /* STABLE */
2572
+ }, 8 /* PROPS */, ["title", "disabled", "type"]), (0, _vue.createVNode)((0, _vue.unref)(_divider.default), {
2573
+ direction: "vertical"
2574
+ }), (0, _vue.createVNode)((0, _vue.unref)(_upload.default), {
2575
+ title: (0, _vue.unref)(locale).webgl.uploadGeoJSON,
2576
+ "auto-upload": false,
2577
+ "show-file-list": false,
2578
+ accept: ".geojson,.json",
2579
+ "on-change": handleGeoJSONUpload
2580
+ }, {
2581
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_button.default), {
2582
+ class: "kq-laf-tool-btn"
2583
+ }, {
2584
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2585
+ size: 20
2586
+ }, {
2587
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_client_icons_vue.IconImport))]),
2588
+ _: 1 /* STABLE */
2589
+ })]),
2590
+ _: 1 /* STABLE */
2591
+ })]),
2592
+ _: 1 /* STABLE */
2593
+ }, 8 /* PROPS */, ["title"]), (0, _vue.createVNode)((0, _vue.unref)(_button.default), {
2594
+ title: (0, _vue.unref)(locale).webgl.exportGeoJSON,
2595
+ class: "kq-laf-tool-btn",
2596
+ onClick: exportGeoJSON
2597
+ }, {
2598
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2599
+ size: 20
2600
+ }, {
2601
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_client_icons_vue.IconExport))]),
2602
+ _: 1 /* STABLE */
2603
+ })]),
2604
+ _: 1 /* STABLE */
2605
+ }, 8 /* PROPS */, ["title"]), (0, _vue.createVNode)((0, _vue.unref)(_button.default), {
2606
+ title: (0, _vue.unref)(locale).webgl.deleteCurrent,
2607
+ class: "kq-laf-tool-btn kq-laf-tool-btn-danger",
2608
+ onClick: deleteCurrentDrawing
2609
+ }, {
2610
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2611
+ size: 20,
2612
+ color: "#f56c6c"
2613
+ }, {
2614
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_iconsVue.Delete))]),
2615
+ _: 1 /* STABLE */
2616
+ })]),
2617
+ _: 1 /* STABLE */
2618
+ }, 8 /* PROPS */, ["title"])]), (0, _vue.createCommentVNode)(" 几何图形状态提示 "), (0, _vue.createElementVNode)("div", {
2619
+ class: (0, _vue.normalizeClass)(["kq-laf-geometry-status", {
2620
+ 'has-geometry': (0, _vue.unref)(currentGeoJSON)
2621
+ }])
2622
+ }, [(0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2623
+ size: 14,
2624
+ color: (0, _vue.unref)(currentGeoJSON) ? '#67c23a' : '#f56c6c'
2625
+ }, {
2626
+ default: (0, _vue.withCtx)(() => [(0, _vue.unref)(currentGeoJSON) ? ((0, _vue.openBlock)(), (0, _vue.createBlock)((0, _vue.unref)(_iconsVue.CircleCheckFilled), {
2627
+ key: 0
2628
+ })) : ((0, _vue.openBlock)(), (0, _vue.createBlock)((0, _vue.unref)(_iconsVue.WarningFilled), {
2629
+ key: 1
2630
+ }))]),
2631
+ _: 1 /* STABLE */
2632
+ }, 8 /* PROPS */, ["color"]), (0, _vue.createElementVNode)("span", _hoisted_15, (0, _vue.toDisplayString)((0, _vue.unref)(currentGeoJSON) ? (0, _vue.unref)(locale).webgl.geometryDrawnOrImport : (0, _vue.unref)(locale).webgl.pleaseDrawGeometry), 1 /* TEXT */)], 2 /* CLASS */), (0, _vue.createCommentVNode)(" 基础属性 "), (0, _vue.createVNode)((0, _vue.unref)(_form.default), {
2633
+ "label-position": "left",
2634
+ "label-width": "80"
2635
+ }, {
2636
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2637
+ label: (0, _vue.unref)(locale).webgl.featureCode,
2638
+ required: ""
2639
+ }, {
2640
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_input.default), {
2641
+ modelValue: (0, _vue.unref)(formData).code,
2642
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = $event => (0, _vue.unref)(formData).code = $event),
2643
+ placeholder: (0, _vue.unref)(locale).webgl.enterFeatureCode,
2644
+ disabled: (0, _vue.unref)(isEdit) && !(0, _vue.unref)(editableCode)
2645
+ }, null, 8 /* PROPS */, ["modelValue", "placeholder", "disabled"])]),
2646
+ _: 1 /* STABLE */
2647
+ }, 8 /* PROPS */, ["label"]), (0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2648
+ label: (0, _vue.unref)(locale).webgl.featureName,
2649
+ required: ""
2650
+ }, {
2651
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_input.default), {
2652
+ modelValue: (0, _vue.unref)(formData).name,
2653
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = $event => (0, _vue.unref)(formData).name = $event),
2654
+ placeholder: (0, _vue.unref)(locale).webgl.enterFeatureName
2655
+ }, null, 8 /* PROPS */, ["modelValue", "placeholder"])]),
2656
+ _: 1 /* STABLE */
2657
+ }, 8 /* PROPS */, ["label"]), (0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2658
+ label: (0, _vue.unref)(locale).webgl.featureClass,
2659
+ required: ""
2660
+ }, {
2661
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_select.default), {
2662
+ modelValue: (0, _vue.unref)(formData).featureClass,
2663
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = $event => (0, _vue.unref)(formData).featureClass = $event),
2664
+ style: {
2665
+ "width": "100%"
2666
+ },
2667
+ placeholder: (0, _vue.unref)(locale).webgl.selectFeatureClass,
2668
+ disabled: (0, _vue.unref)(isEdit) || !!(0, _vue.unref)(forcedCategory),
2669
+ onChange: onFeatureClassChange
2670
+ }, {
2671
+ default: (0, _vue.withCtx)(() => [((0, _vue.openBlock)(), (0, _vue.createElementBlock)(_vue.Fragment, null, (0, _vue.renderList)(featureClassOptions, cls => {
2672
+ return (0, _vue.createVNode)((0, _vue.unref)(_select.KqOption), {
2673
+ key: cls.value,
2674
+ label: cls.label,
2675
+ value: cls.value
2676
+ }, {
2677
+ default: (0, _vue.withCtx)(() => [(0, _vue.createTextVNode)((0, _vue.toDisplayString)(cls.label), 1 /* TEXT */)]),
2678
+ _: 2 /* DYNAMIC */
2679
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["label", "value"]);
2680
+ }), 64 /* STABLE_FRAGMENT */))]),
2681
+ _: 1 /* STABLE */
2682
+ }, 8 /* PROPS */, ["modelValue", "placeholder", "disabled"])]),
2683
+ _: 1 /* STABLE */
2684
+ }, 8 /* PROPS */, ["label"]), (0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2685
+ label: (0, _vue.unref)(locale).webgl.featureSubclass
2686
+ }, {
2687
+ default: (0, _vue.withCtx)(() => [((0, _vue.openBlock)(), (0, _vue.createBlock)((0, _vue.unref)(_select.default), {
2688
+ key: (0, _vue.unref)(formData).featureClass,
2689
+ modelValue: (0, _vue.unref)(formData).subclass,
2690
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = $event => (0, _vue.unref)(formData).subclass = $event),
2691
+ style: {
2692
+ "width": "100%"
2693
+ },
2694
+ placeholder: (0, _vue.unref)(locale).webgl.selectSubclass
2695
+ }, {
2696
+ default: (0, _vue.withCtx)(() => [((0, _vue.openBlock)(true), (0, _vue.createElementBlock)(_vue.Fragment, null, (0, _vue.renderList)((0, _vue.unref)(currentSubclassOptions), sub => {
2697
+ return (0, _vue.openBlock)(), (0, _vue.createBlock)((0, _vue.unref)(_select.KqOption), {
2698
+ key: sub.value,
2699
+ label: sub.label,
2700
+ value: sub.value
2701
+ }, {
2702
+ default: (0, _vue.withCtx)(() => [(0, _vue.createTextVNode)((0, _vue.toDisplayString)(sub.label), 1 /* TEXT */)]),
2703
+ _: 2 /* DYNAMIC */
2704
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["label", "value"]);
2705
+ }), 128 /* KEYED_FRAGMENT */))]),
2706
+ _: 1 /* STABLE */
2707
+ }, 8 /* PROPS */, ["modelValue", "placeholder"]))]),
2708
+ _: 1 /* STABLE */
2709
+ }, 8 /* PROPS */, ["label"]), (0, _vue.createCommentVNode)(" 航线类型(仅航线类显示) "), (0, _vue.unref)(showRouteTypeField) ? ((0, _vue.openBlock)(), (0, _vue.createBlock)((0, _vue.unref)(_form.KqFormItem), {
2710
+ key: 0,
2711
+ label: (0, _vue.unref)(locale).webgl.routeType
2712
+ }, {
2713
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_select.default), {
2714
+ modelValue: (0, _vue.unref)(formData).routeType,
2715
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = $event => (0, _vue.unref)(formData).routeType = $event),
2716
+ placeholder: (0, _vue.unref)(locale).webgl.selectRouteType
2717
+ }, {
2718
+ default: (0, _vue.withCtx)(() => [((0, _vue.openBlock)(), (0, _vue.createElementBlock)(_vue.Fragment, null, (0, _vue.renderList)(routeTypeOptions, rt => {
2719
+ return (0, _vue.createVNode)((0, _vue.unref)(_select.KqOption), {
2720
+ key: rt.value,
2721
+ label: rt.label,
2722
+ value: rt.value
2723
+ }, {
2724
+ default: (0, _vue.withCtx)(() => [(0, _vue.createTextVNode)((0, _vue.toDisplayString)(rt.label), 1 /* TEXT */)]),
2725
+ _: 2 /* DYNAMIC */
2726
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["label", "value"]);
2727
+ }), 64 /* STABLE_FRAGMENT */))]),
2728
+ _: 1 /* STABLE */
2729
+ }, 8 /* PROPS */, ["modelValue", "placeholder"])]),
2730
+ _: 1 /* STABLE */
2731
+ }, 8 /* PROPS */, ["label"])) : (0, _vue.createCommentVNode)("v-if", true)]),
2732
+ _: 1 /* STABLE */
2733
+ }), (0, _vue.createCommentVNode)(" 图元设置 "), __props.showSettingPanel ? ((0, _vue.openBlock)(), (0, _vue.createBlock)((0, _vue.unref)(_collapse.default), {
2734
+ key: 0,
2735
+ modelValue: _ctx.collapseValue,
2736
+ "onUpdate:modelValue": _cache[16] || (_cache[16] = $event => _ctx.collapseValue = $event),
2737
+ accordion: ""
2738
+ }, {
2739
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_collapse.KqCollapseItem), {
2740
+ name: "setting"
2741
+ }, {
2742
+ title: (0, _vue.withCtx)(() => [(0, _vue.createTextVNode)((0, _vue.toDisplayString)((0, _vue.unref)(locale).webgl.symbolSettings) + " ", 1 /* TEXT */), (0, _vue.createVNode)((0, _vue.unref)(_icon.default), {
2743
+ size: 14,
2744
+ class: (0, _vue.normalizeClass)({
2745
+ 'is-active': _ctx.collapseValue === 'setting'
2746
+ })
2747
+ }, {
2748
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_CaretRight)]),
2749
+ _: 1 /* STABLE */
2750
+ }, 8 /* PROPS */, ["class"])]),
2751
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_form.default), {
2752
+ "label-width": "90px",
2753
+ "label-position": "left"
2754
+ }, {
2755
+ default: (0, _vue.withCtx)(() => [(0, _vue.createCommentVNode)(" 高度类型 "), (0, _vue.createVNode)(_component_kq_row, {
2756
+ gutter: 20
2757
+ }, {
2758
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_col, {
2759
+ span: 80
2760
+ }, {
2761
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2762
+ label: (0, _vue.unref)(locale).webgl.altitudeType
2763
+ }, {
2764
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_radio_group, {
2765
+ modelValue: (0, _vue.unref)(symbolSettings).altitudeType,
2766
+ "onUpdate:modelValue": _cache[9] || (_cache[9] = $event => (0, _vue.unref)(symbolSettings).altitudeType = $event)
2767
+ }, {
2768
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_radio, {
2769
+ label: "trueHeight"
2770
+ }, {
2771
+ default: (0, _vue.withCtx)(() => [(0, _vue.createTextVNode)((0, _vue.toDisplayString)((0, _vue.unref)(locale).webgl.trueHeight), 1 /* TEXT */)]),
2772
+ _: 1 /* STABLE */
2773
+ }), (0, _vue.createVNode)(_component_kq_radio, {
2774
+ label: "relativeHeight"
2775
+ }, {
2776
+ default: (0, _vue.withCtx)(() => [(0, _vue.createTextVNode)((0, _vue.toDisplayString)((0, _vue.unref)(locale).webgl.relativeHeight), 1 /* TEXT */)]),
2777
+ _: 1 /* STABLE */
2778
+ })]),
2779
+ _: 1 /* STABLE */
2780
+ }, 8 /* PROPS */, ["modelValue"])]),
2781
+ _: 1 /* STABLE */
2782
+ }, 8 /* PROPS */, ["label"])]),
2783
+ _: 1 /* STABLE */
2784
+ })]),
2785
+ _: 1 /* STABLE */
2786
+ }), (0, _vue.createCommentVNode)(" 图形类型 "), (0, _vue.createVNode)(_component_kq_row, {
2787
+ gutter: 20
2788
+ }, {
2789
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_col, {
2790
+ span: 80
2791
+ }, {
2792
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2793
+ label: (0, _vue.unref)(locale).webgl.shapeType
2794
+ }, {
2795
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_radio_group, {
2796
+ modelValue: (0, _vue.unref)(symbolSettings).shapeType,
2797
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = $event => (0, _vue.unref)(symbolSettings).shapeType = $event)
2798
+ }, {
2799
+ default: (0, _vue.withCtx)(() => [((0, _vue.openBlock)(true), (0, _vue.createElementBlock)(_vue.Fragment, null, (0, _vue.renderList)((0, _vue.unref)(currentShapeTypes), st => {
2800
+ return (0, _vue.openBlock)(), (0, _vue.createBlock)(_component_kq_radio, {
2801
+ key: st.value,
2802
+ label: st.value
2803
+ }, {
2804
+ default: (0, _vue.withCtx)(() => [(0, _vue.createTextVNode)((0, _vue.toDisplayString)((0, _vue.unref)(locale).webgl[st.value]), 1 /* TEXT */)]),
2805
+ _: 2 /* DYNAMIC */
2806
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["label"]);
2807
+ }), 128 /* KEYED_FRAGMENT */))]),
2808
+ _: 1 /* STABLE */
2809
+ }, 8 /* PROPS */, ["modelValue"])]),
2810
+ _: 1 /* STABLE */
2811
+ }, 8 /* PROPS */, ["label"])]),
2812
+ _: 1 /* STABLE */
2813
+ })]),
2814
+ _: 1 /* STABLE */
2815
+ }), (0, _vue.createCommentVNode)(" 网格等级 "), (0, _vue.createVNode)(_component_kq_row, {
2816
+ gutter: 20
2817
+ }, {
2818
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_col, {
2819
+ span: 180
2820
+ }, {
2821
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2822
+ label: (0, _vue.unref)(locale).webgl.gridLevel
2823
+ }, {
2824
+ default: (0, _vue.withCtx)(() => [(0, _vue.createElementVNode)("div", _hoisted_16, [(0, _vue.createVNode)((0, _vue.unref)(_slider.default), {
2825
+ modelValue: (0, _vue.unref)(symbolSettings).gridLevel,
2826
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = $event => (0, _vue.unref)(symbolSettings).gridLevel = $event),
2827
+ width: "100%",
2828
+ min: 1,
2829
+ max: 30,
2830
+ "show-input": "",
2831
+ "input-size": "small"
2832
+ }, null, 8 /* PROPS */, ["modelValue"])])]),
2833
+ _: 1 /* STABLE */
2834
+ }, 8 /* PROPS */, ["label"])]),
2835
+ _: 1 /* STABLE */
2836
+ })]),
2837
+ _: 1 /* STABLE */
2838
+ }), (0, _vue.createCommentVNode)(" 缓冲类型 "), (0, _vue.createVNode)(_component_kq_row, {
2839
+ gutter: 20
2840
+ }, {
2841
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_col, {
2842
+ span: 80
2843
+ }, {
2844
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2845
+ label: (0, _vue.unref)(locale).webgl.bufferType
2846
+ }, {
2847
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_radio_group, {
2848
+ modelValue: (0, _vue.unref)(symbolSettings).bufferType,
2849
+ "onUpdate:modelValue": _cache[12] || (_cache[12] = $event => (0, _vue.unref)(symbolSettings).bufferType = $event)
2850
+ }, {
2851
+ default: (0, _vue.withCtx)(() => [((0, _vue.openBlock)(true), (0, _vue.createElementBlock)(_vue.Fragment, null, (0, _vue.renderList)((0, _vue.unref)(currentBufferTypes), bt => {
2852
+ return (0, _vue.openBlock)(), (0, _vue.createBlock)(_component_kq_radio, {
2853
+ key: bt.value,
2854
+ label: bt.value
2855
+ }, {
2856
+ default: (0, _vue.withCtx)(() => [(0, _vue.createTextVNode)((0, _vue.toDisplayString)((0, _vue.unref)(locale).webgl[bt.value]), 1 /* TEXT */)]),
2857
+ _: 2 /* DYNAMIC */
2858
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["label"]);
2859
+ }), 128 /* KEYED_FRAGMENT */))]),
2860
+ _: 1 /* STABLE */
2861
+ }, 8 /* PROPS */, ["modelValue"])]),
2862
+ _: 1 /* STABLE */
2863
+ }, 8 /* PROPS */, ["label"])]),
2864
+ _: 1 /* STABLE */
2865
+ })]),
2866
+ _: 1 /* STABLE */
2867
+ }), (0, _vue.createCommentVNode)(" 缓冲距离 "), (0, _vue.unref)(showBufferDistanceField) ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_kq_row, {
2868
+ key: 0,
2869
+ gutter: 20
2870
+ }, {
2871
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_col, {
2872
+ span: 80
2873
+ }, {
2874
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2875
+ label: `${(0, _vue.unref)(locale).webgl.bufferDistance}(m)`
2876
+ }, {
2877
+ default: (0, _vue.withCtx)(() => [(0, _vue.createElementVNode)("div", _hoisted_17, [(0, _vue.createVNode)((0, _vue.unref)(_slider.default), {
2878
+ modelValue: (0, _vue.unref)(symbolSettings).bufferDistance,
2879
+ "onUpdate:modelValue": _cache[13] || (_cache[13] = $event => (0, _vue.unref)(symbolSettings).bufferDistance = $event),
2880
+ min: 0,
2881
+ max: 10000,
2882
+ step: 10,
2883
+ "show-input": "",
2884
+ "input-size": "small"
2885
+ }, null, 8 /* PROPS */, ["modelValue"])])]),
2886
+ _: 1 /* STABLE */
2887
+ }, 8 /* PROPS */, ["label"])]),
2888
+ _: 1 /* STABLE */
2889
+ })]),
2890
+ _: 1 /* STABLE */
2891
+ })) : (0, _vue.createCommentVNode)("v-if", true), (0, _vue.createCommentVNode)(" 高度上限 "), (0, _vue.createVNode)(_component_kq_row, {
2892
+ gutter: 20
2893
+ }, {
2894
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_col, {
2895
+ span: 80
2896
+ }, {
2897
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2898
+ label: `${(0, _vue.unref)(locale).webgl.upperLimitHeight}(m)`
2899
+ }, {
2900
+ default: (0, _vue.withCtx)(() => [(0, _vue.createElementVNode)("div", _hoisted_18, [(0, _vue.createVNode)((0, _vue.unref)(_slider.default), {
2901
+ modelValue: (0, _vue.unref)(symbolSettings).upperHeight,
2902
+ "onUpdate:modelValue": _cache[14] || (_cache[14] = $event => (0, _vue.unref)(symbolSettings).upperHeight = $event),
2903
+ min: 0,
2904
+ max: 30000,
2905
+ step: 1,
2906
+ "show-input": "",
2907
+ "input-size": "small"
2908
+ }, null, 8 /* PROPS */, ["modelValue"])])]),
2909
+ _: 1 /* STABLE */
2910
+ }, 8 /* PROPS */, ["label"])]),
2911
+ _: 1 /* STABLE */
2912
+ })]),
2913
+ _: 1 /* STABLE */
2914
+ }), (0, _vue.createCommentVNode)(" 高度下限 "), (0, _vue.createVNode)(_component_kq_row, {
2915
+ gutter: 20
2916
+ }, {
2917
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_col, {
2918
+ span: 80
2919
+ }, {
2920
+ default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_form.KqFormItem), {
2921
+ label: `${(0, _vue.unref)(locale).webgl.lowerLimitHeight}(m)`
2922
+ }, {
2923
+ default: (0, _vue.withCtx)(() => [(0, _vue.createElementVNode)("div", _hoisted_19, [(0, _vue.createVNode)((0, _vue.unref)(_slider.default), {
2924
+ modelValue: (0, _vue.unref)(symbolSettings).lowerHeight,
2925
+ "onUpdate:modelValue": _cache[15] || (_cache[15] = $event => (0, _vue.unref)(symbolSettings).lowerHeight = $event),
2926
+ min: 0,
2927
+ max: 30000,
2928
+ step: 1,
2929
+ "show-input": "",
2930
+ "input-size": "small"
2931
+ }, null, 8 /* PROPS */, ["modelValue"])])]),
2932
+ _: 1 /* STABLE */
2933
+ }, 8 /* PROPS */, ["label"])]),
2934
+ _: 1 /* STABLE */
2935
+ })]),
2936
+ _: 1 /* STABLE */
2937
+ })]),
2938
+ _: 1 /* STABLE */
2939
+ })]),
2940
+ _: 1 /* STABLE */
2941
+ })]),
2942
+ _: 1 /* STABLE */
2943
+ }, 8 /* PROPS */, ["modelValue"])) : (0, _vue.createCommentVNode)("v-if", true), (0, _vue.createCommentVNode)(" 底部按钮 "), (0, _vue.createElementVNode)("div", _hoisted_20, [(0, _vue.createVNode)((0, _vue.unref)(_button.default), {
2944
+ type: "primary",
2945
+ onClick: saveFeature
2946
+ }, {
2947
+ default: (0, _vue.withCtx)(() => [(0, _vue.createTextVNode)((0, _vue.toDisplayString)((0, _vue.unref)(locale).webgl.save), 1 /* TEXT */)]),
2948
+ _: 1 /* STABLE */
2949
+ }), (0, _vue.createVNode)((0, _vue.unref)(_button.default), {
2950
+ onClick: clearForm
2951
+ }, {
2952
+ default: (0, _vue.withCtx)(() => [(0, _vue.createTextVNode)((0, _vue.toDisplayString)((0, _vue.unref)(locale).webgl.clear), 1 /* TEXT */)]),
2953
+ _: 1 /* STABLE */
2954
+ })])], 512 /* NEED_PATCH */), [[_vue.vShow, !(0, _vue.unref)(panelCollapsed)]])], 512 /* NEED_PATCH */)), [[_vue.vShow, !(0, _vue.unref)(panelCollapsed)]]) : (0, _vue.createCommentVNode)("v-if", true)])], 2 /* CLASS */);
2955
+ };
2956
+ }
2957
+ });
2958
+
2959
+ /***/ }),
2960
+
2961
+ /***/ 23761:
2962
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
2963
+
2964
+
2965
+
2966
+ var _interopRequireDefault = __webpack_require__(33751);
2967
+ Object.defineProperty(exports, "B", ({
2968
+ value: true
2969
+ }));
2970
+ exports.A = void 0;
2971
+ var _indexFull = __webpack_require__(56363);
2972
+ var _render = _interopRequireDefault(__webpack_require__(74383));
2973
+ var _default = exports.A = {
2974
+ /** 会被用到创建组件的时候 得注意大小写*/
2975
+ name: "KqButton",
2976
+ /** ??没找到用途 */
2977
+ __ANT_BUTTON: true,
2978
+ /** defaultComponent并没有实现任何的逻辑,只是把接收的 Object 直接返回,它的存在是完全让传⼊的整个对象获得对
2979
+ * 应的类型
2980
+ */
2981
+ defaultComponent: _indexFull.ElButton,
2982
+ /**
2983
+ * mixins 混用是一种分发vue组件中可复用功能的非常灵活的方式
2984
+ * 当组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项
2985
+ *
2986
+ * 在开发中,我们可以单独创建一个js文件,在该文件中声明一个mixins对象,然后将组件或页面共用的属性或方法定义在mixins里边,并暴露出去,在需要使用到的组件中引入该js文件即可;
2987
+ * 当组件中定义了相同的属性或方法时,组件里边声明的属性或方法优先级高于mixins;
2988
+ * 虽然mixins中的属性或方法可以被多个组件或页面共用,但是在某个组件或页面中修改相关属性或方法时,不会对其他组件或页面造成影响
2989
+ */
2990
+ mixins: [_render.default],
2991
+ setup(props, context) {
2992
+ _render.default.setup && _render.default.setup(props, context);
2993
+ }
2994
+ };
2995
+
2996
+ /***/ }),
2997
+
2998
+ /***/ 26143:
2999
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3000
+
3001
+
3002
+
3003
+ var _interopRequireDefault = __webpack_require__(33751);
3004
+ Object.defineProperty(exports, "B", ({
3005
+ value: true
3006
+ }));
3007
+ exports.A = void 0;
3008
+ var _indexFull = __webpack_require__(56363);
3009
+ var _render = _interopRequireDefault(__webpack_require__(74383));
3010
+ var _default = exports.A = {
3011
+ name: "KqInput",
3012
+ defaultComponent: _indexFull.ElInput,
3013
+ mixins: [_render.default],
3014
+ setup(props, context) {
3015
+ _render.default.setup && _render.default.setup(props, context);
3016
+ }
3017
+ };
3018
+
3019
+ /***/ }),
3020
+
3021
+ /***/ 26331:
3022
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3023
+
3024
+
3025
+
3026
+ var _interopRequireDefault = __webpack_require__(33751);
3027
+ Object.defineProperty(exports, "B", ({
3028
+ value: true
3029
+ }));
3030
+ exports.A = void 0;
3031
+ var _indexFull = __webpack_require__(56363);
3032
+ var _render = _interopRequireDefault(__webpack_require__(74383));
3033
+ // const { ElScrollbar } = require("element-plus/dist/index.full.js");
3034
+ var _default = exports.A = {
3035
+ name: "KqScrollbar",
3036
+ defaultComponent: _indexFull.ElScrollbar,
3037
+ mixins: [_render.default],
3038
+ setup(props, context) {
3039
+ _render.default.setup && _render.default.setup(props, context);
3040
+ }
3041
+ };
3042
+
3043
+ /***/ }),
3044
+
3045
+ /***/ 28238:
3046
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3047
+
3048
+ // ESM COMPAT FLAG
3049
+ __webpack_require__.r(__webpack_exports__);
3050
+
3051
+ // EXPORTS
3052
+ __webpack_require__.d(__webpack_exports__, {
3053
+ __esModule: function() { return /* reexport */ Slidervue_type_script_lang_js/* __esModule */.B; },
3054
+ "default": function() { return /* binding */ Slider; }
3055
+ });
3056
+
3057
+ // 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/common/_ui/slider/Slider.vue?vue&type=script&lang=js
3058
+ var Slidervue_type_script_lang_js = __webpack_require__(6663);
3059
+ ;// ./src/common/_ui/slider/Slider.vue?vue&type=script&lang=js
3060
+
3061
+ ;// ./src/common/_ui/slider/Slider.vue
3062
+
3063
+
3064
+
3065
+ const __exports__ = Slidervue_type_script_lang_js/* default */.A;
3066
+
3067
+ /* harmony default export */ var Slider = (__exports__);
3068
+
3069
+ /***/ }),
3070
+
3071
+ /***/ 29371:
3072
+ /***/ (function(module) {
3073
+
3074
+ module.exports = require("@element-plus/icons-vue");
3075
+
3076
+ /***/ }),
3077
+
3078
+ /***/ 31885:
3079
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3080
+
3081
+ // ESM COMPAT FLAG
3082
+ __webpack_require__.r(__webpack_exports__);
3083
+
3084
+ // EXPORTS
3085
+ __webpack_require__.d(__webpack_exports__, {
3086
+ __esModule: function() { return /* reexport */ Buttonvue_type_script_lang_js/* __esModule */.B; },
3087
+ "default": function() { return /* binding */ Button; }
3088
+ });
3089
+
3090
+ // 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/common/_ui/button/Button.vue?vue&type=script&lang=js
3091
+ var Buttonvue_type_script_lang_js = __webpack_require__(23761);
3092
+ ;// ./src/common/_ui/button/Button.vue?vue&type=script&lang=js
3093
+
3094
+ ;// ./src/common/_ui/button/Button.vue
3095
+
3096
+
3097
+
3098
+ const __exports__ = Buttonvue_type_script_lang_js/* default */.A;
3099
+
3100
+ /* harmony default export */ var Button = (__exports__);
3101
+
3102
+ /***/ }),
3103
+
3104
+ /***/ 33670:
3105
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3106
+
3107
+ // ESM COMPAT FLAG
3108
+ __webpack_require__.r(__webpack_exports__);
3109
+
3110
+ // EXPORTS
3111
+ __webpack_require__.d(__webpack_exports__, {
3112
+ __esModule: function() { return /* reexport */ OptionGroupvue_type_script_lang_js/* __esModule */.B; },
3113
+ "default": function() { return /* binding */ OptionGroup; }
3114
+ });
3115
+
3116
+ // 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/common/_ui/select/OptionGroup.vue?vue&type=script&lang=js
3117
+ var OptionGroupvue_type_script_lang_js = __webpack_require__(88897);
3118
+ ;// ./src/common/_ui/select/OptionGroup.vue?vue&type=script&lang=js
3119
+
3120
+ ;// ./src/common/_ui/select/OptionGroup.vue
3121
+
3122
+
3123
+
3124
+ const __exports__ = OptionGroupvue_type_script_lang_js/* default */.A;
3125
+
3126
+ /* harmony default export */ var OptionGroup = (__exports__);
3127
+
3128
+ /***/ }),
3129
+
3130
+ /***/ 33751:
3131
+ /***/ (function(module) {
3132
+
3133
+ module.exports = require("@babel/runtime/helpers/interopRequireDefault");
3134
+
3135
+ /***/ }),
3136
+
3137
+ /***/ 39034:
3138
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3139
+
3140
+ // ESM COMPAT FLAG
3141
+ __webpack_require__.r(__webpack_exports__);
3142
+
3143
+ // EXPORTS
3144
+ __webpack_require__.d(__webpack_exports__, {
3145
+ __esModule: function() { return /* reexport */ Inputvue_type_script_lang_js/* __esModule */.B; },
3146
+ "default": function() { return /* binding */ Input; }
3147
+ });
3148
+
3149
+ // 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/common/_ui/input/Input.vue?vue&type=script&lang=js
3150
+ var Inputvue_type_script_lang_js = __webpack_require__(26143);
3151
+ ;// ./src/common/_ui/input/Input.vue?vue&type=script&lang=js
3152
+
3153
+ ;// ./src/common/_ui/input/Input.vue
3154
+
3155
+
3156
+
3157
+ const __exports__ = Inputvue_type_script_lang_js/* default */.A;
3158
+
3159
+ /* harmony default export */ var Input = (__exports__);
3160
+
3161
+ /***/ }),
3162
+
3163
+ /***/ 39466:
3164
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3165
+
3166
+
3167
+
3168
+ var _interopRequireDefault = __webpack_require__(33751);
3169
+ Object.defineProperty(exports, "__esModule", ({
3170
+ value: true
3171
+ }));
3172
+ Object.defineProperty(exports, "KqFormItem", ({
3173
+ enumerable: true,
3174
+ get: function () {
3175
+ return _FormItem.default;
3176
+ }
3177
+ }));
3178
+ Object.defineProperty(exports, "default", ({
3179
+ enumerable: true,
3180
+ get: function () {
3181
+ return _Form.default;
3182
+ }
3183
+ }));
3184
+ var _Form = _interopRequireDefault(__webpack_require__(7955));
3185
+ var _FormItem = _interopRequireDefault(__webpack_require__(51078));
3186
+ var _init = _interopRequireDefault(__webpack_require__(20455));
3187
+ var _KqGIS = __webpack_require__(99602);
3188
+ /*
3189
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
3190
+ * All rights reserved.
3191
+ */
3192
+
3193
+ _Form.default.install = (Vue, opts) => {
3194
+ (0, _init.default)(Vue, opts);
3195
+ Vue.component(_Form.default.name, _Form.default);
3196
+ Vue.component(_FormItem.default.name, _FormItem.default);
3197
+ };
3198
+ _KqGIS.kq_npm_client_common_vue.KqForm = _Form.default;
3199
+ _KqGIS.kq_npm_client_common_vue.KqFormItem = _FormItem.default;
3200
+
3201
+ /***/ }),
3202
+
3203
+ /***/ 39640:
3204
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3205
+
3206
+ // ESM COMPAT FLAG
3207
+ __webpack_require__.r(__webpack_exports__);
3208
+
3209
+ // EXPORTS
3210
+ __webpack_require__.d(__webpack_exports__, {
3211
+ __esModule: function() { return /* reexport */ Collapsevue_type_script_lang_js/* __esModule */.B; },
3212
+ "default": function() { return /* binding */ Collapse; }
3213
+ });
3214
+
3215
+ // 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/common/_ui/collapse/Collapse.vue?vue&type=script&lang=js
3216
+ var Collapsevue_type_script_lang_js = __webpack_require__(61223);
3217
+ ;// ./src/common/_ui/collapse/Collapse.vue?vue&type=script&lang=js
3218
+
3219
+ ;// ./src/common/_ui/collapse/Collapse.vue
3220
+
3221
+
3222
+
3223
+ const __exports__ = Collapsevue_type_script_lang_js/* default */.A;
3224
+
3225
+ /* harmony default export */ var Collapse = (__exports__);
3226
+
3227
+ /***/ }),
3228
+
3229
+ /***/ 39780:
3230
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3231
+
3232
+ // ESM COMPAT FLAG
3233
+ __webpack_require__.r(__webpack_exports__);
3234
+
3235
+ // EXPORTS
3236
+ __webpack_require__.d(__webpack_exports__, {
3237
+ __esModule: function() { return /* reexport */ Groupvue_type_script_lang_js/* __esModule */.B; },
3238
+ "default": function() { return /* binding */ Group; }
3239
+ });
3240
+
3241
+ // 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/common/_ui/button/Group.vue?vue&type=script&lang=js
3242
+ var Groupvue_type_script_lang_js = __webpack_require__(40696);
3243
+ ;// ./src/common/_ui/button/Group.vue?vue&type=script&lang=js
3244
+
3245
+ ;// ./src/common/_ui/button/Group.vue
3246
+
3247
+
3248
+
3249
+ const __exports__ = Groupvue_type_script_lang_js/* default */.A;
3250
+
3251
+ /* harmony default export */ var Group = (__exports__);
3252
+
3253
+ /***/ }),
3254
+
3255
+ /***/ 40669:
3256
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3257
+
3258
+ // ESM COMPAT FLAG
3259
+ __webpack_require__.r(__webpack_exports__);
3260
+
3261
+ // EXPORTS
3262
+ __webpack_require__.d(__webpack_exports__, {
3263
+ __esModule: function() { return /* reexport */ CollapseItemvue_type_script_lang_js/* __esModule */.B; },
3264
+ "default": function() { return /* binding */ CollapseItem; }
3265
+ });
3266
+
3267
+ // 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/common/_ui/collapse/CollapseItem.vue?vue&type=script&lang=js
3268
+ var CollapseItemvue_type_script_lang_js = __webpack_require__(52330);
3269
+ ;// ./src/common/_ui/collapse/CollapseItem.vue?vue&type=script&lang=js
3270
+
3271
+ ;// ./src/common/_ui/collapse/CollapseItem.vue
3272
+
3273
+
3274
+
3275
+ const __exports__ = CollapseItemvue_type_script_lang_js/* default */.A;
3276
+
3277
+ /* harmony default export */ var CollapseItem = (__exports__);
3278
+
3279
+ /***/ }),
3280
+
3281
+ /***/ 40696:
3282
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3283
+
3284
+
3285
+
3286
+ var _interopRequireDefault = __webpack_require__(33751);
3287
+ Object.defineProperty(exports, "B", ({
3288
+ value: true
3289
+ }));
3290
+ exports.A = void 0;
3291
+ var _indexFull = __webpack_require__(56363);
3292
+ var _render = _interopRequireDefault(__webpack_require__(74383));
3293
+ var _default = exports.A = {
3294
+ name: "KqButtonGroup",
3295
+ defaultComponent: _indexFull.ElButtonGroup,
3296
+ mixins: [_render.default],
3297
+ setup(props, context) {
3298
+ _render.default.setup && _render.default.setup(props, context);
3299
+ }
3300
+ };
3301
+
3302
+ /***/ }),
3303
+
3304
+ /***/ 41219:
3305
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3306
+
3307
+
3308
+
3309
+ var _interopRequireDefault = __webpack_require__(33751);
3310
+ Object.defineProperty(exports, "__esModule", ({
3311
+ value: true
3312
+ }));
3313
+ Object.defineProperty(exports, "KqCollapseItem", ({
3314
+ enumerable: true,
3315
+ get: function () {
3316
+ return _CollapseItem.default;
3317
+ }
3318
+ }));
3319
+ Object.defineProperty(exports, "default", ({
3320
+ enumerable: true,
3321
+ get: function () {
3322
+ return _Collapse.default;
3323
+ }
3324
+ }));
3325
+ var _Collapse = _interopRequireDefault(__webpack_require__(39640));
3326
+ var _CollapseItem = _interopRequireDefault(__webpack_require__(40669));
3327
+ var _init = _interopRequireDefault(__webpack_require__(20455));
3328
+ var _KqGIS = __webpack_require__(99602);
3329
+ /*
3330
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
3331
+ * All rights reserved.
3332
+ */
3333
+
3334
+ _Collapse.default.install = (Vue, opts) => {
3335
+ (0, _init.default)(Vue, opts);
3336
+ Vue.component(_Collapse.default.name, _Collapse.default);
3337
+ Vue.component(_CollapseItem.default.name, _CollapseItem.default);
3338
+ };
3339
+ _KqGIS.kq_npm_client_common_vue.KqCollapse = _Collapse.default;
3340
+ _KqGIS.kq_npm_client_common_vue.KqCollapseItem = _CollapseItem.default;
3341
+
3342
+ /***/ }),
3343
+
3344
+ /***/ 42975:
3345
+ /***/ (function(module) {
3346
+
3347
+ module.exports = __WEBPACK_EXTERNAL_MODULE__42975__;
3348
+
3349
+ /***/ }),
3350
+
3351
+ /***/ 44763:
3352
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3353
+
3354
+ // ESM COMPAT FLAG
3355
+ __webpack_require__.r(__webpack_exports__);
3356
+
3357
+ // EXPORTS
3358
+ __webpack_require__.d(__webpack_exports__, {
3359
+ __esModule: function() { return /* reexport */ Optionvue_type_script_lang_js/* __esModule */.B; },
3360
+ "default": function() { return /* binding */ Option; }
3361
+ });
3362
+
3363
+ // 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/common/_ui/select/Option.vue?vue&type=script&lang=js
3364
+ var Optionvue_type_script_lang_js = __webpack_require__(58446);
3365
+ ;// ./src/common/_ui/select/Option.vue?vue&type=script&lang=js
3366
+
3367
+ ;// ./src/common/_ui/select/Option.vue
3368
+
3369
+
3370
+
3371
+ const __exports__ = Optionvue_type_script_lang_js/* default */.A;
3372
+
3373
+ /* harmony default export */ var Option = (__exports__);
3374
+
3375
+ /***/ }),
3376
+
3377
+ /***/ 44993:
3378
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3379
+
3380
+
3381
+
3382
+ var _interopRequireDefault = __webpack_require__(33751);
3383
+ Object.defineProperty(exports, "B", ({
3384
+ value: true
3385
+ }));
3386
+ exports.A = void 0;
3387
+ var _indexFull = __webpack_require__(56363);
3388
+ var _render = _interopRequireDefault(__webpack_require__(74383));
3389
+ var _vue = __webpack_require__(50154);
3390
+ var _default = exports.A = {
3391
+ name: "KqTree",
3392
+ defaultComponent: _indexFull.ElTree,
3393
+ mixins: [_render.default],
3394
+ setup(props, context) {
3395
+ _render.default.setup && _render.default.setup(props, context);
3396
+ // let refs = ref({});
3397
+ // let proxyContext = getCurrentInstance();
3398
+ // onMounted(() => {
3399
+ // refs.value = proxyContext.refs.child;
3400
+ // console.log("proxyContext", refs.value);
3401
+ // });
3402
+ // // return {
3403
+ // // ...refs.value
3404
+ // // }
3405
+ // context.expose({...refs.value})
3406
+ }
3407
+ };
3408
+
3409
+ /***/ }),
3410
+
3411
+ /***/ 47193:
3412
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3413
+
3414
+ // ESM COMPAT FLAG
3415
+ __webpack_require__.r(__webpack_exports__);
3416
+
3417
+ // EXPORTS
3418
+ __webpack_require__.d(__webpack_exports__, {
3419
+ __esModule: function() { return /* reexport */ CheckboxGroupvue_type_script_lang_js/* __esModule */.B; },
3420
+ "default": function() { return /* binding */ CheckboxGroup; }
3421
+ });
3422
+
3423
+ // 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/common/_ui/checkbox/CheckboxGroup.vue?vue&type=script&lang=js
3424
+ var CheckboxGroupvue_type_script_lang_js = __webpack_require__(65790);
3425
+ ;// ./src/common/_ui/checkbox/CheckboxGroup.vue?vue&type=script&lang=js
3426
+
3427
+ ;// ./src/common/_ui/checkbox/CheckboxGroup.vue
3428
+
3429
+
3430
+
3431
+ const __exports__ = CheckboxGroupvue_type_script_lang_js/* default */.A;
3432
+
3433
+ /* harmony default export */ var CheckboxGroup = (__exports__);
3434
+
3435
+ /***/ }),
3436
+
3437
+ /***/ 50154:
3438
+ /***/ (function(module) {
3439
+
3440
+ module.exports = __WEBPACK_EXTERNAL_MODULE__50154__;
3441
+
3442
+ /***/ }),
3443
+
3444
+ /***/ 51078:
3445
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3446
+
3447
+ // ESM COMPAT FLAG
3448
+ __webpack_require__.r(__webpack_exports__);
3449
+
3450
+ // EXPORTS
3451
+ __webpack_require__.d(__webpack_exports__, {
3452
+ __esModule: function() { return /* reexport */ FormItemvue_type_script_lang_js/* __esModule */.B; },
3453
+ "default": function() { return /* binding */ FormItem; }
3454
+ });
3455
+
3456
+ // 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/common/_ui/form/FormItem.vue?vue&type=script&lang=js
3457
+ var FormItemvue_type_script_lang_js = __webpack_require__(19000);
3458
+ ;// ./src/common/_ui/form/FormItem.vue?vue&type=script&lang=js
3459
+
3460
+ ;// ./src/common/_ui/form/FormItem.vue
3461
+
3462
+
3463
+
3464
+ const __exports__ = FormItemvue_type_script_lang_js/* default */.A;
3465
+
3466
+ /* harmony default export */ var FormItem = (__exports__);
3467
+
3468
+ /***/ }),
3469
+
3470
+ /***/ 52330:
3471
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3472
+
3473
+
3474
+
3475
+ var _interopRequireDefault = __webpack_require__(33751);
3476
+ Object.defineProperty(exports, "B", ({
3477
+ value: true
3478
+ }));
3479
+ exports.A = void 0;
3480
+ var _indexFull = __webpack_require__(56363);
3481
+ var _render = _interopRequireDefault(__webpack_require__(74383));
3482
+ var _default = exports.A = {
3483
+ name: "KqCollapseItem",
3484
+ defaultComponent: _indexFull.ElCollapseItem,
3485
+ mixins: [_render.default],
3486
+ setup(props, context) {
3487
+ _render.default.setup && _render.default.setup(props, context);
3488
+ }
3489
+ };
3490
+
3491
+ /***/ }),
3492
+
3493
+ /***/ 53968:
3494
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3495
+
3496
+ // ESM COMPAT FLAG
3497
+ __webpack_require__.r(__webpack_exports__);
3498
+
3499
+ // EXPORTS
3500
+ __webpack_require__.d(__webpack_exports__, {
3501
+ __esModule: function() { return /* reexport */ Scrollbarvue_type_script_lang_js/* __esModule */.B; },
3502
+ "default": function() { return /* binding */ Scrollbar; }
3503
+ });
3504
+
3505
+ // 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/common/_ui/scrollbar/Scrollbar.vue?vue&type=script&lang=js
3506
+ var Scrollbarvue_type_script_lang_js = __webpack_require__(26331);
3507
+ ;// ./src/common/_ui/scrollbar/Scrollbar.vue?vue&type=script&lang=js
3508
+
3509
+ ;// ./src/common/_ui/scrollbar/Scrollbar.vue
3510
+
3511
+
3512
+
3513
+ const __exports__ = Scrollbarvue_type_script_lang_js/* default */.A;
3514
+
3515
+ /* harmony default export */ var Scrollbar = (__exports__);
3516
+
3517
+ /***/ }),
3518
+
3519
+ /***/ 56363:
3520
+ /***/ (function(module) {
3521
+
3522
+ module.exports = require("element-plus/dist/index.full.js");
3523
+
3524
+ /***/ }),
3525
+
3526
+ /***/ 58446:
3527
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3528
+
3529
+
3530
+
3531
+ var _interopRequireDefault = __webpack_require__(33751);
3532
+ Object.defineProperty(exports, "B", ({
3533
+ value: true
3534
+ }));
3535
+ exports.A = void 0;
3536
+ var _indexFull = __webpack_require__(56363);
3537
+ var _render = _interopRequireDefault(__webpack_require__(74383));
3538
+ var _default = exports.A = {
3539
+ name: "KqOption",
3540
+ defaultComponent: _indexFull.ElOption,
3541
+ mixins: [_render.default],
3542
+ setup(props, context) {
3543
+ _render.default.setup && _render.default.setup(props, context);
3544
+ }
3545
+ };
3546
+
3547
+ /***/ }),
3548
+
3549
+ /***/ 60479:
3550
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3551
+
3552
+
3553
+
3554
+ var _interopRequireDefault = __webpack_require__(33751);
3555
+ Object.defineProperty(exports, "__esModule", ({
3556
+ value: true
3557
+ }));
3558
+ exports["default"] = void 0;
3559
+ var _Tooltip = _interopRequireDefault(__webpack_require__(16676));
3560
+ var _init = _interopRequireDefault(__webpack_require__(20455));
3561
+ var _KqGIS = __webpack_require__(99602);
3562
+ /*
3563
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
3564
+ * All rights reserved.
3565
+ */
3566
+
3567
+ _Tooltip.default.install = (Vue, opts) => {
3568
+ (0, _init.default)(Vue, opts);
3569
+ Vue.component(_Tooltip.default.name, _Tooltip.default);
3570
+ };
3571
+ var _default = exports["default"] = _Tooltip.default;
3572
+ _KqGIS.kq_npm_client_common_vue.KqTooltip = _Tooltip.default;
3573
+
3574
+ /***/ }),
3575
+
3576
+ /***/ 61223:
3577
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3578
+
3579
+
3580
+
3581
+ var _interopRequireDefault = __webpack_require__(33751);
3582
+ Object.defineProperty(exports, "B", ({
3583
+ value: true
3584
+ }));
3585
+ exports.A = void 0;
3586
+ var _indexFull = __webpack_require__(56363);
3587
+ var _render = _interopRequireDefault(__webpack_require__(74383));
3588
+ var _default = exports.A = {
3589
+ name: "KqCollapse",
3590
+ defaultComponent: _indexFull.ElCollapse,
3591
+ mixins: [_render.default],
3592
+ setup(props, context) {
3593
+ _render.default.setup && _render.default.setup(props, context);
3594
+ }
3595
+ };
3596
+
3597
+ /***/ }),
3598
+
3599
+ /***/ 62842:
3600
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3601
+
3602
+
3603
+
3604
+ var _interopRequireDefault = __webpack_require__(33751);
3605
+ Object.defineProperty(exports, "__esModule", ({
3606
+ value: true
3607
+ }));
3608
+ exports["default"] = void 0;
3609
+ var _Scrollbar = _interopRequireDefault(__webpack_require__(53968));
3610
+ var _KqGIS = __webpack_require__(99602);
3611
+ /*
3612
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
3613
+ * All rights reserved.
3614
+ */
3615
+
3616
+ _Scrollbar.default.install = Vue => {
3617
+ Vue.component(_Scrollbar.default.name, _Scrollbar.default);
3618
+ };
3619
+ var _default = exports["default"] = _Scrollbar.default;
3620
+ _KqGIS.kq_npm_client_common_vue.KqScrollbar = _Scrollbar.default;
3621
+
3622
+ /***/ }),
3623
+
3624
+ /***/ 63685:
3625
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3626
+
3627
+ // ESM COMPAT FLAG
3628
+ __webpack_require__.r(__webpack_exports__);
3629
+
3630
+ // EXPORTS
3631
+ __webpack_require__.d(__webpack_exports__, {
3632
+ __esModule: function() { return /* reexport */ Uploadvue_type_script_lang_js/* __esModule */.B; },
3633
+ "default": function() { return /* binding */ Upload; }
3634
+ });
3635
+
3636
+ // 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/common/_ui/upload/Upload.vue?vue&type=script&lang=js
3637
+ var Uploadvue_type_script_lang_js = __webpack_require__(91039);
3638
+ ;// ./src/common/_ui/upload/Upload.vue?vue&type=script&lang=js
3639
+
3640
+ ;// ./src/common/_ui/upload/Upload.vue
3641
+
3642
+
3643
+
3644
+ const __exports__ = Uploadvue_type_script_lang_js/* default */.A;
3645
+
3646
+ /* harmony default export */ var Upload = (__exports__);
3647
+
3648
+ /***/ }),
3649
+
3650
+ /***/ 65310:
3651
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3652
+
3653
+ // ESM COMPAT FLAG
3654
+ __webpack_require__.r(__webpack_exports__);
3655
+
3656
+ // EXPORTS
3657
+ __webpack_require__.d(__webpack_exports__, {
3658
+ __esModule: function() { return /* reexport */ Treevue_type_script_lang_js/* __esModule */.B; },
3659
+ "default": function() { return /* binding */ Tree; }
3660
+ });
3661
+
3662
+ // 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/common/_ui/tree/Tree.vue?vue&type=script&lang=js
3663
+ var Treevue_type_script_lang_js = __webpack_require__(44993);
3664
+ ;// ./src/common/_ui/tree/Tree.vue?vue&type=script&lang=js
3665
+
3666
+ ;// ./src/common/_ui/tree/Tree.vue
3667
+
3668
+
3669
+
3670
+ const __exports__ = Treevue_type_script_lang_js/* default */.A;
3671
+
3672
+ /* harmony default export */ var Tree = (__exports__);
3673
+
3674
+ /***/ }),
3675
+
3676
+ /***/ 65698:
3677
+ /***/ (function(module) {
3678
+
3679
+ module.exports = require("@kq_npm/client_icons_vue");
3680
+
3681
+ /***/ }),
3682
+
3683
+ /***/ 65790:
3684
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3685
+
3686
+
3687
+
3688
+ var _interopRequireDefault = __webpack_require__(33751);
3689
+ Object.defineProperty(exports, "B", ({
3690
+ value: true
3691
+ }));
3692
+ exports.A = void 0;
3693
+ var _indexFull = __webpack_require__(56363);
3694
+ var _render = _interopRequireDefault(__webpack_require__(74383));
3695
+ var _default = exports.A = {
3696
+ name: "KqCheckboxGroup",
3697
+ defaultComponent: _indexFull.ElCheckboxGroup,
3698
+ mixins: [_render.default],
3699
+ setup(props, context) {
3700
+ _render.default.setup && _render.default.setup(props, context);
3701
+ }
3702
+ };
3703
+
3704
+ /***/ }),
3705
+
3706
+ /***/ 66262:
3707
+ /***/ (function(__unused_webpack_module, exports) {
3708
+
3709
+ var __webpack_unused_export__;
3710
+
3711
+ __webpack_unused_export__ = ({ value: true });
3712
+ // runtime helper for setting properties on components
3713
+ // in a tree-shakable way
3714
+ exports.A = (sfc, props) => {
3715
+ const target = sfc.__vccOpts || sfc;
3716
+ for (const [key, val] of props) {
3717
+ target[key] = val;
3718
+ }
3719
+ return target;
3720
+ };
3721
+
3722
+
3723
+ /***/ }),
3724
+
3725
+ /***/ 67083:
3726
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3727
+
3728
+
3729
+
3730
+ var _interopRequireDefault = __webpack_require__(33751);
3731
+ Object.defineProperty(exports, "B", ({
3732
+ value: true
3733
+ }));
3734
+ exports.A = void 0;
3735
+ var _indexFull = __webpack_require__(56363);
3736
+ var _render = _interopRequireDefault(__webpack_require__(74383));
3737
+ var _default = exports.A = {
3738
+ name: "KqCheckboxButton",
3739
+ defaultComponent: _indexFull.ElCheckboxButton,
3740
+ mixins: [_render.default],
3741
+ setup(props, context) {
3742
+ _render.default.setup && _render.default.setup(props, context);
3743
+ }
3744
+ };
3745
+
3746
+ /***/ }),
3747
+
3748
+ /***/ 68676:
3749
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3750
+
3751
+
3752
+
3753
+ var _interopRequireDefault = __webpack_require__(33751);
3754
+ Object.defineProperty(exports, "__esModule", ({
3755
+ value: true
3756
+ }));
3757
+ Object.defineProperty(exports, "KqButtonGroup", ({
3758
+ enumerable: true,
3759
+ get: function () {
3760
+ return _Group.default;
3761
+ }
3762
+ }));
3763
+ Object.defineProperty(exports, "default", ({
3764
+ enumerable: true,
3765
+ get: function () {
3766
+ return _Button.default;
3767
+ }
3768
+ }));
3769
+ var _Button = _interopRequireDefault(__webpack_require__(31885));
3770
+ var _Group = _interopRequireDefault(__webpack_require__(39780));
3771
+ var _init = _interopRequireDefault(__webpack_require__(20455));
3772
+ var _KqGIS = __webpack_require__(99602);
3773
+ /*
3774
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
3775
+ * All rights reserved.
3776
+ */
3777
+
3778
+ _Button.default.install = (Vue, opts) => {
3779
+ (0, _init.default)(Vue, opts);
3780
+ Vue.component(_Button.default.name, _Button.default);
3781
+ Vue.component(_Group.default.name, _Group.default);
3782
+ };
3783
+ _KqGIS.kq_npm_client_common_vue.KqButton = _Button.default;
3784
+ _KqGIS.kq_npm_client_common_vue.KqBreadcrumb = _Group.default;
3785
+
3786
+ /***/ }),
3787
+
3788
+ /***/ 71323:
3789
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3790
+
3791
+
3792
+
3793
+ var _interopRequireDefault = __webpack_require__(33751);
3794
+ Object.defineProperty(exports, "__esModule", ({
3795
+ value: true
3796
+ }));
3797
+ exports["default"] = void 0;
3798
+ var _indexFull = __webpack_require__(56363);
3799
+ var _KqGIS = __webpack_require__(99602);
3800
+ var _init = _interopRequireDefault(__webpack_require__(20455));
3801
+ /*
3802
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
3803
+ * All rights reserved.
3804
+ */
3805
+
3806
+ _indexFull.ElMessage.install = (Vue, opts) => {
3807
+ (0, _init.default)(Vue, opts);
3808
+ Vue.component("KqMessage", _indexFull.ElMessage);
3809
+ };
3810
+ var _default = exports["default"] = _indexFull.ElMessage;
3811
+ _KqGIS.kq_npm_client_common_vue.KqMessage = _indexFull.ElMessage;
3812
+
3813
+ /***/ }),
3814
+
3815
+ /***/ 74253:
3816
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3817
+
3818
+ // ESM COMPAT FLAG
3819
+ __webpack_require__.r(__webpack_exports__);
3820
+
3821
+ // EXPORTS
3822
+ __webpack_require__.d(__webpack_exports__, {
3823
+ __esModule: function() { return /* reexport */ Dividervue_type_script_lang_js/* __esModule */.B; },
3824
+ "default": function() { return /* binding */ Divider; }
3825
+ });
3826
+
3827
+ // 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/common/_ui/divider/Divider.vue?vue&type=script&lang=js
3828
+ var Dividervue_type_script_lang_js = __webpack_require__(96991);
3829
+ ;// ./src/common/_ui/divider/Divider.vue?vue&type=script&lang=js
3830
+
3831
+ ;// ./src/common/_ui/divider/Divider.vue
3832
+
3833
+
3834
+
3835
+ const __exports__ = Dividervue_type_script_lang_js/* default */.A;
3836
+
3837
+ /* harmony default export */ var Divider = (__exports__);
3838
+
3839
+ /***/ }),
3840
+
3841
+ /***/ 74383:
3842
+ /***/ (function(module) {
3843
+
3844
+ module.exports = __WEBPACK_EXTERNAL_MODULE__74383__;
3845
+
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
+ /***/ }),
3863
+
3864
+ /***/ 75797:
3865
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3866
+
3867
+
3868
+
3869
+ var _interopRequireDefault = __webpack_require__(33751);
3870
+ Object.defineProperty(exports, "B", ({
3871
+ value: true
3872
+ }));
3873
+ exports.A = void 0;
3874
+ var _indexFull = __webpack_require__(56363);
3875
+ var _render = _interopRequireDefault(__webpack_require__(74383));
3876
+ var _vue = __webpack_require__(50154);
3877
+ var _default = exports.A = {
3878
+ name: "KqForm",
3879
+ defaultComponent: _indexFull.ElForm,
3880
+ mixins: [_render.default],
3881
+ setup(props, context) {
3882
+ _render.default.setup && _render.default.setup(props, context);
3883
+ // ElForm.setup(props, context);
3884
+ }
3885
+ };
3886
+
3887
+ /***/ }),
3888
+
3889
+ /***/ 76314:
3890
+ /***/ (function(module) {
3891
+
3892
+
3893
+
3894
+ /*
3895
+ MIT License http://www.opensource.org/licenses/mit-license.php
3896
+ Author Tobias Koppers @sokra
3897
+ */
3898
+ // css base code, injected by the css-loader
3899
+ // eslint-disable-next-line func-names
3900
+ module.exports = function (cssWithMappingToString) {
3901
+ var list = []; // return the list of modules as css string
3902
+
3903
+ list.toString = function toString() {
3904
+ return this.map(function (item) {
3905
+ var content = cssWithMappingToString(item);
3906
+
3907
+ if (item[2]) {
3908
+ return "@media ".concat(item[2], " {").concat(content, "}");
3909
+ }
3910
+
3911
+ return content;
3912
+ }).join("");
3913
+ }; // import a list of modules into the list
3914
+ // eslint-disable-next-line func-names
3915
+
3916
+
3917
+ list.i = function (modules, mediaQuery, dedupe) {
3918
+ if (typeof modules === "string") {
3919
+ // eslint-disable-next-line no-param-reassign
3920
+ modules = [[null, modules, ""]];
3921
+ }
3922
+
3923
+ var alreadyImportedModules = {};
3924
+
3925
+ if (dedupe) {
3926
+ for (var i = 0; i < this.length; i++) {
3927
+ // eslint-disable-next-line prefer-destructuring
3928
+ var id = this[i][0];
3929
+
3930
+ if (id != null) {
3931
+ alreadyImportedModules[id] = true;
3932
+ }
3933
+ }
3934
+ }
3935
+
3936
+ for (var _i = 0; _i < modules.length; _i++) {
3937
+ var item = [].concat(modules[_i]);
3938
+
3939
+ if (dedupe && alreadyImportedModules[item[0]]) {
3940
+ // eslint-disable-next-line no-continue
3941
+ continue;
3942
+ }
3943
+
3944
+ if (mediaQuery) {
3945
+ if (!item[2]) {
3946
+ item[2] = mediaQuery;
3947
+ } else {
3948
+ item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
3949
+ }
3950
+ }
3951
+
3952
+ list.push(item);
3953
+ }
3954
+ };
3955
+
3956
+ return list;
3957
+ };
3958
+
3959
+ /***/ }),
3960
+
3961
+ /***/ 77228:
3962
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3963
+
3964
+
3965
+
3966
+ var _interopRequireDefault = __webpack_require__(33751);
3967
+ Object.defineProperty(exports, "__esModule", ({
3968
+ value: true
3969
+ }));
3970
+ exports["default"] = void 0;
3971
+ var _Input = _interopRequireDefault(__webpack_require__(39034));
3972
+ var _init = _interopRequireDefault(__webpack_require__(20455));
3973
+ var _KqGIS = __webpack_require__(99602);
3974
+ /*
3975
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
3976
+ * All rights reserved.
3977
+ */
3978
+
3979
+ _Input.default.install = (Vue, opts) => {
3980
+ (0, _init.default)(Vue, opts);
3981
+ Vue.component(_Input.default.name, _Input.default);
3982
+ };
3983
+ var _default = exports["default"] = _Input.default;
3984
+ _KqGIS.kq_npm_client_common_vue.KqRadio = _Input.default;
3985
+
3986
+ /***/ }),
3987
+
3988
+ /***/ 77249:
3989
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3990
+
3991
+ // ESM COMPAT FLAG
3992
+ __webpack_require__.r(__webpack_exports__);
3993
+
3994
+ // EXPORTS
3995
+ __webpack_require__.d(__webpack_exports__, {
3996
+ __esModule: function() { return /* reexport */ Selectvue_type_script_lang_js/* __esModule */.B; },
3997
+ "default": function() { return /* binding */ Select; }
3998
+ });
3999
+
4000
+ // 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/common/_ui/select/Select.vue?vue&type=script&lang=js
4001
+ var Selectvue_type_script_lang_js = __webpack_require__(95109);
4002
+ ;// ./src/common/_ui/select/Select.vue?vue&type=script&lang=js
4003
+
4004
+ ;// ./src/common/_ui/select/Select.vue
4005
+
4006
+
4007
+
4008
+ const __exports__ = Selectvue_type_script_lang_js/* default */.A;
4009
+
4010
+ /* harmony default export */ var Select = (__exports__);
4011
+
4012
+ /***/ }),
4013
+
4014
+ /***/ 80881:
4015
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4016
+
4017
+
4018
+
4019
+ var _interopRequireDefault = __webpack_require__(33751);
4020
+ Object.defineProperty(exports, "__esModule", ({
4021
+ value: true
4022
+ }));
4023
+ exports["default"] = void 0;
4024
+ var _Icon = _interopRequireDefault(__webpack_require__(80979));
4025
+ var _init = _interopRequireDefault(__webpack_require__(20455));
4026
+ var _KqGIS = __webpack_require__(99602);
4027
+ /*
4028
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
4029
+ * All rights reserved.
4030
+ */
4031
+
4032
+ _Icon.default.install = (Vue, opts) => {
4033
+ (0, _init.default)(Vue, opts);
4034
+ Vue.component(_Icon.default.name, _Icon.default);
4035
+ };
4036
+ var _default = exports["default"] = _Icon.default;
4037
+ _KqGIS.kq_npm_client_common_vue.KqIcon = _Icon.default;
4038
+
4039
+ /***/ }),
4040
+
4041
+ /***/ 80887:
4042
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4043
+
4044
+
4045
+
4046
+ var _interopRequireDefault = __webpack_require__(33751);
4047
+ Object.defineProperty(exports, "B", ({
4048
+ value: true
4049
+ }));
4050
+ exports.A = void 0;
4051
+ var _indexFull = __webpack_require__(56363);
4052
+ var _render = _interopRequireDefault(__webpack_require__(74383));
4053
+ var _default = exports.A = {
4054
+ name: "KqIcon",
4055
+ defaultComponent: _indexFull.ElIcon,
4056
+ mixins: [_render.default],
4057
+ setup(props, context) {
4058
+ _render.default.setup && _render.default.setup(props, context);
4059
+ }
4060
+ };
4061
+
4062
+ /***/ }),
4063
+
4064
+ /***/ 80979:
4065
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4066
+
4067
+ // ESM COMPAT FLAG
4068
+ __webpack_require__.r(__webpack_exports__);
4069
+
4070
+ // EXPORTS
4071
+ __webpack_require__.d(__webpack_exports__, {
4072
+ __esModule: function() { return /* reexport */ Iconvue_type_script_lang_js/* __esModule */.B; },
4073
+ "default": function() { return /* binding */ Icon; }
4074
+ });
4075
+
4076
+ // 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/common/_ui/icon/Icon.vue?vue&type=script&lang=js
4077
+ var Iconvue_type_script_lang_js = __webpack_require__(80887);
4078
+ ;// ./src/common/_ui/icon/Icon.vue?vue&type=script&lang=js
4079
+
4080
+ ;// ./src/common/_ui/icon/Icon.vue
4081
+
4082
+
4083
+
4084
+ const __exports__ = Iconvue_type_script_lang_js/* default */.A;
4085
+
4086
+ /* harmony default export */ var Icon = (__exports__);
4087
+
4088
+ /***/ }),
4089
+
4090
+ /***/ 81328:
4091
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4092
+
4093
+
4094
+
4095
+ var _interopRequireDefault = __webpack_require__(33751);
4096
+ Object.defineProperty(exports, "__esModule", ({
4097
+ value: true
4098
+ }));
4099
+ exports["default"] = void 0;
4100
+ var _indexFull = __webpack_require__(56363);
4101
+ var _init = _interopRequireDefault(__webpack_require__(20455));
4102
+ var _KqGIS = __webpack_require__(99602);
4103
+ /*
4104
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
4105
+ * All rights reserved.
4106
+ */
4107
+
4108
+ _indexFull.ElMessageBox.install = (Vue, opts) => {
4109
+ (0, _init.default)(Vue, opts);
4110
+ Vue.component("KqMessageBox", _indexFull.ElMessageBox);
4111
+ };
4112
+ var _default = exports["default"] = _indexFull.ElMessageBox;
4113
+ _KqGIS.kq_npm_client_common_vue.KqMessageBox = _indexFull.ElMessageBox;
4114
+
4115
+ /***/ }),
4116
+
4117
+ /***/ 81751:
4118
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4119
+
4120
+
4121
+
4122
+ var _interopRequireDefault = __webpack_require__(33751);
4123
+ Object.defineProperty(exports, "B", ({
4124
+ value: true
4125
+ }));
4126
+ exports.A = void 0;
4127
+ var _indexFull = __webpack_require__(56363);
4128
+ var _render = _interopRequireDefault(__webpack_require__(74383));
4129
+ var _default = exports.A = {
4130
+ name: "KqCheckbox",
4131
+ defaultComponent: _indexFull.ElCheckbox,
4132
+ mixins: [_render.default],
4133
+ setup(props, context) {
4134
+ _render.default.setup && _render.default.setup(props, context);
4135
+ }
4136
+ };
4137
+
4138
+ /***/ }),
4139
+
4140
+ /***/ 85061:
4141
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4142
+
4143
+ // ESM COMPAT FLAG
4144
+ __webpack_require__.r(__webpack_exports__);
4145
+
4146
+ // EXPORTS
4147
+ __webpack_require__.d(__webpack_exports__, {
4148
+ __esModule: function() { return /* reexport */ CheckboxButtonvue_type_script_lang_js/* __esModule */.B; },
4149
+ "default": function() { return /* binding */ CheckboxButton; }
4150
+ });
4151
+
4152
+ // 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/common/_ui/checkbox/CheckboxButton.vue?vue&type=script&lang=js
4153
+ var CheckboxButtonvue_type_script_lang_js = __webpack_require__(67083);
4154
+ ;// ./src/common/_ui/checkbox/CheckboxButton.vue?vue&type=script&lang=js
4155
+
4156
+ ;// ./src/common/_ui/checkbox/CheckboxButton.vue
4157
+
4158
+
4159
+
4160
+ const __exports__ = CheckboxButtonvue_type_script_lang_js/* default */.A;
4161
+
4162
+ /* harmony default export */ var CheckboxButton = (__exports__);
4163
+
4164
+ /***/ }),
4165
+
4166
+ /***/ 85072:
4167
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
4168
+
4169
+
4170
+
4171
+ var isOldIE = function isOldIE() {
4172
+ var memo;
4173
+ return function memorize() {
4174
+ if (typeof memo === 'undefined') {
4175
+ // Test for IE <= 9 as proposed by Browserhacks
4176
+ // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
4177
+ // Tests for existence of standard globals is to allow style-loader
4178
+ // to operate correctly into non-standard environments
4179
+ // @see https://github.com/webpack-contrib/style-loader/issues/177
4180
+ memo = Boolean(window && document && document.all && !window.atob);
4181
+ }
4182
+
4183
+ return memo;
4184
+ };
4185
+ }();
4186
+
4187
+ var getTarget = function getTarget() {
4188
+ var memo = {};
4189
+ return function memorize(target) {
4190
+ if (typeof memo[target] === 'undefined') {
4191
+ var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
4192
+
4193
+ if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
4194
+ try {
4195
+ // This will throw an exception if access to iframe is blocked
4196
+ // due to cross-origin restrictions
4197
+ styleTarget = styleTarget.contentDocument.head;
4198
+ } catch (e) {
4199
+ // istanbul ignore next
4200
+ styleTarget = null;
4201
+ }
4202
+ }
4203
+
4204
+ memo[target] = styleTarget;
4205
+ }
4206
+
4207
+ return memo[target];
4208
+ };
4209
+ }();
4210
+
4211
+ var stylesInDom = [];
4212
+
4213
+ function getIndexByIdentifier(identifier) {
4214
+ var result = -1;
4215
+
4216
+ for (var i = 0; i < stylesInDom.length; i++) {
4217
+ if (stylesInDom[i].identifier === identifier) {
4218
+ result = i;
4219
+ break;
4220
+ }
4221
+ }
4222
+
4223
+ return result;
4224
+ }
4225
+
4226
+ function modulesToDom(list, options) {
4227
+ var idCountMap = {};
4228
+ var identifiers = [];
4229
+
4230
+ for (var i = 0; i < list.length; i++) {
4231
+ var item = list[i];
4232
+ var id = options.base ? item[0] + options.base : item[0];
4233
+ var count = idCountMap[id] || 0;
4234
+ var identifier = "".concat(id, " ").concat(count);
4235
+ idCountMap[id] = count + 1;
4236
+ var index = getIndexByIdentifier(identifier);
4237
+ var obj = {
4238
+ css: item[1],
4239
+ media: item[2],
4240
+ sourceMap: item[3]
4241
+ };
4242
+
4243
+ if (index !== -1) {
4244
+ stylesInDom[index].references++;
4245
+ stylesInDom[index].updater(obj);
4246
+ } else {
4247
+ stylesInDom.push({
4248
+ identifier: identifier,
4249
+ updater: addStyle(obj, options),
4250
+ references: 1
4251
+ });
4252
+ }
4253
+
4254
+ identifiers.push(identifier);
4255
+ }
4256
+
4257
+ return identifiers;
4258
+ }
4259
+
4260
+ function insertStyleElement(options) {
4261
+ var style = document.createElement('style');
4262
+ var attributes = options.attributes || {};
4263
+
4264
+ if (typeof attributes.nonce === 'undefined') {
4265
+ var nonce = true ? __webpack_require__.nc : 0;
4266
+
4267
+ if (nonce) {
4268
+ attributes.nonce = nonce;
4269
+ }
4270
+ }
4271
+
4272
+ Object.keys(attributes).forEach(function (key) {
4273
+ style.setAttribute(key, attributes[key]);
4274
+ });
4275
+
4276
+ if (typeof options.insert === 'function') {
4277
+ options.insert(style);
4278
+ } else {
4279
+ var target = getTarget(options.insert || 'head');
4280
+
4281
+ if (!target) {
4282
+ throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
4283
+ }
4284
+
4285
+ target.appendChild(style);
4286
+ }
4287
+
4288
+ return style;
4289
+ }
4290
+
4291
+ function removeStyleElement(style) {
4292
+ // istanbul ignore if
4293
+ if (style.parentNode === null) {
4294
+ return false;
4295
+ }
4296
+
4297
+ style.parentNode.removeChild(style);
4298
+ }
4299
+ /* istanbul ignore next */
4300
+
4301
+
4302
+ var replaceText = function replaceText() {
4303
+ var textStore = [];
4304
+ return function replace(index, replacement) {
4305
+ textStore[index] = replacement;
4306
+ return textStore.filter(Boolean).join('\n');
4307
+ };
4308
+ }();
4309
+
4310
+ function applyToSingletonTag(style, index, remove, obj) {
4311
+ var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE
4312
+
4313
+ /* istanbul ignore if */
4314
+
4315
+ if (style.styleSheet) {
4316
+ style.styleSheet.cssText = replaceText(index, css);
4317
+ } else {
4318
+ var cssNode = document.createTextNode(css);
4319
+ var childNodes = style.childNodes;
4320
+
4321
+ if (childNodes[index]) {
4322
+ style.removeChild(childNodes[index]);
4323
+ }
4324
+
4325
+ if (childNodes.length) {
4326
+ style.insertBefore(cssNode, childNodes[index]);
4327
+ } else {
4328
+ style.appendChild(cssNode);
4329
+ }
4330
+ }
4331
+ }
4332
+
4333
+ function applyToTag(style, options, obj) {
4334
+ var css = obj.css;
4335
+ var media = obj.media;
4336
+ var sourceMap = obj.sourceMap;
4337
+
4338
+ if (media) {
4339
+ style.setAttribute('media', media);
4340
+ } else {
4341
+ style.removeAttribute('media');
4342
+ }
4343
+
4344
+ if (sourceMap && typeof btoa !== 'undefined') {
4345
+ css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
4346
+ } // For old IE
4347
+
4348
+ /* istanbul ignore if */
4349
+
4350
+
4351
+ if (style.styleSheet) {
4352
+ style.styleSheet.cssText = css;
4353
+ } else {
4354
+ while (style.firstChild) {
4355
+ style.removeChild(style.firstChild);
4356
+ }
4357
+
4358
+ style.appendChild(document.createTextNode(css));
4359
+ }
4360
+ }
4361
+
4362
+ var singleton = null;
4363
+ var singletonCounter = 0;
4364
+
4365
+ function addStyle(obj, options) {
4366
+ var style;
4367
+ var update;
4368
+ var remove;
4369
+
4370
+ if (options.singleton) {
4371
+ var styleIndex = singletonCounter++;
4372
+ style = singleton || (singleton = insertStyleElement(options));
4373
+ update = applyToSingletonTag.bind(null, style, styleIndex, false);
4374
+ remove = applyToSingletonTag.bind(null, style, styleIndex, true);
4375
+ } else {
4376
+ style = insertStyleElement(options);
4377
+ update = applyToTag.bind(null, style, options);
4378
+
4379
+ remove = function remove() {
4380
+ removeStyleElement(style);
4381
+ };
4382
+ }
4383
+
4384
+ update(obj);
4385
+ return function updateStyle(newObj) {
4386
+ if (newObj) {
4387
+ if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
4388
+ return;
4389
+ }
4390
+
4391
+ update(obj = newObj);
4392
+ } else {
4393
+ remove();
4394
+ }
4395
+ };
4396
+ }
4397
+
4398
+ module.exports = function (list, options) {
4399
+ options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
4400
+ // tags it will allow on a page
4401
+
4402
+ if (!options.singleton && typeof options.singleton !== 'boolean') {
4403
+ options.singleton = isOldIE();
4404
+ }
4405
+
4406
+ list = list || [];
4407
+ var lastIdentifiers = modulesToDom(list, options);
4408
+ return function update(newList) {
4409
+ newList = newList || [];
4410
+
4411
+ if (Object.prototype.toString.call(newList) !== '[object Array]') {
4412
+ return;
4413
+ }
4414
+
4415
+ for (var i = 0; i < lastIdentifiers.length; i++) {
4416
+ var identifier = lastIdentifiers[i];
4417
+ var index = getIndexByIdentifier(identifier);
4418
+ stylesInDom[index].references--;
4419
+ }
4420
+
4421
+ var newLastIdentifiers = modulesToDom(newList, options);
4422
+
4423
+ for (var _i = 0; _i < lastIdentifiers.length; _i++) {
4424
+ var _identifier = lastIdentifiers[_i];
4425
+
4426
+ var _index = getIndexByIdentifier(_identifier);
4427
+
4428
+ if (stylesInDom[_index].references === 0) {
4429
+ stylesInDom[_index].updater();
4430
+
4431
+ stylesInDom.splice(_index, 1);
4432
+ }
4433
+ }
4434
+
4435
+ lastIdentifiers = newLastIdentifiers;
4436
+ };
4437
+ };
4438
+
4439
+ /***/ }),
4440
+
4441
+ /***/ 85790:
4442
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
4443
+
4444
+ // ESM COMPAT FLAG
4445
+ __webpack_require__.r(__webpack_exports__);
4446
+
4447
+ // EXPORTS
4448
+ __webpack_require__.d(__webpack_exports__, {
4449
+ __esModule: function() { return /* reexport */ Checkboxvue_type_script_lang_js/* __esModule */.B; },
4450
+ "default": function() { return /* binding */ Checkbox; }
4451
+ });
4452
+
4453
+ // 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/common/_ui/checkbox/Checkbox.vue?vue&type=script&lang=js
4454
+ var Checkboxvue_type_script_lang_js = __webpack_require__(81751);
4455
+ ;// ./src/common/_ui/checkbox/Checkbox.vue?vue&type=script&lang=js
4456
+
4457
+ ;// ./src/common/_ui/checkbox/Checkbox.vue
4458
+
4459
+
4460
+
4461
+ const __exports__ = Checkboxvue_type_script_lang_js/* default */.A;
4462
+
4463
+ /* harmony default export */ var Checkbox = (__exports__);
4464
+
4465
+ /***/ }),
4466
+
4467
+ /***/ 88897:
4468
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4469
+
4470
+
4471
+
4472
+ var _interopRequireDefault = __webpack_require__(33751);
4473
+ Object.defineProperty(exports, "B", ({
4474
+ value: true
4475
+ }));
4476
+ exports.A = void 0;
4477
+ var _indexFull = __webpack_require__(56363);
4478
+ var _render = _interopRequireDefault(__webpack_require__(74383));
4479
+ var _default = exports.A = {
4480
+ name: "KqOptionGroup",
4481
+ defaultComponent: _indexFull.ElOptionGroup,
4482
+ mixins: [_render.default],
4483
+ setup(props, context) {
4484
+ _render.default.setup && _render.default.setup(props, context);
4485
+ }
4486
+ };
4487
+
4488
+ /***/ }),
4489
+
4490
+ /***/ 89393:
4491
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4492
+
4493
+
4494
+
4495
+ var _interopRequireDefault = __webpack_require__(33751);
4496
+ Object.defineProperty(exports, "__esModule", ({
4497
+ value: true
4498
+ }));
4499
+ exports["default"] = void 0;
4500
+ var _Upload = _interopRequireDefault(__webpack_require__(63685));
4501
+ var _init = _interopRequireDefault(__webpack_require__(20455));
4502
+ var _KqGIS = __webpack_require__(99602);
4503
+ /*
4504
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
4505
+ * All rights reserved.
4506
+ */
4507
+
4508
+ _Upload.default.install = (Vue, opts) => {
4509
+ (0, _init.default)(Vue, opts);
4510
+ Vue.component(_Upload.default.name, _Upload.default);
4511
+ };
4512
+ var _default = exports["default"] = _Upload.default;
4513
+ _KqGIS.kq_npm_client_common_vue.KqUpload = _Upload.default;
4514
+
4515
+ /***/ }),
4516
+
4517
+ /***/ 91039:
4518
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4519
+
4520
+
4521
+
4522
+ var _interopRequireDefault = __webpack_require__(33751);
4523
+ Object.defineProperty(exports, "B", ({
4524
+ value: true
4525
+ }));
4526
+ exports.A = void 0;
4527
+ var _indexFull = __webpack_require__(56363);
4528
+ var _render = _interopRequireDefault(__webpack_require__(74383));
4529
+ var _default = exports.A = {
4530
+ name: "KqUpload",
4531
+ defaultComponent: _indexFull.ElUpload,
4532
+ mixins: [_render.default],
4533
+ setup(props, context) {
4534
+ _render.default.setup && _render.default.setup(props, context);
4535
+ }
4536
+ };
4537
+
4538
+ /***/ }),
4539
+
4540
+ /***/ 92936:
4541
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4542
+
4543
+
4544
+
4545
+ var _interopRequireDefault = __webpack_require__(33751);
4546
+ Object.defineProperty(exports, "__esModule", ({
4547
+ value: true
4548
+ }));
4549
+ Object.defineProperty(exports, "KqOption", ({
4550
+ enumerable: true,
4551
+ get: function () {
4552
+ return _Option.default;
4553
+ }
4554
+ }));
4555
+ Object.defineProperty(exports, "KqOptionGroup", ({
4556
+ enumerable: true,
4557
+ get: function () {
4558
+ return _OptionGroup.default;
4559
+ }
4560
+ }));
4561
+ Object.defineProperty(exports, "default", ({
4562
+ enumerable: true,
4563
+ get: function () {
4564
+ return _Select.default;
4565
+ }
4566
+ }));
4567
+ var _Select = _interopRequireDefault(__webpack_require__(77249));
4568
+ var _Option = _interopRequireDefault(__webpack_require__(44763));
4569
+ var _OptionGroup = _interopRequireDefault(__webpack_require__(33670));
4570
+ var _init = _interopRequireDefault(__webpack_require__(20455));
4571
+ var _KqGIS = __webpack_require__(99602);
4572
+ /*
4573
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
4574
+ * All rights reserved.
4575
+ */
4576
+
4577
+ _Select.default.install = (Vue, opts) => {
4578
+ (0, _init.default)(Vue, opts);
4579
+ Vue.component(_Select.default.name, _Select.default);
4580
+ Vue.component(_Option.default.name, _Option.default);
4581
+ Vue.component(_OptionGroup.default.name, _OptionGroup.default);
4582
+ };
4583
+ _KqGIS.kq_npm_client_common_vue.KqSelect = _Select.default;
4584
+ _KqGIS.kq_npm_client_common_vue.KqOption = _Option.default;
4585
+ _KqGIS.kq_npm_client_common_vue.KqOptionGroup = _OptionGroup.default;
4586
+
4587
+ /***/ }),
4588
+
4589
+ /***/ 95109:
4590
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4591
+
4592
+
4593
+
4594
+ var _interopRequireDefault = __webpack_require__(33751);
4595
+ Object.defineProperty(exports, "B", ({
4596
+ value: true
4597
+ }));
4598
+ exports.A = void 0;
4599
+ var _indexFull = __webpack_require__(56363);
4600
+ var _render = _interopRequireDefault(__webpack_require__(74383));
4601
+ var _default = exports.A = {
4602
+ name: "KqSelect",
4603
+ defaultComponent: _indexFull.ElSelect,
4604
+ mixins: [_render.default],
4605
+ setup(props, context) {
4606
+ _render.default.setup && _render.default.setup(props, context);
4607
+ }
4608
+ };
4609
+
4610
+ /***/ }),
4611
+
4612
+ /***/ 95765:
4613
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4614
+
4615
+
4616
+
4617
+ var _interopRequireDefault = __webpack_require__(33751);
4618
+ Object.defineProperty(exports, "__esModule", ({
4619
+ value: true
4620
+ }));
4621
+ exports["default"] = void 0;
4622
+ var _Slider = _interopRequireDefault(__webpack_require__(28238));
4623
+ var _init = _interopRequireDefault(__webpack_require__(20455));
4624
+ var _KqGIS = __webpack_require__(99602);
4625
+ /*
4626
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
4627
+ * All rights reserved.
4628
+ */
4629
+
4630
+ _Slider.default.install = (Vue, opts) => {
4631
+ (0, _init.default)(Vue, opts);
4632
+ Vue.component(_Slider.default.name, _Slider.default);
4633
+ };
4634
+ var _default = exports["default"] = _Slider.default;
4635
+ _KqGIS.kq_npm_client_common_vue.KqSlider = _Slider.default;
4636
+
4637
+ /***/ }),
4638
+
4639
+ /***/ 95857:
4640
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4641
+
4642
+
4643
+
4644
+ var _interopRequireDefault = __webpack_require__(33751);
4645
+ Object.defineProperty(exports, "__esModule", ({
4646
+ value: true
4647
+ }));
4648
+ Object.defineProperty(exports, "KqCheckboxButton", ({
4649
+ enumerable: true,
4650
+ get: function () {
4651
+ return _CheckboxButton.default;
4652
+ }
4653
+ }));
4654
+ Object.defineProperty(exports, "KqCheckboxGroup", ({
4655
+ enumerable: true,
4656
+ get: function () {
4657
+ return _CheckboxGroup.default;
4658
+ }
4659
+ }));
4660
+ Object.defineProperty(exports, "default", ({
4661
+ enumerable: true,
4662
+ get: function () {
4663
+ return _Checkbox.default;
4664
+ }
4665
+ }));
4666
+ var _Checkbox = _interopRequireDefault(__webpack_require__(85790));
4667
+ var _CheckboxButton = _interopRequireDefault(__webpack_require__(85061));
4668
+ var _CheckboxGroup = _interopRequireDefault(__webpack_require__(47193));
4669
+ var _init = _interopRequireDefault(__webpack_require__(20455));
4670
+ var _KqGIS = __webpack_require__(99602);
4671
+ /*
4672
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
4673
+ * All rights reserved.
4674
+ */
4675
+
4676
+ _Checkbox.default.install = (Vue, opts) => {
4677
+ (0, _init.default)(Vue, opts);
4678
+ Vue.component(_Checkbox.default.name, _Checkbox.default);
4679
+ Vue.component(_CheckboxButton.default.name, _CheckboxButton.default);
4680
+ Vue.component(_CheckboxGroup.default.name, _CheckboxGroup.default);
4681
+ };
4682
+ _KqGIS.kq_npm_client_common_vue.KqCheckbox = _Checkbox.default;
4683
+ _KqGIS.kq_npm_client_common_vue.KqCheckboxButton = _CheckboxButton.default;
4684
+ _KqGIS.kq_npm_client_common_vue.KqCheckboxGroup = _CheckboxGroup.default;
4685
+
4686
+ /***/ }),
4687
+
4688
+ /***/ 96991:
4689
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4690
+
4691
+
4692
+
4693
+ var _interopRequireDefault = __webpack_require__(33751);
4694
+ Object.defineProperty(exports, "B", ({
4695
+ value: true
4696
+ }));
4697
+ exports.A = void 0;
4698
+ var _indexFull = __webpack_require__(56363);
4699
+ var _render = _interopRequireDefault(__webpack_require__(74383));
4700
+ var _default = exports.A = {
4701
+ name: "KqDivider",
4702
+ defaultComponent: _indexFull.ElDivider,
4703
+ mixins: [_render.default],
4704
+ setup(props, context) {
4705
+ _render.default.setup && _render.default.setup(props, context);
4706
+ }
4707
+ };
4708
+
4709
+ /***/ }),
4710
+
4711
+ /***/ 99602:
4712
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4713
+
4714
+
4715
+
4716
+ Object.defineProperty(exports, "__esModule", ({
4717
+ value: true
4718
+ }));
4719
+ 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 || {};
4721
+ __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 || {};
4723
+ __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 || {};
4725
+ __webpack_require__.g.kq_npm_client3d_webgl_vue = kq_npm_client3d_webgl_vue;
4726
+
4727
+ /***/ })
4728
+
4729
+ /******/ });
4730
+ /************************************************************************/
4731
+ /******/ // The module cache
4732
+ /******/ var __webpack_module_cache__ = {};
4733
+ /******/
4734
+ /******/ // The require function
4735
+ /******/ function __webpack_require__(moduleId) {
4736
+ /******/ // Check if module is in cache
4737
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
4738
+ /******/ if (cachedModule !== undefined) {
4739
+ /******/ return cachedModule.exports;
4740
+ /******/ }
4741
+ /******/ // Create a new module (and put it into the cache)
4742
+ /******/ var module = __webpack_module_cache__[moduleId] = {
4743
+ /******/ id: moduleId,
4744
+ /******/ // no module.loaded needed
4745
+ /******/ exports: {}
4746
+ /******/ };
4747
+ /******/
4748
+ /******/ // Execute the module function
4749
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
4750
+ /******/
4751
+ /******/ // Return the exports of the module
4752
+ /******/ return module.exports;
4753
+ /******/ }
4754
+ /******/
4755
+ /************************************************************************/
4756
+ /******/ /* webpack/runtime/compat get default export */
4757
+ /******/ !function() {
4758
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
4759
+ /******/ __webpack_require__.n = function(module) {
4760
+ /******/ var getter = module && module.__esModule ?
4761
+ /******/ function() { return module['default']; } :
4762
+ /******/ function() { return module; };
4763
+ /******/ __webpack_require__.d(getter, { a: getter });
4764
+ /******/ return getter;
4765
+ /******/ };
4766
+ /******/ }();
4767
+ /******/
4768
+ /******/ /* webpack/runtime/define property getters */
4769
+ /******/ !function() {
4770
+ /******/ // define getter functions for harmony exports
4771
+ /******/ __webpack_require__.d = function(exports, definition) {
4772
+ /******/ for(var key in definition) {
4773
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
4774
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
4775
+ /******/ }
4776
+ /******/ }
4777
+ /******/ };
4778
+ /******/ }();
4779
+ /******/
4780
+ /******/ /* webpack/runtime/global */
4781
+ /******/ !function() {
4782
+ /******/ __webpack_require__.g = (function() {
4783
+ /******/ if (typeof globalThis === 'object') return globalThis;
4784
+ /******/ try {
4785
+ /******/ return this || new Function('return this')();
4786
+ /******/ } catch (e) {
4787
+ /******/ if (typeof window === 'object') return window;
4788
+ /******/ }
4789
+ /******/ })();
4790
+ /******/ }();
4791
+ /******/
4792
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
4793
+ /******/ !function() {
4794
+ /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
4795
+ /******/ }();
4796
+ /******/
4797
+ /******/ /* webpack/runtime/make namespace object */
4798
+ /******/ !function() {
4799
+ /******/ // define __esModule on exports
4800
+ /******/ __webpack_require__.r = function(exports) {
4801
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
4802
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4803
+ /******/ }
4804
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
4805
+ /******/ };
4806
+ /******/ }();
4807
+ /******/
4808
+ /******/ /* webpack/runtime/nonce */
4809
+ /******/ !function() {
4810
+ /******/ __webpack_require__.nc = undefined;
4811
+ /******/ }();
4812
+ /******/
4813
+ /************************************************************************/
4814
+ var __webpack_exports__ = {};
4815
+ // This entry needs to be wrapped in an IIFE because it uses a non-standard name for the exports (exports).
4816
+ !function() {
4817
+ var exports = __webpack_exports__;
4818
+
4819
+
4820
+ var _interopRequireDefault = __webpack_require__(33751);
4821
+ Object.defineProperty(exports, "__esModule", ({
4822
+ value: true
4823
+ }));
4824
+ Object.defineProperty(exports, "LowAltitudeFeatureViewModel", ({
4825
+ enumerable: true,
4826
+ get: function () {
4827
+ return _LowAltitudeFeatureViewModel.default;
4828
+ }
4829
+ }));
4830
+ Object.defineProperty(exports, "default", ({
4831
+ enumerable: true,
4832
+ get: function () {
4833
+ return _LowAltitudeFeature.default;
4834
+ }
4835
+ }));
4836
+ var _LowAltitudeFeature = _interopRequireDefault(__webpack_require__(11583));
4837
+ var _LowAltitudeFeatureViewModel = _interopRequireDefault(__webpack_require__(4494));
4838
+ var _init = _interopRequireDefault(__webpack_require__(20455));
4839
+ /*
4840
+ * Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
4841
+ * All rights reserved.
4842
+ */
4843
+
4844
+ _LowAltitudeFeature.default.install = (Vue, opts) => {
4845
+ (0, _init.default)(Vue, opts);
4846
+ Vue.component(_LowAltitudeFeature.default.name, _LowAltitudeFeature.default);
4847
+ };
4848
+
4849
+ // kq_npm_client3d_webgl_vue.Kq3dLowAltitudeFeature = LowAltitudeFeature;
4850
+ }();
4851
+ /******/ return __webpack_exports__;
4852
+ /******/ })()
4853
+ ;
4854
+ });