@kq_npm/client3d_webgl_vue 4.5.55 → 4.5.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adddata/index.js +189 -21
- package/airspacegridoccupancyquery/index.js +1977 -0
- package/airspacegridoccupancyquery/style/airspacegridoccupancyquery.css +1 -0
- package/airspacegridoccupancyquery/style/index.js +3 -0
- package/airspaceprofileanalysis/index.js +1870 -0
- package/airspaceprofileanalysis/style/airspaceprofileanalysis.css +1 -0
- package/airspaceprofileanalysis/style/index.js +3 -0
- package/aspectanalysis/index.js +25 -7
- package/baseterraingallery/index.js +16 -4
- package/boxclip/index.js +58 -16
- package/buildpointmodel/index.js +3207 -230
- package/buildpointmodel/style/buildpointmodel.css +1 -1
- package/buildpolygonmodel/index.js +205 -81
- package/buildpolylinemodel/index.js +346 -70
- package/clientPrint/index.js +32440 -2337
- package/comparemap/index.js +132 -60
- package/compass/index.js +16 -6
- package/excavatefillanalysis/index.js +51 -7
- package/fixedzoomin/index.js +24 -7
- package/fixedzoomout/index.js +25 -7
- package/flight/index.js +113 -26
- package/floodanalysis/index.js +79 -14
- package/geologicalbodyanalysis/index.js +41 -5
- package/gpuspatialquery/index.js +127 -19
- package/gridoccupancyquery/index.js +627 -0
- package/gridoccupancyquery/style/gridoccupancyquery.css +1 -0
- package/gridoccupancyquery/style/index.js +3 -0
- package/hawkeye/index.js +20 -2
- package/headertemp/index.js +7 -2
- package/heatmap3d/index.js +282 -158
- package/index.js +32440 -2337
- package/isolineanalysis/index.js +113 -38
- package/light/index.js +80 -22
- package/limitheightanalysis/index.js +30 -10
- package/lowaltitudefeature/index.js +5027 -0
- package/lowaltitudefeature/style/index.js +3 -0
- package/lowaltitudefeature/style/lowaltitudefeature.css +1 -0
- package/measure/index.js +60 -19
- package/modelFlat/index.js +48 -8
- package/modeledit/index.js +38 -4
- package/modelexcavate/index.js +48 -7
- package/modelfilter/index.js +51 -8
- package/modelmaterialedit/index.js +127 -25
- package/modelprofileanalysis/index.js +51 -14
- package/modelselect/index.js +34 -3
- package/modelstyleedit/index.js +39 -3
- package/modeltransform/index.js +79 -14
- package/package.json +1 -1
- package/particleeffect/index.js +83 -17
- package/planeclip/index.js +66 -17
- package/pointcloudrender/index.js +134 -15
- package/radarscananalysis/index.js +35 -3
- package/resetview/index.js +14 -6
- package/roller/index.js +55 -18
- package/scaneffect/index.js +98 -29
- package/sceneadvancedtoimage/index.js +32 -6
- package/sceneapp/index.js +32440 -2337
- package/sceneset/index.js +141 -71
- package/scenetohdimage/index.js +23 -3
- package/sceneview/index.js +32440 -2337
- package/sceneview/style/sceneview.css +1 -1
- package/screenshot/index.js +44 -11
- package/shadowanalysis/index.js +79 -19
- package/sightlineanalysis/index.js +66 -15
- package/skylineanalysis/index.js +20 -4
- package/slopeanalysis/index.js +75 -16
- package/slopeaspectanalysis/index.js +128 -26
- package/statusbar/index.js +80 -67
- package/style.css +1 -1
- package/terrainoperation/index.js +39 -7
- package/terrainprofileanalysis/index.js +43 -5
- package/toolbarapp/index.js +32440 -2337
- package/toolboxapp/index.js +32440 -2337
- package/typhoontrac/index.js +134 -16
- package/underground/index.js +8 -2
- package/videofusion/index.js +164 -79
- package/videoproject/index.js +77 -23
- package/viewshedanalysis/index.js +61 -14
- package/weathereffect/index.js +73 -18
- package/webgl.es.js +866 -16
- package/windyslicing/index.js +258 -54
- package/wireframesketch/index.js +25 -8
package/flight/index.js
CHANGED
|
@@ -450,19 +450,28 @@ exports["default"] = void 0;
|
|
|
450
450
|
*/
|
|
451
451
|
//飞行操作类
|
|
452
452
|
class FlightViewModel {
|
|
453
|
+
//是否处于暂停状态
|
|
454
|
+
|
|
455
|
+
/** @description 构造函数,根据是否远景创建对应的动画路径对象
|
|
456
|
+
* @param {Object} viewer 三维viewer对象
|
|
457
|
+
* @param {boolean} isLongShot 是否远景模式
|
|
458
|
+
*/
|
|
453
459
|
constructor(viewer, isLongShot) {
|
|
454
460
|
this._animationPath = null;
|
|
455
461
|
//飞行三维对象
|
|
456
462
|
this.stopEvent = null;
|
|
457
463
|
//停止事件
|
|
458
464
|
this._currentKey = -1;
|
|
465
|
+
//当前播放关键帧索引
|
|
459
466
|
this._isPause = false;
|
|
467
|
+
// 远景模式使用Kq3dAnimationPath,否则使用Kq3dAnimationPath2
|
|
460
468
|
if (isLongShot) {
|
|
461
469
|
this._animationPath = new Cesium.Kq3dAnimationPath(viewer);
|
|
462
470
|
} else {
|
|
463
471
|
this._animationPath = new Cesium.Kq3dAnimationPath2(viewer);
|
|
464
472
|
}
|
|
465
473
|
this.stopEvent = this._animationPath.stoped;
|
|
474
|
+
// 监听停止事件,重置暂停状态
|
|
466
475
|
this.stopEvent.addEventListener(() => {
|
|
467
476
|
this._isPause = false;
|
|
468
477
|
});
|
|
@@ -470,9 +479,10 @@ class FlightViewModel {
|
|
|
470
479
|
|
|
471
480
|
//播放动画导航路径
|
|
472
481
|
play() {
|
|
482
|
+
// 非暂停状态时定位到下一关键帧视角
|
|
473
483
|
if (!this._isPause) {
|
|
474
484
|
this._animationPath.currentKey = this._currentKey;
|
|
475
|
-
|
|
485
|
+
const keyPoint = this._animationPath.getKeyPoint(this._currentKey + 1);
|
|
476
486
|
this._animationPath.viewer.camera.setView({
|
|
477
487
|
destination: keyPoint.position,
|
|
478
488
|
orientation: keyPoint.orientation
|
|
@@ -498,48 +508,70 @@ class FlightViewModel {
|
|
|
498
508
|
return this._animationPath.getAutoRepeat();
|
|
499
509
|
}
|
|
500
510
|
|
|
501
|
-
|
|
511
|
+
/** @description 设置动画导航是否循环播放
|
|
512
|
+
* @param {boolean} autoRepeat 是否循环播放
|
|
513
|
+
*/
|
|
502
514
|
setAutoRepeat(autoRepeat) {
|
|
503
515
|
this._animationPath.setAutoRepeat(autoRepeat);
|
|
504
516
|
}
|
|
505
517
|
|
|
506
|
-
|
|
518
|
+
/** @description 将当前相机位置添加到动画导航路径中
|
|
519
|
+
* @param {number} duration 当前关键帧耗时
|
|
520
|
+
*/
|
|
507
521
|
addKeyPointByCurrentView(duration) {
|
|
508
522
|
this._animationPath.addKeyPointByCurrentView(duration);
|
|
509
523
|
}
|
|
510
524
|
|
|
511
|
-
|
|
525
|
+
/** @description 使用当前视角修改指定索引位置的路径节点
|
|
526
|
+
* @param {number} index 路径节点索引
|
|
527
|
+
* @param {number} duration 关键帧耗时
|
|
528
|
+
*/
|
|
512
529
|
modifyKeyPointByCurrentView(index, duration) {
|
|
513
530
|
this._animationPath.modifyKeyPointByCurrentView(index, duration);
|
|
514
531
|
}
|
|
515
532
|
|
|
516
|
-
|
|
533
|
+
/** @description 获取指定索引位置处的路径节点
|
|
534
|
+
* @param {number} index 路径节点索引
|
|
535
|
+
* @returns {Object} 路径节点对象
|
|
536
|
+
*/
|
|
517
537
|
getKeyPoint(index) {
|
|
518
538
|
return this._animationPath.getKeyPoint(index);
|
|
519
539
|
}
|
|
520
540
|
|
|
521
|
-
|
|
541
|
+
/** @description 定位到关键帧
|
|
542
|
+
* @param {number} index 关键帧索引
|
|
543
|
+
*/
|
|
522
544
|
locationKey(index) {
|
|
523
545
|
this.stop();
|
|
524
546
|
this._currentKey = index - 1;
|
|
525
|
-
|
|
547
|
+
const keyPoint = this._animationPath.getKeyPoint(index);
|
|
526
548
|
this._animationPath.viewer.camera.setView({
|
|
527
549
|
destination: keyPoint.position,
|
|
528
550
|
orientation: keyPoint.orientation
|
|
529
551
|
});
|
|
530
552
|
}
|
|
531
553
|
|
|
532
|
-
|
|
554
|
+
/** @description 获取指定索引位置的路径节点的耗时信息
|
|
555
|
+
* @param {number} index 路径节点索引
|
|
556
|
+
* @returns {number} 耗时(秒)
|
|
557
|
+
*/
|
|
533
558
|
getKeyPointDur(index) {
|
|
534
559
|
return this._animationPath.getKeyPointDur(index);
|
|
535
560
|
}
|
|
536
561
|
|
|
537
|
-
|
|
562
|
+
/** @description 修改指定索引位置的路径节点
|
|
563
|
+
* @param {number} index 路径节点索引
|
|
564
|
+
* @param {Object} position 节点位置
|
|
565
|
+
* @param {Object} orientation 节点朝向
|
|
566
|
+
* @param {number} duration 关键帧耗时
|
|
567
|
+
*/
|
|
538
568
|
modifyKeyPoint(index, position, orientation, duration) {
|
|
539
569
|
this._animationPath.modifyKeyPoint(index, position, orientation, duration);
|
|
540
570
|
}
|
|
541
571
|
|
|
542
|
-
|
|
572
|
+
/** @description 删除动画导航中指定索引位置的路径节点
|
|
573
|
+
* @param {number} index 路径节点索引
|
|
574
|
+
*/
|
|
543
575
|
deleteKeyPoint(index) {
|
|
544
576
|
this._animationPath.deleteKeyPoint(index);
|
|
545
577
|
}
|
|
@@ -555,7 +587,9 @@ class FlightViewModel {
|
|
|
555
587
|
this._animationPath.clearKeyPoints();
|
|
556
588
|
}
|
|
557
589
|
|
|
558
|
-
|
|
590
|
+
/** @description 从xml字符串获取动画导航
|
|
591
|
+
* @param {string} xmlString xml字符串
|
|
592
|
+
*/
|
|
559
593
|
fromXmlString(xmlString) {
|
|
560
594
|
this._animationPath.fromXmlString(xmlString);
|
|
561
595
|
}
|
|
@@ -566,12 +600,17 @@ class FlightViewModel {
|
|
|
566
600
|
return this._animationPath.asXmlString();
|
|
567
601
|
}
|
|
568
602
|
|
|
569
|
-
|
|
603
|
+
/** @description 从xml文件获取动画导航
|
|
604
|
+
* @param {Object} xmlFile xml文件对象
|
|
605
|
+
* @returns {Promise} 加载完成的Promise
|
|
606
|
+
*/
|
|
570
607
|
fromXmlFile(xmlFile) {
|
|
571
608
|
return this._animationPath.fromXmlFile(xmlFile);
|
|
572
609
|
}
|
|
573
610
|
|
|
574
|
-
|
|
611
|
+
/** @description 动画导航导出为xml文件
|
|
612
|
+
* @param {string} xmlFileName 导出文件名
|
|
613
|
+
*/
|
|
575
614
|
asXmlFile(xmlFileName) {
|
|
576
615
|
this._animationPath.asXmlFile(xmlFileName);
|
|
577
616
|
}
|
|
@@ -985,21 +1024,39 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
985
1024
|
locale
|
|
986
1025
|
} = (0, _useGlobalConfig.useLocale)();
|
|
987
1026
|
const props = __props;
|
|
1027
|
+
|
|
1028
|
+
// 是否处于新增/编辑路径界面
|
|
988
1029
|
let isAdd = (0, _vue.ref)(false);
|
|
1030
|
+
// 是否为编辑路径模式
|
|
989
1031
|
let isEdit = (0, _vue.ref)(false);
|
|
1032
|
+
// 飞行路径列表
|
|
990
1033
|
let pathList = (0, _vue.reactive)([]);
|
|
1034
|
+
// 是否显示更多功能下拉菜单
|
|
991
1035
|
let showMoreMenu = (0, _vue.ref)(false);
|
|
1036
|
+
// 下拉菜单组件Ref
|
|
992
1037
|
let dropDownMenu = (0, _vue.ref)(null);
|
|
1038
|
+
// 当前路径名称
|
|
993
1039
|
let pathName = (0, _vue.ref)("");
|
|
1040
|
+
// 关键帧表格数据
|
|
994
1041
|
let tableData = (0, _vue.reactive)([]);
|
|
1042
|
+
// 是否处于预播放状态
|
|
995
1043
|
let isPrePlaying = (0, _vue.ref)(false);
|
|
1044
|
+
// 三维viewer对象
|
|
996
1045
|
let viewer = null;
|
|
1046
|
+
// 当前播放路径索引
|
|
997
1047
|
let pathPlayIndex = -1;
|
|
1048
|
+
// 当前下拉菜单对应的路径对象
|
|
998
1049
|
let dropDownPath = null;
|
|
1050
|
+
// 表格组件Ref
|
|
999
1051
|
let tableRef = (0, _vue.ref)();
|
|
1052
|
+
|
|
1053
|
+
// 飞行视图模型实例
|
|
1000
1054
|
let viewModel = null;
|
|
1001
1055
|
|
|
1002
|
-
|
|
1056
|
+
/** @description 表格头样式
|
|
1057
|
+
* @param {Object} args 表格头参数对象
|
|
1058
|
+
* @returns {Object} 样式对象
|
|
1059
|
+
*/
|
|
1003
1060
|
let headClass = args => {
|
|
1004
1061
|
return {
|
|
1005
1062
|
"background-color": "var(--kq-fill-color-light)",
|
|
@@ -1013,6 +1070,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1013
1070
|
|
|
1014
1071
|
// 生成组件默认header
|
|
1015
1072
|
let headerTemp = (0, _vue.ref)();
|
|
1073
|
+
// header组件引用Ref
|
|
1016
1074
|
let headerTempRef = (0, _vue.ref)();
|
|
1017
1075
|
(0, _vue.onMounted)(() => {
|
|
1018
1076
|
(0, _util.updatePosition)(boxRef.value, props);
|
|
@@ -1120,8 +1178,12 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1120
1178
|
}
|
|
1121
1179
|
}
|
|
1122
1180
|
|
|
1123
|
-
|
|
1181
|
+
/** @description 路径播放
|
|
1182
|
+
* @param {Object} item 路径对象
|
|
1183
|
+
* @param {number} index 路径索引
|
|
1184
|
+
*/
|
|
1124
1185
|
function play(item, index) {
|
|
1186
|
+
// 切换播放路径时重新加载路径数据
|
|
1125
1187
|
if (index !== pathPlayIndex) {
|
|
1126
1188
|
viewModel.fromXmlString(item.xmlString);
|
|
1127
1189
|
pathPlayIndex = index;
|
|
@@ -1132,28 +1194,39 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1132
1194
|
viewModel.setAutoRepeat(item.isRepeat);
|
|
1133
1195
|
}
|
|
1134
1196
|
|
|
1135
|
-
|
|
1197
|
+
/** @description 路径播放暂停
|
|
1198
|
+
* @param {Object} item 路径对象
|
|
1199
|
+
*/
|
|
1136
1200
|
function pause(item) {
|
|
1137
1201
|
item.isPlaying = false;
|
|
1138
1202
|
viewModel.pause();
|
|
1139
1203
|
}
|
|
1140
1204
|
|
|
1141
|
-
|
|
1205
|
+
/** @description 路径播放停止
|
|
1206
|
+
* @param {Object} item 路径对象
|
|
1207
|
+
*/
|
|
1142
1208
|
function stop(item) {
|
|
1143
1209
|
item.isPlaying = false;
|
|
1144
1210
|
viewModel.stop();
|
|
1145
1211
|
}
|
|
1146
1212
|
|
|
1147
|
-
|
|
1213
|
+
/** @description 循环播放切换
|
|
1214
|
+
* @param {Object} item 路径对象
|
|
1215
|
+
*/
|
|
1148
1216
|
function repeat(item) {
|
|
1149
1217
|
item.isRepeat = !item.isRepeat;
|
|
1218
|
+
// 仅在播放中切换循环状态
|
|
1150
1219
|
if (item.isPlaying) {
|
|
1151
1220
|
viewModel.setAutoRepeat(item.isRepeat);
|
|
1152
1221
|
}
|
|
1153
1222
|
}
|
|
1154
1223
|
|
|
1155
|
-
|
|
1224
|
+
/** @description 显示更多功能菜单
|
|
1225
|
+
* @param {Object} item 路径对象
|
|
1226
|
+
* @param {number} index 路径索引
|
|
1227
|
+
*/
|
|
1156
1228
|
function showDropDownMenu(item, index) {
|
|
1229
|
+
// 同一路径再次点击则关闭菜单
|
|
1157
1230
|
if (showMoreMenu.value === true && index === dropDownPath.index) {
|
|
1158
1231
|
showMoreMenu.value = false;
|
|
1159
1232
|
document.addEventListener("click", hideDropDownMenu);
|
|
@@ -1161,6 +1234,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1161
1234
|
}
|
|
1162
1235
|
showMoreMenu.value = true;
|
|
1163
1236
|
let _menuDropdown = dropDownMenu.value.$el;
|
|
1237
|
+
// 根据鼠标点击位置定位下拉菜单
|
|
1164
1238
|
_menuDropdown.style.left = window.event.clientX - 70 + "px";
|
|
1165
1239
|
_menuDropdown.style.top = window.event.clientY + 15 + "px";
|
|
1166
1240
|
dropDownPath = {
|
|
@@ -1181,7 +1255,9 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1181
1255
|
showMoreMenu.value = false;
|
|
1182
1256
|
}
|
|
1183
1257
|
|
|
1184
|
-
|
|
1258
|
+
/** @description 定位到关键帧
|
|
1259
|
+
* @param {number} index 关键帧索引
|
|
1260
|
+
*/
|
|
1185
1261
|
function locationKey(index) {
|
|
1186
1262
|
viewModel.locationKey(index);
|
|
1187
1263
|
}
|
|
@@ -1204,7 +1280,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1204
1280
|
viewModel.addKeyPointByCurrentView(duration);
|
|
1205
1281
|
}
|
|
1206
1282
|
|
|
1207
|
-
|
|
1283
|
+
/** @description 替换关键帧
|
|
1284
|
+
* @param {number} index 关键帧索引
|
|
1285
|
+
* @param {Object} row 表格行数据
|
|
1286
|
+
*/
|
|
1208
1287
|
function replaceKey(index, row) {
|
|
1209
1288
|
var lonlat = viewer.getCurrentView();
|
|
1210
1289
|
var positionArr = [lonlat.longitude.toFixed(4) * 1, lonlat.latitude.toFixed(4) * 1, lonlat.height.toFixed(2) * 1];
|
|
@@ -1214,7 +1293,9 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1214
1293
|
viewModel.modifyKeyPointByCurrentView(index, row.interval);
|
|
1215
1294
|
}
|
|
1216
1295
|
|
|
1217
|
-
|
|
1296
|
+
/** @description 删除关键帧
|
|
1297
|
+
* @param {number} index 关键帧索引
|
|
1298
|
+
*/
|
|
1218
1299
|
function deleteKey(index) {
|
|
1219
1300
|
viewModel.deleteKeyPoint(index);
|
|
1220
1301
|
tableData.splice(index, 1);
|
|
@@ -1226,6 +1307,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1226
1307
|
var duration = tableData[index].interval;
|
|
1227
1308
|
var key = viewModel.getKeyPoint(index);
|
|
1228
1309
|
var dur = viewModel.getKeyPointDur(index);
|
|
1310
|
+
// 关键帧时长不一致时同步更新
|
|
1229
1311
|
if (dur !== duration) {
|
|
1230
1312
|
viewModel.modifyKeyPoint(index, key.position, key.orientation, duration);
|
|
1231
1313
|
}
|
|
@@ -1248,12 +1330,14 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1248
1330
|
|
|
1249
1331
|
//保存
|
|
1250
1332
|
function save() {
|
|
1333
|
+
// 路径名为空则提示
|
|
1251
1334
|
if (pathName.value === "") {
|
|
1252
1335
|
(0, _message.default)({
|
|
1253
1336
|
message: locale.value.webgl["enterPathName"] + "!",
|
|
1254
1337
|
type: "warning"
|
|
1255
1338
|
});
|
|
1256
1339
|
} else {
|
|
1340
|
+
// 保存前同步关键帧时长
|
|
1257
1341
|
for (let index = 0; index < tableData.length; index++) {
|
|
1258
1342
|
var duration = tableData[index].interval;
|
|
1259
1343
|
var key = viewModel.getKeyPoint(index);
|
|
@@ -1263,6 +1347,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1263
1347
|
}
|
|
1264
1348
|
}
|
|
1265
1349
|
var xmlString = viewModel.asXmlString();
|
|
1350
|
+
// 编辑已有路径
|
|
1266
1351
|
if (isEdit.value) {
|
|
1267
1352
|
//编辑路径
|
|
1268
1353
|
if (dropDownPath) {
|
|
@@ -1310,7 +1395,9 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1310
1395
|
isEdit.value = false;
|
|
1311
1396
|
}
|
|
1312
1397
|
|
|
1313
|
-
|
|
1398
|
+
/** @description 导入文件
|
|
1399
|
+
* @param {Object} file 导入的文件对象
|
|
1400
|
+
*/
|
|
1314
1401
|
function importFile(file) {
|
|
1315
1402
|
var name = file.name.split(".")[0];
|
|
1316
1403
|
viewModel.fromXmlFile(file.raw).then(() => {
|
|
@@ -2157,11 +2244,11 @@ Object.defineProperty(exports, "__esModule", ({
|
|
|
2157
2244
|
value: true
|
|
2158
2245
|
}));
|
|
2159
2246
|
exports.kq_npm_client_leaflet_vue = exports.kq_npm_client_common_vue = exports.kq_npm_client3d_webgl_vue = void 0;
|
|
2160
|
-
|
|
2247
|
+
const kq_npm_client_common_vue = exports.kq_npm_client_common_vue = window.kq_npm_client_common_vue = window.kq_npm_client_common_vue || {};
|
|
2161
2248
|
__webpack_require__.g.kq_npm_client_common_vue = kq_npm_client_common_vue;
|
|
2162
|
-
|
|
2249
|
+
const kq_npm_client_leaflet_vue = exports.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue || {};
|
|
2163
2250
|
__webpack_require__.g.kq_npm_client_leaflet_vue = kq_npm_client_leaflet_vue;
|
|
2164
|
-
|
|
2251
|
+
const kq_npm_client3d_webgl_vue = exports.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue || {};
|
|
2165
2252
|
__webpack_require__.g.kq_npm_client3d_webgl_vue = kq_npm_client3d_webgl_vue;
|
|
2166
2253
|
|
|
2167
2254
|
/***/ })
|
package/floodanalysis/index.js
CHANGED
|
@@ -1529,6 +1529,8 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1529
1529
|
// 淹没最大高度范围的最大值
|
|
1530
1530
|
floodColorImage: props.settingParams?.floodColorImage ?? "0" // 淹没纹理色带值
|
|
1531
1531
|
});
|
|
1532
|
+
|
|
1533
|
+
// 淹没分析视图模型实例
|
|
1532
1534
|
let viewModel = null;
|
|
1533
1535
|
|
|
1534
1536
|
// 组件容器Ref
|
|
@@ -1536,6 +1538,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1536
1538
|
|
|
1537
1539
|
// 生成组件默认header
|
|
1538
1540
|
let headerTemp = (0, _vue.ref)();
|
|
1541
|
+
// header组件引用Ref
|
|
1539
1542
|
let headerTempRef = (0, _vue.ref)();
|
|
1540
1543
|
(0, _vue.onMounted)(() => {
|
|
1541
1544
|
(0, _util.updatePosition)(boxRef.value, props);
|
|
@@ -1573,7 +1576,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1573
1576
|
}
|
|
1574
1577
|
};
|
|
1575
1578
|
|
|
1576
|
-
|
|
1579
|
+
/** @description 获取图片路径,根据色带值匹配对应的淹没色调图片
|
|
1580
|
+
* @param {string} value 色带值
|
|
1581
|
+
* @returns {string} 图片路径
|
|
1582
|
+
*/
|
|
1577
1583
|
function getImagePath(value) {
|
|
1578
1584
|
var imagePath = "";
|
|
1579
1585
|
var image = colorImages.find(item => item.value === value);
|
|
@@ -1592,22 +1598,29 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1592
1598
|
function clearResult() {
|
|
1593
1599
|
viewModel && viewModel.clear();
|
|
1594
1600
|
}
|
|
1595
|
-
|
|
1601
|
+
/** @description 参数切换处理,根据参数类型更新淹没分析状态
|
|
1602
|
+
* @param {string} key 变化的参数类型(mode/moveMode/speed/alpha/minHeight/maxHeight/colorImage)
|
|
1603
|
+
*/
|
|
1596
1604
|
function paramsChanged(key) {
|
|
1597
1605
|
if (!viewModel) return;
|
|
1598
1606
|
switch (key) {
|
|
1607
|
+
// 淹没模式变化
|
|
1599
1608
|
case "mode":
|
|
1600
1609
|
viewModel.setMoveMode(formItem.floodMode);
|
|
1601
1610
|
break;
|
|
1611
|
+
// 淹没方向变化
|
|
1602
1612
|
case "moveMode":
|
|
1603
1613
|
viewModel.setMoveDirection(formItem.floodDirection);
|
|
1604
1614
|
break;
|
|
1615
|
+
// 淹没速度变化
|
|
1605
1616
|
case "speed":
|
|
1606
1617
|
viewModel.setMoveSpeed(formItem.floodSpeed);
|
|
1607
1618
|
break;
|
|
1619
|
+
// 透明度变化
|
|
1608
1620
|
case "alpha":
|
|
1609
1621
|
viewModel.setMoveAlpha(formItem.floodAlpha);
|
|
1610
1622
|
break;
|
|
1623
|
+
// 最小高度变化:保证不超过最大高度
|
|
1611
1624
|
case "minHeight":
|
|
1612
1625
|
if (formItem.floodMinHeight > formItem.floodMaxHeight) {
|
|
1613
1626
|
formItem.floodMaxHeight = formItem.floodMinHeight;
|
|
@@ -1615,6 +1628,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1615
1628
|
}
|
|
1616
1629
|
viewModel.setMoveMinHeight(formItem.floodMinHeight);
|
|
1617
1630
|
break;
|
|
1631
|
+
// 最大高度变化:保证不小于最小高度
|
|
1618
1632
|
case "maxHeight":
|
|
1619
1633
|
if (formItem.floodMinHeight > formItem.floodMaxHeight) {
|
|
1620
1634
|
formItem.floodMinHeight = formItem.floodMaxHeight;
|
|
@@ -1622,6 +1636,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1622
1636
|
}
|
|
1623
1637
|
viewModel.setMoveMaxHeight(formItem.floodMaxHeight);
|
|
1624
1638
|
break;
|
|
1639
|
+
// 色带图片变化
|
|
1625
1640
|
case "colorImage":
|
|
1626
1641
|
var imageUrl = getImagePath(formItem.floodColorImage);
|
|
1627
1642
|
viewModel.setMoveImage(imageUrl);
|
|
@@ -1630,15 +1645,23 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
1630
1645
|
break;
|
|
1631
1646
|
}
|
|
1632
1647
|
}
|
|
1648
|
+
|
|
1649
|
+
/** @description 设置参数值,根据参数类型更新淹没范围或绘制面
|
|
1650
|
+
* @param {string} key 参数类型(polygon/minHeight/maxHeight)
|
|
1651
|
+
* @param {*} value 参数值
|
|
1652
|
+
*/
|
|
1633
1653
|
function setValue(key, value) {
|
|
1634
1654
|
switch (key) {
|
|
1655
|
+
// 设置淹没分析多边形
|
|
1635
1656
|
case "polygon":
|
|
1636
1657
|
viewModel.setMovePolygon(value);
|
|
1637
1658
|
break;
|
|
1659
|
+
// 设置最小高度并触发参数变化
|
|
1638
1660
|
case "minHeight":
|
|
1639
1661
|
formItem.floodMinHeight = value;
|
|
1640
1662
|
paramsChanged(key);
|
|
1641
1663
|
break;
|
|
1664
|
+
// 设置最大高度并触发参数变化
|
|
1642
1665
|
case "maxHeight":
|
|
1643
1666
|
formItem.floodMaxHeight = value;
|
|
1644
1667
|
paramsChanged(key);
|
|
@@ -2137,8 +2160,13 @@ var _useGlobalConfig = __webpack_require__(22686);
|
|
|
2137
2160
|
//地形淹没分析逻辑类
|
|
2138
2161
|
|
|
2139
2162
|
class FloodAnalysisViewModel {
|
|
2163
|
+
/** @description 构造函数,初始化淹没分析视图模型并绑定测量事件
|
|
2164
|
+
* @param {Object} scenceView 三维场景视图对象
|
|
2165
|
+
* @param {Object} options 淹没分析配置参数
|
|
2166
|
+
*/
|
|
2140
2167
|
constructor(scenceView, options) {
|
|
2141
2168
|
this._options = {};
|
|
2169
|
+
//淹没分析配置参数对象
|
|
2142
2170
|
this._floodTerrainAnalysis = null;
|
|
2143
2171
|
//地形淹没三维对象
|
|
2144
2172
|
this._floodModelAnalysis = null;
|
|
@@ -2152,6 +2180,7 @@ class FloodAnalysisViewModel {
|
|
|
2152
2180
|
this._polygon = null;
|
|
2153
2181
|
//淹没范围
|
|
2154
2182
|
this._language = {};
|
|
2183
|
+
//多语言资源对象
|
|
2155
2184
|
this._colorImages = [
|
|
2156
2185
|
//淹没纹理图片集合
|
|
2157
2186
|
{
|
|
@@ -2173,6 +2202,7 @@ class FloodAnalysisViewModel {
|
|
|
2173
2202
|
options.viewer.scene.globe.depthTestAgainstTerrain = true;
|
|
2174
2203
|
options.colorImage = this.getImagePath(options.colorImage);
|
|
2175
2204
|
this._options = options;
|
|
2205
|
+
// 复用场景已存在的模型淹没对象,避免重复创建
|
|
2176
2206
|
if (scenceView._floodModelAnalysis) {
|
|
2177
2207
|
this._floodModelAnalysis = scenceView._floodModelAnalysis;
|
|
2178
2208
|
} else {
|
|
@@ -2188,6 +2218,7 @@ class FloodAnalysisViewModel {
|
|
|
2188
2218
|
// this._floodModelAnalysis.colorImage = options.colorImage;
|
|
2189
2219
|
var that = this;
|
|
2190
2220
|
this._measureHandler = new Cesium.Kq3dMeasureHandler(scenceView._viewer);
|
|
2221
|
+
// 自定义绘制提示样式
|
|
2191
2222
|
if (scenceView._props.showDrawTipsStyle) {
|
|
2192
2223
|
this._measureHandler.showDrawTips = scenceView._props.showDrawTipsStyle;
|
|
2193
2224
|
this._measureHandler.drawTipsStyle = {
|
|
@@ -2198,13 +2229,16 @@ class FloodAnalysisViewModel {
|
|
|
2198
2229
|
}
|
|
2199
2230
|
};
|
|
2200
2231
|
}
|
|
2232
|
+
// 测量完成事件:记录结果并隐藏标签
|
|
2201
2233
|
this._measureHandler.measureEvent.addEventListener(function (result) {
|
|
2202
2234
|
that._measureResult = result;
|
|
2203
2235
|
result.measureResult.label.show = false;
|
|
2204
2236
|
});
|
|
2237
|
+
// 测量激活状态事件:测量结束(ret==false)时根据模式启动淹没分析
|
|
2205
2238
|
this._measureHandler.activeEvent.addEventListener(function (ret) {
|
|
2206
2239
|
if (ret == false) {
|
|
2207
2240
|
if (that._measureResult) {
|
|
2241
|
+
// 地形淹没模式
|
|
2208
2242
|
if (that._mode === 0) {
|
|
2209
2243
|
that._options.positions = that._measureResult.positions;
|
|
2210
2244
|
if (!that._floodTerrainAnalysis) {
|
|
@@ -2214,6 +2248,7 @@ class FloodAnalysisViewModel {
|
|
|
2214
2248
|
}
|
|
2215
2249
|
that._floodTerrainAnalysis.start();
|
|
2216
2250
|
} else if (that._mode === 1) {
|
|
2251
|
+
// 模型淹没模式
|
|
2217
2252
|
if (that._measureResult.positions && that._measureResult.positions.length > 0) {
|
|
2218
2253
|
that._floodModelAnalysis.center = that._measureResult.positions[0];
|
|
2219
2254
|
}
|
|
@@ -2229,7 +2264,10 @@ class FloodAnalysisViewModel {
|
|
|
2229
2264
|
});
|
|
2230
2265
|
}
|
|
2231
2266
|
|
|
2232
|
-
|
|
2267
|
+
/** @description 获取图片路径,根据色带值匹配对应的淹没纹理图片
|
|
2268
|
+
* @param {string} value 色带值
|
|
2269
|
+
* @returns {string} 图片路径
|
|
2270
|
+
*/
|
|
2233
2271
|
getImagePath(value) {
|
|
2234
2272
|
var imagePath = '';
|
|
2235
2273
|
var image = this._colorImages.find(item => item.value === value);
|
|
@@ -2243,9 +2281,12 @@ class FloodAnalysisViewModel {
|
|
|
2243
2281
|
start() {
|
|
2244
2282
|
// 判断是否添加了地形
|
|
2245
2283
|
if (this._mode === 0) {
|
|
2284
|
+
// 地形淹没模式:检查地形可用性
|
|
2246
2285
|
if (this._floodModelAnalysis.viewer.terrainProvider.availability) {
|
|
2286
|
+
// 判断地形是否为非 heightmap 结构
|
|
2247
2287
|
if (this._floodModelAnalysis.viewer.terrainProvider && !this._floodModelAnalysis.viewer.terrainProvider._heightmapStructure) {
|
|
2248
2288
|
this.clear();
|
|
2289
|
+
// 已有淹没范围直接启动,否则启动测量绘制
|
|
2249
2290
|
if (this._polygon) {
|
|
2250
2291
|
this._options.positions = this._polygon;
|
|
2251
2292
|
if (!this._floodTerrainAnalysis) {
|
|
@@ -2258,18 +2299,21 @@ class FloodAnalysisViewModel {
|
|
|
2258
2299
|
this._measureHandler.startMeasure(Cesium.Kq3dMeasureMode.HorizontalArea);
|
|
2259
2300
|
}
|
|
2260
2301
|
} else {
|
|
2302
|
+
// heightmap 地形不支持该分析
|
|
2261
2303
|
(0, _message.default)({
|
|
2262
2304
|
message: this._language.value.webgl["stkTerrainAnalysisTips"],
|
|
2263
2305
|
type: "warning"
|
|
2264
2306
|
});
|
|
2265
2307
|
}
|
|
2266
2308
|
} else {
|
|
2309
|
+
// 未加载地形则提示
|
|
2267
2310
|
(0, _message.default)({
|
|
2268
2311
|
message: this._language.value.webgl["terrainAnalysisTips"],
|
|
2269
2312
|
type: "warning"
|
|
2270
2313
|
});
|
|
2271
2314
|
}
|
|
2272
2315
|
} else if (this._mode === 1) {
|
|
2316
|
+
// 模型淹没模式:检查场景是否存在3DTileset模型
|
|
2273
2317
|
var modelFlag = false;
|
|
2274
2318
|
var models = this._floodModelAnalysis.viewer.scene.primitives._primitives;
|
|
2275
2319
|
for (let i = 0; i < models.length; i++) {
|
|
@@ -2281,6 +2325,7 @@ class FloodAnalysisViewModel {
|
|
|
2281
2325
|
}
|
|
2282
2326
|
if (modelFlag) {
|
|
2283
2327
|
this.clear();
|
|
2328
|
+
// 已有淹没范围直接启动,否则启动测量绘制
|
|
2284
2329
|
if (this._polygon) {
|
|
2285
2330
|
this._floodModelAnalysis.center = this._polygon[0];
|
|
2286
2331
|
let polygon = Cesium.PolygonGeometry.fromPositions({
|
|
@@ -2292,6 +2337,7 @@ class FloodAnalysisViewModel {
|
|
|
2292
2337
|
this._measureHandler.startMeasure(Cesium.Kq3dMeasureMode.HorizontalArea);
|
|
2293
2338
|
}
|
|
2294
2339
|
} else {
|
|
2340
|
+
// 场景中无模型则提示
|
|
2295
2341
|
(0, _message.default)({
|
|
2296
2342
|
message: this._language.value.webgl["addModelAnalysisTips"],
|
|
2297
2343
|
type: "warning"
|
|
@@ -2304,6 +2350,7 @@ class FloodAnalysisViewModel {
|
|
|
2304
2350
|
clear() {
|
|
2305
2351
|
this._measureHandler.stopMeasure();
|
|
2306
2352
|
if (this._floodTerrainAnalysis) {
|
|
2353
|
+
// 保留当前地形淹没配置后销毁重建,以清除分析结果
|
|
2307
2354
|
var options = {
|
|
2308
2355
|
viewer: this._floodTerrainAnalysis.viewer,
|
|
2309
2356
|
moveMode: this._floodTerrainAnalysis.moveMode,
|
|
@@ -2332,58 +2379,76 @@ class FloodAnalysisViewModel {
|
|
|
2332
2379
|
this._measureHandler = null;
|
|
2333
2380
|
}
|
|
2334
2381
|
|
|
2335
|
-
|
|
2382
|
+
/** @description 设置淹没模式
|
|
2383
|
+
* @param {number} mode 淹没模式(0:地形淹没 1:模型淹没)
|
|
2384
|
+
*/
|
|
2336
2385
|
setMoveMode(mode) {
|
|
2337
2386
|
this._mode = Number(mode);
|
|
2338
2387
|
}
|
|
2339
|
-
|
|
2388
|
+
/** @description 设置淹没方向
|
|
2389
|
+
* @param {number} direction 淹没方向(0:单向 1:双向)
|
|
2390
|
+
*/
|
|
2340
2391
|
setMoveDirection(direction) {
|
|
2341
2392
|
direction = Number(direction);
|
|
2342
2393
|
this._options.moveMode = direction;
|
|
2343
2394
|
if (this._floodTerrainAnalysis) this._floodTerrainAnalysis.moveMode = direction;
|
|
2344
2395
|
if (this._floodModelAnalysis) this._floodModelAnalysis.moveMode = direction;
|
|
2345
2396
|
}
|
|
2346
|
-
|
|
2397
|
+
/** @description 设置淹没速度
|
|
2398
|
+
* @param {number} speed 淹没速度
|
|
2399
|
+
*/
|
|
2347
2400
|
setMoveSpeed(speed) {
|
|
2348
2401
|
speed = Number(speed);
|
|
2349
2402
|
this._options.speed = speed;
|
|
2350
2403
|
if (this._floodTerrainAnalysis) this._floodTerrainAnalysis.speed = speed;
|
|
2351
2404
|
if (this._floodModelAnalysis) this._floodModelAnalysis.speed = speed;
|
|
2352
2405
|
}
|
|
2353
|
-
|
|
2406
|
+
/** @description 设置淹没纹理透明度
|
|
2407
|
+
* @param {number} alpha 透明度(0-1)
|
|
2408
|
+
*/
|
|
2354
2409
|
setMoveAlpha(alpha) {
|
|
2355
2410
|
alpha = Number(alpha);
|
|
2356
2411
|
this._options.alpha = alpha;
|
|
2357
2412
|
if (this._floodTerrainAnalysis) this._floodTerrainAnalysis.alpha = alpha;
|
|
2358
2413
|
if (this._floodModelAnalysis) this._floodModelAnalysis.alpha = alpha;
|
|
2359
2414
|
}
|
|
2360
|
-
|
|
2415
|
+
/** @description 设置最小淹没高度
|
|
2416
|
+
* @param {number} minHeight 最小淹没高度
|
|
2417
|
+
*/
|
|
2361
2418
|
setMoveMinHeight(minHeight) {
|
|
2362
2419
|
minHeight = Number(minHeight);
|
|
2363
2420
|
this._options.minHeight = minHeight;
|
|
2364
2421
|
if (this._floodTerrainAnalysis) this._floodTerrainAnalysis.minHeight = minHeight;
|
|
2365
2422
|
if (this._floodModelAnalysis) this._floodModelAnalysis.minHeight = minHeight;
|
|
2366
2423
|
}
|
|
2367
|
-
|
|
2424
|
+
/** @description 设置最大淹没高度
|
|
2425
|
+
* @param {number} maxHeight 最大淹没高度
|
|
2426
|
+
*/
|
|
2368
2427
|
setMoveMaxHeight(maxHeight) {
|
|
2369
2428
|
maxHeight = Number(maxHeight);
|
|
2370
2429
|
this._options.maxHeight = maxHeight;
|
|
2371
2430
|
if (this._floodTerrainAnalysis) this._floodTerrainAnalysis.maxHeight = maxHeight;
|
|
2372
2431
|
if (this._floodModelAnalysis) this._floodModelAnalysis.maxHeight = maxHeight;
|
|
2373
2432
|
}
|
|
2374
|
-
|
|
2433
|
+
/** @description 设置淹没填充纹理
|
|
2434
|
+
* @param {string} image 纹理图片路径
|
|
2435
|
+
*/
|
|
2375
2436
|
setMoveImage(image) {
|
|
2376
2437
|
this._options.colorImage = image;
|
|
2377
2438
|
if (this._floodTerrainAnalysis) this._floodTerrainAnalysis.colorImage = image;
|
|
2378
2439
|
if (this._floodModelAnalysis) this._floodModelAnalysis.colorImage = image;
|
|
2379
2440
|
}
|
|
2380
|
-
|
|
2441
|
+
/** @description 设置淹没范围,根据点维度自动选择构造方式
|
|
2442
|
+
* @param {Array} points 淹没范围点集合(二维或三维坐标)
|
|
2443
|
+
*/
|
|
2381
2444
|
setMovePolygon(points) {
|
|
2382
2445
|
if (Array.isArray(points) && points.length > 0) {
|
|
2383
2446
|
if (Array.isArray(points[0])) {
|
|
2447
|
+
// 二维坐标(经纬度)
|
|
2384
2448
|
if (points[0].length == 2) {
|
|
2385
2449
|
this._polygon = Cesium.Cartesian3.fromDegreesArray(points.flat());
|
|
2386
2450
|
} else if (points[0].length == 3) {
|
|
2451
|
+
// 三维坐标(经纬度高)
|
|
2387
2452
|
this._polygon = Cesium.Cartesian3.fromDegreesArrayHeights(points.flat());
|
|
2388
2453
|
}
|
|
2389
2454
|
}
|
|
@@ -2674,11 +2739,11 @@ Object.defineProperty(exports, "__esModule", ({
|
|
|
2674
2739
|
value: true
|
|
2675
2740
|
}));
|
|
2676
2741
|
exports.kq_npm_client_leaflet_vue = exports.kq_npm_client_common_vue = exports.kq_npm_client3d_webgl_vue = void 0;
|
|
2677
|
-
|
|
2742
|
+
const kq_npm_client_common_vue = exports.kq_npm_client_common_vue = window.kq_npm_client_common_vue = window.kq_npm_client_common_vue || {};
|
|
2678
2743
|
__webpack_require__.g.kq_npm_client_common_vue = kq_npm_client_common_vue;
|
|
2679
|
-
|
|
2744
|
+
const kq_npm_client_leaflet_vue = exports.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue || {};
|
|
2680
2745
|
__webpack_require__.g.kq_npm_client_leaflet_vue = kq_npm_client_leaflet_vue;
|
|
2681
|
-
|
|
2746
|
+
const kq_npm_client3d_webgl_vue = exports.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue || {};
|
|
2682
2747
|
__webpack_require__.g.kq_npm_client3d_webgl_vue = kq_npm_client3d_webgl_vue;
|
|
2683
2748
|
|
|
2684
2749
|
/***/ })
|