From c2c9f6faf819d7e284227d61962ba623a22865ec Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Wed, 01 Feb 2023 10:18:51 +0800
Subject: [PATCH] 水文水环境分析-洪水淹没页面
---
config.json | 11
widgets/FloodAnalysis/data.json | 25
widgets/FloodAnalysis/images/location4.png | 0
widgets/FloodAnalysis/css/style.css | 84 ++
widgets/FloodAnalysis/css/Tooltip-div.css | 49 +
corelib/common/popup/floodAnalysis.html | 29
widgets/FloodAnalysis/FloodAnalysis.js | 311 ++++++++
config_offline.json | 19
corelib/common/popup/css/style.css | 62 +
corelib/common/popup/js/evaluateAnalysis.js | 81 ++
corelib/common/popup/evaluateAnalysis.html | 73 +
.idea/vcs.xml | 6
widgets/Hydrology/Widget.js | 12
widgets/ThematicDynamicRiver/ThematicDynamicRiver.js | 21
widgets/FloodAnalysis/nls/strings.js | 7
widgets/FloodAnalysis/nls/es/strings.js | 5
widgets/FloodAnalysis/Widget.html | 23
widgets/BackStageManagement/Widget.js | 4
widgets/FloodAnalysis/css/style copy .css | 165 ++++
themes/FoldableTheme/widgets/HeaderController/Widget.js | 69 +
widgets/FloodAnalysis/Tooltip-div.js | 49 +
widgets/YuShuiQing/popup/js/river.js | 2
widgets/HydrologicalRiskArea/CommonPointLayer3D.js | 6
widgets/ThematicDynamicRiver/Widget.js | 6
corelib/common/popup/js/floodAnalysis.js | 24
widgets/FloodAnalysis/manifest.json | 17
widgets/RiskEarlyWarning/Widget.js | 7
widgets/FloodAnalysis/images/movingRiver.png | 0
widgets/FloodAnalysis/Widget copy.js | 366 +++++++++
widgets/YuShuiQing/Widget.js | 4
widgets/FloodAnalysis/nls/zh-cn/strings.js | 5
widgets/FloodAnalysis/Widget copy.html | 43 +
widgets/FloodAnalysis/Widget.js | 475 ++++++++++++
.idea/codeStyles/codeStyleConfig.xml | 5
widgets/ComprehensiveSupervise/data.json | 4
widgets/FloodAnalysis/css/style copy.css | 165 ++++
36 files changed, 2,189 insertions(+), 45 deletions(-)
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..1a0176a
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+<component name="ProjectCodeStyleConfiguration">
+ <state>
+ <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
+ </state>
+</component>
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..5ace414
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
+ </component>
+</project>
diff --git a/config.json b/config.json
index 43aea43..297e4ae 100644
--- a/config.json
+++ b/config.json
@@ -651,6 +651,17 @@
}
},
{
+ "name": "洪水淹没分析",
+ "uri": "widgets/FloodAnalysis/Widget",
+ "position": {
+ "left": 20,
+ "top": 90,
+ "width": "440px",
+ "height": "320px",
+ "relativeTo": "map"
+ }
+ },
+ {
"name": "运维管理",
"uri": "widgets/BackStageManagement/Widget"
}
diff --git a/config_offline.json b/config_offline.json
index eb47310..ae8579a 100644
--- a/config_offline.json
+++ b/config_offline.json
@@ -497,7 +497,7 @@
"maximumLevel": 17
}
]
- },
+ },
{
"name": "离线影像",
"tooltip": "赣州市离线影像",
@@ -564,8 +564,8 @@
}
},
"widgets": [
-
-
+
+
{
"name": "监测预警",
"uri": "widgets/ComprehensiveSupervise/Widget",
@@ -651,6 +651,17 @@
}
},
{
+ "name": "洪水淹没分析",
+ "uri": "widgets/FloodAnalysis/Widget",
+ "position": {
+ "left": 20,
+ "top": 90,
+ "width": "440px",
+ "height": "320px",
+ "relativeTo": "map"
+ }
+ },
+ {
"name": "运维管理",
"uri": "widgets/BackStageManagement/Widget"
}
@@ -679,4 +690,4 @@
"rules": []
},
"logoLink": ""
-}
\ No newline at end of file
+}
diff --git a/corelib/common/popup/css/style.css b/corelib/common/popup/css/style.css
index c826d7d..b7d3f62 100644
--- a/corelib/common/popup/css/style.css
+++ b/corelib/common/popup/css/style.css
@@ -779,4 +779,64 @@
position: absolute;
bottom: 0px;
top: 95px;
-}
\ No newline at end of file
+}
+/**洪水淹没分析弹窗**/
+.flood-box{
+ margin: 20px;
+}
+
+.flood-box-top{
+ display: flex;
+ width: 100%;
+ height: 350px;
+ border: 1px solid black;
+}
+
+.flood-box-bottom{
+ text-align: right;
+ margin-top: 15px;
+}
+
+/**损失分析**/
+.evaluate-analysis{
+ margin: 15px;
+}
+
+.evaluate-box-top{
+ width: 100%;
+ height: 60px;
+}
+
+.evaluate-box-middle{
+ width: 96%;
+ height: 350px;
+ border: 1px solid black;
+ padding: 0px 10px 0px 10px;
+}
+
+.evaluate-box-top-left{
+ display: flex;
+ font-size: 17px;
+}
+
+.evaluate-box-top-right{
+ margin-left: 70px;
+}
+
+.evaluate-box-top{
+ display: flex;
+}
+
+.evaluate-table-thead caption{
+ font-size: 20px;
+ margin: 15px 0 15px 0;
+}
+
+.column-2{
+ margin-left: 20px;
+}
+
+.evaluate-echarts{
+ width: 100%;
+ display: none;
+}
diff --git a/corelib/common/popup/evaluateAnalysis.html b/corelib/common/popup/evaluateAnalysis.html
new file mode 100644
index 0000000..b16dc98
--- /dev/null
+++ b/corelib/common/popup/evaluateAnalysis.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>评估分析</title>
+ <link rel="stylesheet" href="./css/style.css">
+ <link rel="stylesheet" href="">
+</head>
+<body>
+ <div class="evaluate-analysis">
+ <div class="evaluate-top"></div>
+
+ <div class="evaluate-box">
+ <div class="evaluate-box-top">
+ <div class="evaluate-box-top-left">
+ <div class="column-1">
+ <div>
+ <span>受灾户数:</span><span>125</span>
+ </div>
+ <div>
+ <span>受灾面积:</span><span>47.999km²</span>
+ </div>
+ </div>
+ <div class="column-2">
+ <div>
+ <span>受灾人口:</span><span>625人</span>
+ </div>
+ <div>
+ <span>房屋价值:</span><span>189.999万元</span>
+ </div>
+ </div>
+ </div>
+ <div class="evaluate-box-top-right">
+ <label >
+ <input id="list" type="radio" name="value" value="list" checked='checked'>列表
+ </label>
+
+ <label >
+ <input id="echarts" type="radio" name="value" value="echarts">图表
+ </label>
+ </div>
+ </div>
+ <div class="evaluate-box-middle">
+ <table class="evaluate-table-thead table-thead">
+ <caption>人口财产淹没损失表</caption>
+ <thead>
+ <tr>
+ <th><div>编号</div></th>
+ <th><div>受淹户数(户)</div></th>
+ <th><div>受淹人口数量(人)</div></th>
+ <th><div>受淹居民地面积(km²)</div></th>
+ <th><div>受淹房屋价值(万元/人)</div></th>
+ </tr>
+ </thead>
+ </table>
+ <div class="evaluate-echarts" id="evaluate-echarts">
+ </div>
+ </div>
+ </div>
+
+ <div class="evaluate-bottom">
+ <button type="button">生成淹没图</button>
+ </div>
+
+ </div>
+
+
+ <script src="../../../libs/jquery/jquery-3.3.1.min.js"></script>
+ <script src="../../../libs/layer/layer.js"></script>
+ <script src="../../../libs/echarts/v4/echarts.min.js"></script>
+ <script src="js/evaluateAnalysis.js"></script>
+</body>
+</html>
diff --git a/corelib/common/popup/floodAnalysis.html b/corelib/common/popup/floodAnalysis.html
new file mode 100644
index 0000000..39a7231
--- /dev/null
+++ b/corelib/common/popup/floodAnalysis.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>洪水淹没分析</title>
+ <link rel="stylesheet" href="./css/style.css">
+ <link rel="stylesheet" href="">
+</head>
+<body>
+ <div class="flood-simulation-analysis">
+ <div class="flood-top">
+
+ </div>
+ <div class="flood-box">
+ <div class="flood-box-top">
+ <div class="flood-box-left">11</div>
+ <div class="flood-box-right">22</div>
+ </div>
+ <div class="flood-box-bottom">
+ <button type='button' id="start-analysis-btn"> 开始分析 </button>
+ </div>
+ </div>
+
+ </div>
+ <script src="../../../libs/jquery/jquery-3.3.1.min.js"></script>
+ <script src="../../../libs/layer/layer.js"></script>
+ <script src="./js/floodAnalysis.js"></script>
+</body>
+</html>
diff --git a/corelib/common/popup/js/evaluateAnalysis.js b/corelib/common/popup/js/evaluateAnalysis.js
new file mode 100644
index 0000000..01875df
--- /dev/null
+++ b/corelib/common/popup/js/evaluateAnalysis.js
@@ -0,0 +1,81 @@
+$(function () {
+// change事件
+ $('input[type=radio][name=value]').change(function () {
+ if (this.value == 'list'){
+ $('.evaluate-echarts').hide()
+ $('.evaluate-box-top-left').css('visibility','visible')
+ $('.evaluate-table-thead').show()
+ }else {
+ $('.evaluate-table-thead').hide()
+ $('.evaluate-box-top-left').css('visibility','hidden')
+
+ recharts_z()
+ loadEcharts()
+ $('.evaluate-echarts').show()
+ }
+ });
+
+ function loadEcharts(){
+ var echartsOption = {
+ tooltip: {
+ trigger: 'item'
+ },
+ legend: {
+ top: '5%',
+ left: 'center'
+ },
+ series: [
+ {
+ type: 'pie',
+ radius: ['40%', '70%'],
+ avoidLabelOverlap: false,
+ itemStyle: {
+ borderRadius: 10,
+ borderColor: '#fff',
+ borderWidth: 0
+ },
+ label: {
+ show: true,
+ position: 'left'
+ },
+ emphasis: {
+ label: {
+ show: true,
+ fontSize: 20,
+ fontWeight: 'bold'
+ }
+ },
+ labelLine: {
+ show: false
+ },
+ data: [
+ { value: 1048, name: '会昌县' },
+ { value: 735, name: '石城县' },
+ { value: 580, name: '宁都县' },
+ ]
+ }
+ ]
+ }
+
+
+
+ var chartDom = document.getElementById('evaluate-echarts');
+ var myChart = echarts.init(chartDom);
+ echartsOption&&myChart.setOption(echartsOption,true);
+ }
+
+ function recharts_z() {
+ console.log($(window).width(),$(window).height(),"777")
+ var width = $(window).width() * 0.8;
+ var height = ($(window).height() - 50) - 80;
+ $('#evaluate-echarts').empty();
+ $('#evaluate-echarts').removeAttr("_echarts_instance_").empty();
+ var chartPie = document.getElementById('evaluate-echarts');
+ var myChartPie = echarts.init(chartPie);
+ var resize = {
+ width: width,
+ height: height
+ }
+ myChartPie.resize(resize);
+ }
+});
diff --git a/corelib/common/popup/js/floodAnalysis.js b/corelib/common/popup/js/floodAnalysis.js
new file mode 100644
index 0000000..f273105
--- /dev/null
+++ b/corelib/common/popup/js/floodAnalysis.js
@@ -0,0 +1,24 @@
+$(function () {
+ $('#start-analysis-btn').click(function () {
+ evaluateAnalysisPopup()
+ })
+
+ //评估分析弹窗
+ function evaluateAnalysisPopup(){
+ var url = '../../common/popup/evaluateAnalysis.html';
+ var top = ($(window).height() - 526) / 2;
+ var left = ($(window).width() - 1100 - 340) / 2 + 340;
+ layer.open({
+ title:'评估分析',
+ type: 2,
+ maxmin: false, //开启最大化最小化按钮
+ area: ['802px', '526px'],
+ skin: 'evaluateAnalysis',
+ offset: [top, left],
+ content: url,
+ id: "evaluateAnalysisLayer",
+ closeBtn: 1
+ });
+ }
+
+});
diff --git a/themes/FoldableTheme/widgets/HeaderController/Widget.js b/themes/FoldableTheme/widgets/HeaderController/Widget.js
index 39fb3b7..cc798dd 100644
--- a/themes/FoldableTheme/widgets/HeaderController/Widget.js
+++ b/themes/FoldableTheme/widgets/HeaderController/Widget.js
@@ -47,6 +47,7 @@
flag: false,
flags: false,
megflag: false,
+ floodAnalysisFlag:false,
postCreate: function () {
this.inherited(arguments);
@@ -736,7 +737,7 @@
} else {
iconUrl = iconConfig.icon;
}
- if (iconConfig.name == "AnalysisOfBarrierLake" || iconConfig.name == 'ThematicDynamicRiver' || iconConfig.name == "MapSection") {
+ if (iconConfig.name == "AnalysisOfBarrierLake" || iconConfig.name == 'ThematicDynamicRiver' || iconConfig.name == "MapSection" || iconConfig.name == "FloodAnalysis") {
node = null;
return;
} else {
@@ -759,7 +760,7 @@
'position': "absolute",
'top': "45px",
'left': "0px",
- 'height': '135px',
+ 'height': '180px',
'width': '126px',
'background': 'rgb(0,23,54)',
'z-index': '50'
@@ -770,6 +771,7 @@
var firstNode = null;
var middleNode = null;
var lastNode = null;
+ var finalNode = null;
for (var i = 0; i < iconNode.length; i++) {
if (iconNode[i].name == 'AnalysisOfBarrierLake') {
firstNode = html.create('li', {
@@ -789,6 +791,7 @@
if (!that.flags) {
$(event.target).parent().parent().siblings().toggleClass('click-icon-node');
}
+ console.log(self.openedId,"8888")
if (self.openedId && self.openedId === firstNode.config.id) {
self._switchNodeToClose(self.openedId);
return;
@@ -812,6 +815,7 @@
}
that.flag = true;
that.megflag = true;
+ that.floodAnalysisFlag = true;
}
})
firstNode.config = iconNode[i];
@@ -820,7 +824,7 @@
this._createDropTriangle(firstNode);
}
}
-
+
if (iconNode[i].name == 'ThematicDynamicRiver') {
middleNode = html.create('li', {
'class': 'icon-node jimu-float-trailing openli',
@@ -862,6 +866,7 @@
}
that.flags = true;
that.megflag = true;
+ that.floodAnalysisFlag = true
}
})
middleNode.config = iconNode[i];
@@ -912,6 +917,7 @@
}
that.flag = true;
that.flags = true;
+ that.floodAnalysisFlag = true;
}
})
lastNode.config = iconNode[i];
@@ -920,6 +926,58 @@
this._createDropTriangle(lastNode);
}
}
+
+ if (iconNode[i].name == 'FloodAnalysis'){
+ finalNode = html.create('li', {
+ 'class': 'icon-node jimu-float-trailing openli',
+ title: iconNode[i].label,
+ settingId: iconNode[i].id,
+ 'data-widget-name': iconNode[i].name,
+ innerHTML: iconNode[i].label
+ }, optionLi[0]);
+ var self = this;
+ $(node).on('click', finalNode, function (event) {
+ if (event.target.innerText == "洪水淹没分析") {
+ $(event.target).parent().parent().stop().hide();
+ if (!finalNode.config.widgets || finalNode.config.widgets.length === 1 ||
+ finalNode.config.openType === 'openAll') {
+ //widget or group with 'openAll' open type
+ if (!that.floodAnalysisFlag) {
+ $(event.target).parent().parent().siblings().toggleClass('click-icon-node');
+ }
+ if (self.openedId && self.openedId === finalNode.config.id) {
+ self._switchNodeToClose(self.openedId);
+ return;
+ } else {
+ if (self.openedId) {
+ self._switchNodeToClose(self.openedId).then(lang.hitch(self, function () {
+ self._closeDropMenu();
+ self._switchNodeToOpen(finalNode.config.id);
+ }));
+ } else {
+ self._switchNodeToOpen(finalNode.config.id);
+ }
+ }
+ } else {
+ if (self.dropMenuNode) {
+ self._closeDropMenu();
+
+ } else {
+ self._openDropMenu(finalNode);
+ }
+ }
+ that.flag = true;
+ that.flags = true;
+ that.megflag = true;
+ }
+ })
+ finalNode.config = iconNode[i];
+ if (finalNode.config.widgets && finalNode.config.widgets.length > 1 &&
+ finalNode.config.openType === 'dropDown') {
+ this._createDropTriangle(finalNode);
+ }
+ }
+
}
$(node).mouseover(function () {
$(dropDownDisplay).stop().show();
@@ -1070,6 +1128,7 @@
this.flag = false;
this.flags = false;
this.megflag = false;
+ this.floodAnalysisFlag = false;
if (this.openedId && this.openedId === node.config.id) {
this._switchNodeToClose(this.openedId);
return;
@@ -1281,7 +1340,7 @@
for (i = this.headerIconCount; i < allIconConfigs.length; i++) {
// 做修改得地方
iconConfig = allIconConfigs[i];
- if (iconConfig.name == "AnalysisOfBarrierLake" || iconConfig.name == "ThematicDynamicRiver" || iconConfig.name == "MapSection") {
+ if (iconConfig.name == "AnalysisOfBarrierLake" || iconConfig.name == "ThematicDynamicRiver" || iconConfig.name == "MapSection" || iconConfig.name == "FloodAnalysis") {
continue;
} else {
moreItems.push(iconConfig);
@@ -1332,4 +1391,4 @@
}
});
return clazz;
- });
\ No newline at end of file
+ });
diff --git a/widgets/BackStageManagement/Widget.js b/widgets/BackStageManagement/Widget.js
index 42f2847..5d1d989 100644
--- a/widgets/BackStageManagement/Widget.js
+++ b/widgets/BackStageManagement/Widget.js
@@ -32,7 +32,7 @@
onOpen: function () {
//面板打开的时候触发 (when open this panel trigger)
- window.open("http://localhost:82/#/login");
+ window.open("http://localhost:82/#/login");
this.onClose();
},
@@ -44,7 +44,7 @@
$(divLi[i]).removeClass('jimu-state-selected');
}
}
-
+
},
onMinimize: function () {
diff --git a/widgets/ComprehensiveSupervise/data.json b/widgets/ComprehensiveSupervise/data.json
index 21bda20..1f2647d 100644
--- a/widgets/ComprehensiveSupervise/data.json
+++ b/widgets/ComprehensiveSupervise/data.json
@@ -166,7 +166,7 @@
"longitude": 114.513911,
"latitude": 25.977936
},
-
+
{
"name": "信丰水文站",
"monitor": "http://10.36.162.20:803/new/sp_action.php?STCD=62304700&action=jpg",
@@ -203,4 +203,4 @@
"latitude": ""
}
]
-}
\ No newline at end of file
+}
diff --git a/widgets/FloodAnalysis/FloodAnalysis.js b/widgets/FloodAnalysis/FloodAnalysis.js
new file mode 100644
index 0000000..a6f7f5d
--- /dev/null
+++ b/widgets/FloodAnalysis/FloodAnalysis.js
@@ -0,0 +1,311 @@
+var DrawDynamicClampGround = (function () {
+ var mouseHandlerDraw;
+ function GetNorthCartesain(cartesain0, cartesain1) {
+ var cartographic0 = Cesium.Cartographic.fromCartesian(cartesain0);
+ var cartographic1 = Cesium.Cartographic.fromCartesian(cartesain1);
+ var height = cartographic0.height > cartographic1.height ? cartographic0.height : cartographic1.height;
+ var length = Math.sqrt((cartographic0.longitude - cartographic1.longitude) * (cartographic0.longitude - cartographic1.longitude)+
+ (cartographic0.latitude - cartographic1.latitude) * (cartographic0.latitude - cartographic1.latitude));
+ var cartographicN = new Cesium.Cartographic(cartographic0.longitude, cartographic0.latitude + length, height);
+ var cartesainN = Cesium.Cartesian3.fromRadians(cartographicN.longitude, cartographicN.latitude, cartographicN.height);
+ return cartesainN;
+ }
+
+ function _() { }
+ //绘制点
+ _.startDrawPoint = function (viewer, callback) {
+ var scene = viewer.scene;
+ if (mouseHandlerDraw) {
+ mouseHandlerDraw.destroy();
+ mouseHandlerDraw = null;
+ } else {
+ mouseHandlerDraw = new Cesium.ScreenSpaceEventHandler(scene.canvas);
+ }
+
+ TooltipDiv.initTool(viewer.cesiumWidget.container);
+
+ mouseHandlerDraw.setInputAction(function (movement) {
+ if (movement.position != null) {
+ var cartesian = viewer.scene.pickPosition(movement.position);
+ if (cartesian) {
+ var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
+ if (cartographic) {
+ if (typeof callback == 'function') {
+ callback(cartographic);
+ }
+
+ if (mouseHandlerDraw) {
+ mouseHandlerDraw.destroy();
+ mouseHandlerDraw = null;
+ }
+ TooltipDiv.setVisible(false);
+ }
+ }
+ }
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
+
+ mouseHandlerDraw.setInputAction(function (movement) {
+ var cartesian = viewer.scene.pickPosition(movement.endPosition);
+ if (cartesian) {
+ TooltipDiv.showAt(movement.endPosition, '点击添加点');
+ }
+ }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
+ }
+ //绘制线段
+ _.startDrawingLine = function (viewer, callback) {
+ var scene = viewer.scene;
+ if (mouseHandlerDraw) {
+ mouseHandlerDraw.destroy();
+ mouseHandlerDraw = null;
+ } else {
+ mouseHandlerDraw = new Cesium.ScreenSpaceEventHandler(scene.canvas);
+ }
+
+ TooltipDiv.initTool(viewer.cesiumWidget.container);
+
+ var drawingPolyline = null;
+ var positions = [];
+ mouseHandlerDraw.setInputAction(function (movement) {
+ if (movement.position != null) {
+ var cartesian = viewer.scene.pickPosition(movement.position);
+ if (cartesian) {
+ if (positions.length == 0) {
+ positions.push(cartesian.clone());
+ } else if (positions.length == 1) {
+ positions.push(cartesian.clone());
+ if (typeof callback == 'function') {
+ callback(positions);
+ }
+
+ if (mouseHandlerDraw) {
+ mouseHandlerDraw.destroy();
+ mouseHandlerDraw = null;
+ }
+ TooltipDiv.setVisible(false);
+ //移除
+ if (drawingPolyline != undefined)
+ viewer.entities.remove(drawingPolyline);
+
+ }
+ }
+ }
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
+
+ mouseHandlerDraw.setInputAction(function (movement) {
+ var cartesian = viewer.scene.pickPosition(movement.endPosition);
+ if (cartesian) {
+ if (positions.length == 0) {
+ TooltipDiv.showAt(movement.endPosition, '点击添加起点');
+ } else if (positions.length == 1) {
+ //更新entity
+ var positionArr = [];
+ positionArr.push(positions[0]);
+ positionArr.push(cartesian);
+ if (drawingPolyline != undefined)
+ viewer.entities.remove(drawingPolyline);
+ var lineOpts = {
+ polyline: {
+ positions: positionArr,
+ clampToGround: true, //
+ width: 3,
+ material: Cesium.Color.BLUE.withAlpha(0.5),
+ }
+ };
+ drawingPolyline = viewer.entities.add(lineOpts);
+ TooltipDiv.showAt(movement.endPosition, "点击添加终点");
+ }
+ }
+ }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
+
+ };
+ //绘制多段线
+ _.startDrawingPolyline = function (viewer, callback) {
+ var scene = viewer.scene;
+ if (mouseHandlerDraw) {
+ mouseHandlerDraw.destroy();
+ mouseHandlerDraw = null;
+ } else {
+ mouseHandlerDraw = new Cesium.ScreenSpaceEventHandler(scene.canvas);
+ }
+
+ TooltipDiv.initTool(viewer.cesiumWidget.container);
+
+ var drawingPolyline = null;
+ var positions = [];
+ mouseHandlerDraw.setInputAction(function (movement) {
+ if (movement.position != null) {
+ var cartesian = viewer.scene.pickPosition(movement.position);
+ if (cartesian) {
+ positions.push(cartesian.clone());
+ // var cartographic = Cesium.Cartographic.fromCartesian(cartesian);//当前点
+ // if (cartographic) {
+ // if (cartesian) {
+ // var isIntersect = false;
+ // if (positions.length >= 3) {
+ // var cartographicArr = [];
+ // for (var i = 0; i < positions.length; i++) {
+ // cartographicArr.push(Cesium.Cartographic.fromCartesian(positions[i]));
+ // }
+ // var line1 = turf.lineString([[cartographic.longitude, cartographic.latitude], [cartographicArr[cartographicArr.length - 1].longitude, cartographicArr[cartographicArr.length - 1].latitude]]);
+ // for (var i = 2; i < positions.length; i++) {
+ // var line2 = turf.lineString([
+ // [cartographicArr[i - 2].longitude, cartographicArr[i - 2].latitude],
+ // [cartographicArr[i - 1].longitude, cartographicArr[i - 1].latitude]]);
+ // var intersects = turf.lineIntersect(line1, line2);
+ // if (intersects && intersects.features && intersects.features.length > 0) {
+ // isIntersect = true;
+
+ // alert('图形自相交!');
+ // break;
+ // }
+ // }
+ // }
+ // if (isIntersect) { } else {
+ // positions.push(cartesian.clone());
+ // }
+ // }
+ // }
+ }
+ }
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
+
+ mouseHandlerDraw.setInputAction(function (movement) {
+ var cartesian = viewer.scene.pickPosition(movement.endPosition);
+ if (cartesian) {
+ if (positions.length == 0) {
+ TooltipDiv.showAt(movement.endPosition, '点击添加起点');
+ } else {
+ var positionArr = [];
+ for (var i = 0; i < positions.length; i++) {
+ positionArr.push(positions[i]);
+ }
+ positionArr.push(cartesian);
+
+ if (drawingPolyline != undefined)
+ viewer.entities.remove(drawingPolyline);
+ var lineOpts = {
+ polyline: {
+ positions: positionArr,
+ clampToGround: true, //
+ width: 3,
+ material: Cesium.Color.BLUE.withAlpha(0.5),
+ }
+ };
+ drawingPolyline = viewer.entities.add(lineOpts);
+ TooltipDiv.showAt(movement.endPosition, "双击结束");
+ }
+ }
+ }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
+
+ mouseHandlerDraw.setInputAction(function (movement) {
+ if (movement.position != null) {
+ var cartesian = viewer.scene.pickPosition(movement.position);
+ if (cartesian) {
+ if (positions.length < 2) {
+ return;
+ } else {
+
+ if (typeof callback == 'function') {
+ callback(positions);
+ }
+
+ if (mouseHandlerDraw) {
+ mouseHandlerDraw.destroy();
+ mouseHandlerDraw = null;
+ }
+ TooltipDiv.setVisible(false);
+ //移除entity
+ if (drawingPolyline != undefined)
+ viewer.entities.remove(drawingPolyline);
+ }
+ }
+ }
+ }, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
+ };
+ //绘制方位线
+ _.startDrawingVLine = function (viewer, callback) {
+ var scene = viewer.scene;
+ if (mouseHandlerDraw) {
+ mouseHandlerDraw.destroy();
+ mouseHandlerDraw = null;
+ } else {
+ mouseHandlerDraw = new Cesium.ScreenSpaceEventHandler(scene.canvas);
+ }
+
+ TooltipDiv.initTool(viewer.cesiumWidget.container);
+
+ var drawingPolylineN = null;
+ var drawingPolylineT = null;
+ var positions = [];
+ mouseHandlerDraw.setInputAction(function (movement) {
+ if (movement.position != null) {
+ var cartesian = viewer.scene.pickPosition(movement.position);
+ if (cartesian) {
+ if (positions.length == 0) {
+ positions.push(cartesian.clone());
+ } else if (positions.length == 1) {
+ positions.push(cartesian.clone());
+ if (typeof callback == 'function') {
+ callback(positions);
+ }
+
+ if (mouseHandlerDraw) {
+ mouseHandlerDraw.destroy();
+ mouseHandlerDraw = null;
+ }
+ TooltipDiv.setVisible(false);
+ //移除
+ if (drawingPolylineN != undefined)
+ viewer.entities.remove(drawingPolylineN);
+ if (drawingPolylineT != undefined)
+ viewer.entities.remove(drawingPolylineT);
+ }
+ }
+ }
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
+
+ mouseHandlerDraw.setInputAction(function (movement) {
+ var cartesian = viewer.scene.pickPosition(movement.endPosition);
+ if (cartesian) {
+ if (positions.length == 0) {
+ TooltipDiv.showAt(movement.endPosition, '点击添加起点');
+ } else if (positions.length == 1) {
+ //更新entity
+ var positionArr = [];
+ positionArr.push(positions[0]);
+ positionArr.push(cartesian);
+ //实时
+ if (drawingPolylineT != undefined)
+ viewer.entities.remove(drawingPolylineT);
+ var lineOptsT = {
+ polyline: {
+ positions: positionArr,
+ clampToGround: true, //
+ width: 3,
+ material: Cesium.Color.BLUE.withAlpha(0.5),
+ }
+ };
+ drawingPolylineT = viewer.entities.add(lineOptsT);
+ //正北
+ var positionN = [];
+ positionN.push(positions[0]);
+ positionN.push(GetNorthCartesain(positions[0], cartesian));
+ if (drawingPolylineN != undefined)
+ viewer.entities.remove(drawingPolylineN);
+ var lineOptsN = {
+ polyline: {
+ positions: positionN,
+ clampToGround: true, //
+ width: 3,
+ material: Cesium.Color.RED.withAlpha(0.5),
+ }
+ };
+ drawingPolylineN = viewer.entities.add(lineOptsN);
+ TooltipDiv.showAt(movement.endPosition, "点击结束");
+ }
+ }
+ }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
+
+ }
+ return _;
+})();
\ No newline at end of file
diff --git a/widgets/FloodAnalysis/Tooltip-div.js b/widgets/FloodAnalysis/Tooltip-div.js
new file mode 100644
index 0000000..519ab40
--- /dev/null
+++ b/widgets/FloodAnalysis/Tooltip-div.js
@@ -0,0 +1,49 @@
+var TooltipDiv = (function () {
+ var isInit = false;
+
+
+ function _() { };
+
+ _.initTool = function (frameDiv) {
+ if (isInit) { return; }
+
+ var div = document.createElement('DIV');
+ div.className = "tooltipdiv right";//
+
+ var arrow = document.createElement('DIV');
+ arrow.className = "tooltipdiv-arrow";
+ div.appendChild(arrow);
+
+ var title = document.createElement('DIV');
+ title.className = "tooltipdiv-inner";
+ div.appendChild(title);
+
+ this._div = div;
+ this._title = title;
+
+ frameDiv.appendChild(div);
+
+ isInit = true;
+ }
+
+ _.setVisible = function (visible) {
+ if (!isInit) { return; }
+ this._div.style.display = visible ? 'block' : 'none';
+ };
+
+ /*
+ position屏幕坐标
+ 显示在屏幕上
+ */
+ _.showAt = function (position, message) {
+ if (!isInit) { return; }
+ if (position && message) {
+ this.setVisible(true);
+ this._title.innerHTML = message;
+ this._div.style.left = position.x + 10 + "px";
+ this._div.style.top = (position.y - this._div.clientHeight / 2) + "px";
+ }
+ };
+
+ return _;
+})();
\ No newline at end of file
diff --git a/widgets/FloodAnalysis/Widget copy.html b/widgets/FloodAnalysis/Widget copy.html
new file mode 100644
index 0000000..d164228
--- /dev/null
+++ b/widgets/FloodAnalysis/Widget copy.html
@@ -0,0 +1,43 @@
+<div>
+
+ <div class="dynamicriver-main">
+ <div class="dynamicriver-header">
+ <i></i> 水面线分析
+ <div class="close-dynamicriver">×</div>
+ </div>
+ <!--<div>
+ <span>请选择水面线:</span><select id="flightRoute"></select>
+ </div>-->
+ <div class="water-analysis">
+ <ul class="water-analysis-content">
+
+ </ul>
+ </div>
+ </div>
+
+ <div class="dynamicriver-result">
+ <div>
+ 数据信息
+ <div class="close-dynamicriver-result">×</div>
+ </div>
+ <ul>
+ <li>
+ <span class="dynamicriver-result-name">录入人</span>
+ <span class="dynamicriver-result-sname"></span>
+ </li>
+ <li>
+ <span class="dynamicriver-result-name">采集时间</span>
+ <span class="dynamicriver-result-ctime"></span>
+ </li>
+ <li>
+ <span class="dynamicriver-result-name">录入时间</span>
+ <span class="dynamicriver-result-ltime"></span>
+ </li>
+ </ul>
+ </div>
+ <div id="aooaa">
+
+ </div>
+
+
+</div>
\ No newline at end of file
diff --git a/widgets/FloodAnalysis/Widget copy.js b/widgets/FloodAnalysis/Widget copy.js
new file mode 100644
index 0000000..f33de68
--- /dev/null
+++ b/widgets/FloodAnalysis/Widget copy.js
@@ -0,0 +1,366 @@
+///////////////////////////////////////////////////////////////////////////
+// Copyright © 2020 zhongsong. All Rights Reserved.
+// 模块描述:河流水面线分析
+///////////////////////////////////////////////////////////////////////////
+define([
+ 'dojo/_base/declare',
+ 'dojo/_base/lang',
+ 'dojo/_base/array',
+ 'dojo/_base/html',
+ 'dojo/topic',
+ 'jimu/BaseWidget',
+ './Tooltip-div',
+ './DynamicDraw'
+],
+ function (declare,
+ lang,
+ array,
+ html,
+ topic,
+ BaseWidget
+ ) {
+ return declare([BaseWidget], {
+ baseClass: 'jimu-widget-DynamicRiver',
+ name: 'DynamicRiver',
+ riverWidth: 200,
+ riverHeight: 10,
+ speed: 10,
+ positions: [],
+ sideRes: null,
+ riverPrimitive: null,
+ material: null,
+ drawingPolyline: null,
+ // 增加waterData 用来存放列表数据
+ waterData: null,
+ startup: function () {
+ this.inherited(arguments);
+ var self = this;
+
+ this.map.scene.globe.depthTestAgainstTerrain = true;
+ //取消双击事件
+ this.map.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
+
+
+ // 点击地图上绘制水面线,并且显示水面线详细数据
+ $('.water-analysis-content').on('click', '.content-right', function (e) {
+
+ var dataIndex = $(e.target).parent().index();
+ var cartesians = [];
+
+ self.map.camera.flyTo({
+ destination: Cesium.Cartesian3.fromDegrees(Number(self.waterData[dataIndex].zb[0].jd), Number(self.waterData[dataIndex].zb[0].wd), 5000),
+ easingFunction: Cesium.EasingFunction.QUADRACTIC_IN_OUT
+ });
+
+ $('.dynamicriver-result-sname').text(self.waterData[dataIndex].sname);
+ $('.dynamicriver-result-ctime').text(self.waterData[dataIndex].ctime.substring(0, 10));
+ $('.dynamicriver-result-ltime').text(self.waterData[dataIndex].ltime.substring(0, 10));
+
+ if (e.target.nodeName == 'SPAN') {
+ $('.dynamicriver-result').stop().show();
+ $('.dynamicriver-main').stop().hide();
+ }
+
+
+ // $('.jimu-widget-DynamicRiver .dynamicriver-result').fadeIn();
+ self.waterData[dataIndex].zb.forEach(function (item, index) {
+ cartesians.push(Cesium.Cartesian3.fromDegrees(item.jd, item.wd, item.elevation))
+ })
+ // self.drawLines(cartesians);
+ // DrawDynamicClampGround.startDrawingPolyline(self.map, function (cartesians) {
+ if (self.drawingPolyline != undefined)
+ self.map.entities.remove(self.drawingPolyline);
+ var lineOpts = {
+ polyline: {
+ positions: cartesians,
+ clampToGround: true,
+ width: 3,
+ color: "#279a9a"
+ }
+ };
+ self.drawingPolyline = self.map.entities.add(lineOpts);
+ cartesians.splice(cartesians.length - 1, cartesians.length);
+ self.drawLines(cartesians);
+ // });
+
+ })
+
+
+ $('.close-dynamicriver').click(function () {
+ $('.jimu-widget-DynamicRiver').stop().hide();
+ })
+
+ // 关闭详细信息事件
+ $('.close-dynamicriver-result').click(function () {
+ $('.dynamicriver-result').stop().hide();
+ $('.dynamicriver-main').stop().show();
+
+ self.map.entities.remove(self.drawingPolyline);
+ self.map.scene.primitives.remove(self.riverPrimitive);
+
+ self.map.camera.flyTo({
+ destination: Cesium.Cartesian3.fromDegrees(115.257787, 25.885506, 549263.35),
+ easingFunction: Cesium.EasingFunction.QUADRACTIC_IN_OUT
+ });
+ })
+
+
+
+
+ /*for(var e = [
+ [115.907543, 30.441563, 541.47],
+ [115.904337, 30.439412, 491.79],
+ [115.900612, 30.438483, 449.11],
+ [115.896375, 30.439377, 388.29],
+ [115.890586, 30.442215, 345.94],
+ [115.876946, 30.444641, 292.73]
+ ], r = [], i = 0; i < e.length; i++) r.push(Cesium.Cartesian3.fromDegrees(e[i][0], e[i][1], e[i][2]));
+
+ this.positions = r;
+
+ this.init();*/
+
+ },
+ init: function () {
+ this.prepareVertex();
+ if (this.sideRes) {
+ this.material = this.prepareMaterial();
+ this.riverPrimitive && this.map.scene.primitives.remove(this.riverPrimitive);
+ this.riverPrimitive = this.createPrimitive();
+ this.map.scene.primitives.add(this.riverPrimitive);
+ }
+ },
+ prepareVertex: function () {
+ if (this.positions.length > 0) {
+ this.sideRes = this._lines2Plane(this.positions, this.riverWidth, this.riverHeight);
+ }
+ },
+ setPositions: function (e) {
+ this.positions = e;
+ this.init();
+ },
+ resetPos: function () {
+ this.sideRes = this._lines2Plane(this.positions, this.riverWidth, this.riverHeight);
+ if (this.sideRes) {
+ this.material = this.prepareMaterial();
+ this.riverPrimitive && this.map.scene.primitives.remove(this.riverPrimitive);
+ this.riverPrimitive = this.createPrimitive();
+ this.map.scene.primitives.add(this.riverPrimitive);
+ }
+ },
+ drawLines: function (r) {
+ this.setPositions(r);
+ },
+ prepareMaterial: function () {
+ var e = new Cesium.Material({
+ fabric: {
+ uniforms: {
+ image: "widgets/DynamicRiver/images/movingRiver.png",
+ alpha: 0.5,
+ moveVar: new Cesium.Cartesian3(50, 1, 100),
+ reflux: -1,
+ speed: this.speed,
+ move: true,
+ flipY: false
+ },
+ source: "czm_material czm_getMaterial(czm_materialInput materialInput) { \n czm_material material = czm_getDefaultMaterial(materialInput); \n vec2 st = materialInput.st;\n if(move){\n float r = sqrt((st.x-0.8)*(st.x-0.8) + (st.y-0.8)*(st.y-0.8));\n float r2 = sqrt((st.x-0.2)*(st.x-0.2) + (st.y-0.2)*(st.y-0.2));\n float z = cos(moveVar.x*r + czm_frameNumber/100.0*moveVar.y)/moveVar.z;\n float z2 = cos(moveVar.x*r2 + czm_frameNumber/100.0*moveVar.y)/moveVar.z;\n st += sqrt(z*z+z2*z2);\n st.s += reflux * czm_frameNumber/1000.0 * speed;\n st.s = mod(st.s,1.0);\n }\n if(flipY){\n st = vec2(st.t,st.s);\n }\n vec4 colorImage = texture2D(image, st);\n material.alpha = alpha;\n material.diffuse = colorImage.rgb; \n return material; \n }"
+ }
+ });
+ return e
+ },
+ createPrimitive: function () {
+ var t = new Float64Array(this.sideRes.vertexs),
+ i = new Cesium.GeometryAttributes;
+ i.position = new Cesium.GeometryAttribute({
+ componentDatatype: Cesium.ComponentDatatype.DOUBLE,
+ componentsPerAttribute: 3,
+ values: t
+ }),
+ i.st = new Cesium.GeometryAttribute({
+ componentDatatype: Cesium.ComponentDatatype.FLOAT,
+ componentsPerAttribute: 2,
+ values: this.sideRes.uvs
+ });
+ var r = new Cesium.Geometry({
+ attributes: i,
+ indices: this.sideRes.indexs,
+ primitiveType: Cesium.PrimitiveType.TRIANGLES,
+ boundingSphere: Cesium.BoundingSphere.fromVertices(t)
+ }),
+ n = new Cesium.GeometryInstance({
+ geometry: r
+ }),
+ o = new Cesium.RenderState;
+ return o.depthTest.enabled = !0, new Cesium.Primitive({
+ geometryInstances: n,
+ appearance: new Cesium.Appearance({
+ material: this.material,
+ renderState: o,
+ vertexShaderSource: "attribute vec3 position3DHigh;\n attribute vec3 position3DLow;\n attribute vec2 st;\n attribute float batchId;\n \n varying vec3 v_positionMC;\n varying vec3 v_positionEC;\n varying vec2 v_st;\n \n void main()\n {\n vec4 p = czm_computePosition();\n \n v_positionMC = position3DHigh + position3DLow; // position in model coordinates\n v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates\n v_st = st;\n \n gl_Position = czm_modelViewProjectionRelativeToEye * p;\n }\n ",
+ fragmentShaderSource: "varying vec3 v_positionMC;\n varying vec3 v_positionEC;\n varying vec2 v_st;\n \n void main()\n {\n czm_materialInput materialInput;\n \n vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)));\n #ifdef FACE_FORWARD\n normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n #endif\n \n materialInput.s = v_st.s;\n materialInput.st = v_st;\n materialInput.str = vec3(v_st, 0.0);\n \n // Convert tangent space material normal to eye space\n materialInput.normalEC = normalEC;\n materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC);\n \n // Convert view vector to world space\n vec3 positionToEyeEC = -v_positionEC;\n materialInput.positionToEyeEC = positionToEyeEC;\n \n czm_material material = czm_getMaterial(materialInput);\n \n #ifdef FLAT\n gl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n #else\n gl_FragColor = czm_phong(normalize(positionToEyeEC), material,czm_lightDirectionEC);\n #endif\n }\n "
+ })
+ })
+ },
+ offsetHeight: function (height, time) {
+ this.startDH(height, time)
+ },
+ startDH: function (height, time) {
+ if (height && time && this.riverPrimitive) {
+ for (var i = this, r = 0, n = height / (20 * time), o = this.sideRes.self, s = new Cesium.Cartesian3, l = 0, u = o.length; l < u; l++) {
+ var c = Cesium.Cartesian3.normalize(o[l], new Cesium.Cartesian3);
+ Cesium.Cartesian3.add(s, c, s)
+ }
+ Cesium.Cartesian3.normalize(s, s);
+ var h = Cesium.clone(this.riverPrimitive.modelMatrix);
+ this.dhEvent = function () {
+ if (Math.abs(r) <= Math.abs(height)) {
+ var t = Cesium.Cartesian3.multiplyByScalar(s, r, new Cesium.Cartesian3);
+ i.riverPrimitive.modelMatrix = Cesium.Matrix4.multiplyByTranslation(h, t, new Cesium.Matrix4)
+ } else i.map.clock.onTick.removeEventListener(i.dhEvent);
+ r += n
+ }, this.map.clock.onTick.addEventListener(this.dhEvent)
+ }
+ },
+ //水面线转成水面
+ _lines2Plane: function (positions, width, height) {
+ function n(point, height) {
+ if (!(point instanceof Cesium.Cartesian3)) return void console.log("请确认点是Cartesian3类型!");
+ if (!height || 0 == height) return void console.log("请确认高度是非零数值!");
+ var i = Cesium.Cartesian3.normalize(point, new Cesium.Cartesian3),
+ r = new Cesium.Ray(point, i);//射线
+ return Cesium.Ray.getPoint(r, height)
+ }
+
+ function o(point, point1, height) {
+ var r = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(point1, point, new Cesium.Cartesian3), new Cesium.Cartesian3),
+ n = Cesium.Cartesian3.normalize(point, new Cesium.Cartesian3),
+ o = Cesium.Cartesian3.cross(n, r, new Cesium.Cartesian3),
+ a = Cesium.Cartesian3.cross(r, n, new Cesium.Cartesian3),
+ l = new Cesium.Ray(point, o),
+ u = new Cesium.Ray(point, a);
+ return {
+ left: Cesium.Ray.getPoint(l, height),
+ right: Cesium.Ray.getPoint(u, height)
+ }
+ }
+
+ if (!positions || positions.length <= 1 || !width || 0 == width) return void console.log("请确认参数符合规则:数组长度大于1,宽高不能为0!");
+ for (var r = positions.length, a = [], l = [], u = width / 2, c = 0; c < r; c++) {
+ var h = void 0,
+ d = void 0,
+ f = void 0,
+ p = void 0,
+ m = void 0;
+ if (0 == c ? (h = positions[c], d = positions[c], f = positions[c + 1]) : c == r - 1 ? (h = positions[c - 1], d = positions[c], f = positions[c - 1]) : (h = positions[c - 1], d = positions[c], f = positions[c + 1]), 0 != height && (h = n(h, height), d = n(d, height), f = n(f, height)), h && d && f) {
+ var g = o(d, f, u);
+ if (p = g.left, m = g.right, 0 == c) {
+ a.push(p), l.push(m), a.push(p), l.push(m);
+ continue
+ }
+ if (!(c < r - 1)) {
+ a.push(m), l.push(p), a.push(m), l.push(p);
+ continue
+ }
+ a.push(p), l.push(m), g = o(d, h, u), p = g.left, m = g.right, a.push(m), l.push(p)
+ }
+ }
+
+ var v = [],
+ y = [];
+ if (a.length != 2 * r) return void console.log("计算左右侧点出问题!");
+ for (var _ = 0; _ < r; _++) {
+ var w = positions[_],
+ b = a[2 * _ + 0],
+ C = a[2 * _ + 1],
+ x = Cesium.Cartesian3.subtract(b, w, new Cesium.Cartesian3),
+ P = Cesium.Cartesian3.subtract(C, w, new Cesium.Cartesian3),
+ M = Cesium.Cartesian3.add(x, P, new Cesium.Cartesian3),
+ E = Cesium.Cartesian3.add(w, M, new Cesium.Cartesian3);
+ v.push(Cesium.clone(E));
+ var T = l[2 * _ + 0],
+ S = l[2 * _ + 1];
+ x = Cesium.Cartesian3.subtract(T, w, new Cesium.Cartesian3), P = Cesium.Cartesian3.subtract(S, w, new Cesium.Cartesian3), M = Cesium.Cartesian3.add(x, P, new Cesium.Cartesian3), E = Cesium.Cartesian3.add(w, M, new Cesium.Cartesian3), y.push(Cesium.clone(E))
+ }
+
+ for (var O = [], D = [], k = [], A = [], R = [], F = 0; F < r; F++) {
+ var L = Cesium.EncodedCartesian3.fromCartesian(y[F]);
+ D.push(y[F].x), D.push(y[F].y), D.push(y[F].z), k.push(L.high.x), k.push(L.high.y), k.push(L.high.z), A.push(L.low.x), A.push(L.low.y), A.push(L.low.z), O.push(1, 1), F < r - 1 && (R.push(F + 2 * r), R.push(F + 1), R.push(F + 1 + r), R.push(F + 2 * r), R.push(F + 1 + r), R.push(r + F + 2 * r))
+ }
+
+ for (var I = 0; I < r; I++) {
+ var N = Cesium.EncodedCartesian3.fromCartesian(v[I]);
+ D.push(v[I].x), D.push(v[I].y), D.push(v[I].z), k.push(N.high.x), k.push(N.high.y), k.push(N.high.z), A.push(N.low.x), A.push(N.low.y), A.push(N.low.z), O.push(1, 0)
+ }
+
+ for (var V = 0; V < r; V++) {
+ var z = Cesium.EncodedCartesian3.fromCartesian(y[V]);
+ D.push(y[V].x), D.push(y[V].y), D.push(y[V].z), k.push(z.high.x), k.push(z.high.y), k.push(z.high.z), A.push(z.low.x), A.push(z.low.y), A.push(z.low.z), O.push(0, 1)
+ }
+
+ for (var H = 0; H < r; H++) {
+ var B = Cesium.EncodedCartesian3.fromCartesian(v[H]);
+ D.push(v[H].x), D.push(v[H].y), D.push(v[H].z), k.push(B.high.x), k.push(B.high.y), k.push(B.high.z), A.push(B.low.x), A.push(B.low.y), A.push(B.low.z), O.push(0, 0)
+ }
+
+ return {
+ left: v,
+ right: y,
+ self: positions,
+ vertexs: new Float32Array(D),
+ vertexsH: new Float32Array(k),
+ vertexsL: new Float32Array(A),
+ indexs: new Uint16Array(R),
+ uvs: new Float32Array(O)
+ }
+ },
+ onOpen: function () {
+ //面板打开的时候触发 (when open this panel trigger)
+
+ // 发送请求获得到水面线列表基本数据
+ var self = this;
+ $.ajax({
+ url: 'http://localhost:82/blade-ycreal/waterline/querylist',
+ dataType: 'json',
+ type: 'get',
+ success: function (data) {
+ self.waterData = data.data;
+ var lidom = null;
+ var contentLeft = null;
+ var contentRight = null;
+ for (var i = 0; i < data.data.length; i++) {
+ lidom = $('<li> </li>');
+ contentLeft = $("<span class='content-left'></span>").text(data.data[i].sname);
+ contentRight = $("<span class='content-right'></span>");
+ lidom.prepend(contentLeft);
+ lidom.append(contentRight);
+ $('.water-analysis-content').append(lidom);
+ }
+ }
+ })
+ },
+
+ onClose: function () {
+ //面板关闭的时候触发 (when this panel is closed trigger)
+ },
+
+ onMinimize: function () {
+ this.resize();
+ },
+
+ onMaximize: function () {
+ this.resize();
+ },
+
+ resize: function () {
+
+ },
+
+ destroy: function () {
+ //销毁的时候触发
+ //todo
+ //do something before this func
+ this.inherited(arguments);
+ }
+
+ });
+ });
diff --git a/widgets/FloodAnalysis/Widget.html b/widgets/FloodAnalysis/Widget.html
new file mode 100644
index 0000000..904287a
--- /dev/null
+++ b/widgets/FloodAnalysis/Widget.html
@@ -0,0 +1,23 @@
+<div>
+ <div class="flood-analysis-header">
+ <i></i> 洪水淹没分析
+ </div>
+ <!--<div>
+ <span>请选择水面线:</span><select id="flightRoute"></select>
+ </div>-->
+ <div class="flood-water-analysis">
+ <ul>
+ <li><span>水位(m):</span><input id="flood_analysis_sw_headtab" type="text" value="200" /></li>
+ </ul>
+ <div class="flood-water-analysis-new">
+ <div>
+ <input type="button" id="flood_hzsm_headtab" value="绘制水面线" />
+ <input type="button" id='flood_qcsmx_headtab' value="清除">
+ </div>
+<!-- <div>-->
+<!-- <input type="button" id="thematic_smsz_headtab" value="水面上涨" />-->
+<!-- <input type="button" id="thematic_smxj_headtab" value="水面下降" />-->
+<!-- </div>-->
+ </div>
+ </div>
+</div>
diff --git a/widgets/FloodAnalysis/Widget.js b/widgets/FloodAnalysis/Widget.js
new file mode 100644
index 0000000..88f06db
--- /dev/null
+++ b/widgets/FloodAnalysis/Widget.js
@@ -0,0 +1,475 @@
+///////////////////////////////////////////////////////////////////////////
+// Copyright © 2022 guoshilong. All Rights Reserved.
+// 模块描述:洪水淹没分析
+///////////////////////////////////////////////////////////////////////////
+define([
+ 'dojo/_base/declare',
+ 'dojo/_base/lang',
+ 'dojo/_base/array',
+ 'dojo/_base/html',
+ 'dojo/topic',
+ 'jimu/BaseWidget',
+ './Tooltip-div',
+ './FloodAnalysis',
+ 'libs/layer/layer.js'
+],
+ function (declare,
+ lang,
+ array,
+ html,
+ topic,
+ BaseWidget,
+ tooltip,
+ flood,
+ layer
+ ) {
+ return declare([BaseWidget], {
+ baseClass: 'jimu-widget-FloodAnalysis',
+ name: 'FloodAnalysis',
+ riverWidth: 300,
+ riverHeight: 10,
+ speed: 10,
+ positions: [],
+ sideRes: null,
+ riverPrimitive: null,
+ material: null,
+ drawingPolyline: null,
+ polygonCartesianArray:[],
+ startup: function () {
+ this.inherited(arguments);
+ var self = this;
+
+ this.map.scene.globe.depthTestAgainstTerrain = true;
+ //取消双击事件
+ this.map.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
+
+
+ $("#flood_hzsm_headtab").click(function () {
+ DrawDynamicClampGround.startDrawingPolyline(self.map, function (cartesians) {
+ if (self.drawingPolyline != undefined)
+ self.map.entities.remove(self.drawingPolyline);
+ var lineOpts = {
+ polyline: {
+ positions: cartesians,
+ clampToGround: true,
+ width: 3,
+ color: "#279a9a"
+ }
+ };
+ self.drawingPolyline = self.map.entities.add(lineOpts);
+ cartesians.splice(cartesians.length - 1, cartesians.length);
+ self.drawLines(cartesians);
+ self.movehandLer()
+ self.canvasToImage()
+ });
+ });
+
+ $('#flood_qcsmx_headtab').click(function () {
+ self.map.entities.remove(self.drawingPolyline);
+ self.map.scene.primitives.remove(self.riverPrimitive);
+ })
+
+
+ // $("#thematic_hlkd_headtab").change(function (e) {
+ // self.riverWidth = Number($(this).val());
+ // self.resetPos();
+ // });
+ $("#flood_analysis_sw_headtab").change(function (e) {
+ self.riverHeight = Number($(this).val());
+ self.resetPos();
+ });
+ // $("#thematic_sls_headtab").change(function (e) {
+ // self.speed = Number($(this).val());
+ // self.resetPos();
+ // });
+ //
+ // $("#thematic_smsz_headtab").click(function () {
+ // self.offsetHeight(Number($("#thematic_bhz_headtab").val()), 5);
+ // });
+ //
+ // $("#thematic_smxj_headtab").click(function () {
+ // self.offsetHeight(-Number($("#thematic_bhz_headtab").val()), 5);
+ // });
+
+
+ },
+ init: function () {
+ this.prepareVertex();
+ if (this.sideRes) {
+ this.material = this.prepareMaterial();
+ this.riverPrimitive && this.map.scene.primitives.remove(this.riverPrimitive);
+ this.riverPrimitive = this.createPrimitive();
+ this.map.scene.primitives.add(this.riverPrimitive);
+ }
+ },
+ prepareVertex: function () {
+ if (this.positions.length > 0) {
+ this.sideRes = this._lines2Plane(this.positions, this.riverWidth, this.riverHeight);
+ console.log(this.sideRes,"----000----")
+
+ }
+ },
+ setPositions: function (e) {
+ this.positions = e;
+ this.init();
+ },
+ resetPos: function () {
+ this.sideRes = this._lines2Plane(this.positions, this.riverWidth, this.riverHeight);
+ if (this.sideRes) {
+ this.material = this.prepareMaterial();
+ this.riverPrimitive && this.map.scene.primitives.remove(this.riverPrimitive);
+ this.riverPrimitive = this.createPrimitive();
+ this.map.scene.primitives.add(this.riverPrimitive);
+ }
+ },
+ drawLines: function (r) {
+ this.setPositions(r);
+ },
+ prepareMaterial: function () {
+ var e = new Cesium.Material({
+ fabric: {
+ uniforms: {
+ image: "widgets/ThematicDynamicRiver/images/movingRiver.png",
+ alpha: 0.5,
+ moveVar: new Cesium.Cartesian3(50, 1, 100),
+ reflux: -1,
+ speed: this.speed,
+ move: true,
+ flipY: false
+ },
+ source: "czm_material czm_getMaterial(czm_materialInput materialInput) { \n czm_material material = czm_getDefaultMaterial(materialInput); \n vec2 st = materialInput.st;\n if(move){\n float r = sqrt((st.x-0.8)*(st.x-0.8) + (st.y-0.8)*(st.y-0.8));\n float r2 = sqrt((st.x-0.2)*(st.x-0.2) + (st.y-0.2)*(st.y-0.2));\n float z = cos(moveVar.x*r + czm_frameNumber/100.0*moveVar.y)/moveVar.z;\n float z2 = cos(moveVar.x*r2 + czm_frameNumber/100.0*moveVar.y)/moveVar.z;\n st += sqrt(z*z+z2*z2);\n st.s += reflux * czm_frameNumber/1000.0 * speed;\n st.s = mod(st.s,1.0);\n }\n if(flipY){\n st = vec2(st.t,st.s);\n }\n vec4 colorImage = texture2D(image, st);\n material.alpha = alpha;\n material.diffuse = colorImage.rgb; \n return material; \n }"
+ }
+ });
+ return e
+ },
+ createPrimitive: function () {
+ var t = new Float64Array(this.sideRes.vertexs),
+ i = new Cesium.GeometryAttributes;
+ i.position = new Cesium.GeometryAttribute({
+ componentDatatype: Cesium.ComponentDatatype.DOUBLE,
+ componentsPerAttribute: 3,
+ values: t
+ }),
+ i.st = new Cesium.GeometryAttribute({
+ componentDatatype: Cesium.ComponentDatatype.FLOAT,
+ componentsPerAttribute: 2,
+ values: this.sideRes.uvs
+ });
+ var r = new Cesium.Geometry({
+ attributes: i,
+ indices: this.sideRes.indexs,
+ primitiveType: Cesium.PrimitiveType.TRIANGLES,
+ boundingSphere: Cesium.BoundingSphere.fromVertices(t)
+ }),
+ n = new Cesium.GeometryInstance({
+ geometry: r
+ }),
+ o = new Cesium.RenderState;
+ return o.depthTest.enabled = !0, new Cesium.Primitive({
+ geometryInstances: n,
+ appearance: new Cesium.Appearance({
+ material: this.material,
+ renderState: o,
+ vertexShaderSource: "attribute vec3 position3DHigh;\n attribute vec3 position3DLow;\n attribute vec2 st;\n attribute float batchId;\n \n varying vec3 v_positionMC;\n varying vec3 v_positionEC;\n varying vec2 v_st;\n \n void main()\n {\n vec4 p = czm_computePosition();\n \n v_positionMC = position3DHigh + position3DLow; // position in model coordinates\n v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates\n v_st = st;\n \n gl_Position = czm_modelViewProjectionRelativeToEye * p;\n }\n ",
+ fragmentShaderSource: "varying vec3 v_positionMC;\n varying vec3 v_positionEC;\n varying vec2 v_st;\n \n void main()\n {\n czm_materialInput materialInput;\n \n vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)));\n #ifdef FACE_FORWARD\n normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n #endif\n \n materialInput.s = v_st.s;\n materialInput.st = v_st;\n materialInput.str = vec3(v_st, 0.0);\n \n // Convert tangent space material normal to eye space\n materialInput.normalEC = normalEC;\n materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC);\n \n // Convert view vector to world space\n vec3 positionToEyeEC = -v_positionEC;\n materialInput.positionToEyeEC = positionToEyeEC;\n \n czm_material material = czm_getMaterial(materialInput);\n \n #ifdef FLAT\n gl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n #else\n gl_FragColor = czm_phong(normalize(positionToEyeEC), material,czm_lightDirectionEC);\n #endif\n }\n "
+ })
+ })
+ },
+ offsetHeight: function (height, time) {
+ this.startDH(height, time)
+ },
+ startDH: function (height, time) {
+ if (height && time && this.riverPrimitive) {
+ for (var i = this, r = 0, n = height / (20 * time), o = this.sideRes.self, s = new Cesium.Cartesian3, l = 0, u = o.length; l < u; l++) {
+ var c = Cesium.Cartesian3.normalize(o[l], new Cesium.Cartesian3);
+ Cesium.Cartesian3.add(s, c, s)
+ }
+ Cesium.Cartesian3.normalize(s, s);
+ var h = Cesium.clone(this.riverPrimitive.modelMatrix);
+ this.dhEvent = function () {
+ if (Math.abs(r) <= Math.abs(height)) {
+ var t = Cesium.Cartesian3.multiplyByScalar(s, r, new Cesium.Cartesian3);
+ i.riverPrimitive.modelMatrix = Cesium.Matrix4.multiplyByTranslation(h, t, new Cesium.Matrix4)
+ } else i.map.clock.onTick.removeEventListener(i.dhEvent);
+ r += n
+ }, this.map.clock.onTick.addEventListener(this.dhEvent)
+ }
+ },
+ //水面线转成水面
+ _lines2Plane: function (positions, width, height) {
+ function n(point, height) {
+ if (!(point instanceof Cesium.Cartesian3)) return void console.log("请确认点是Cartesian3类型!");
+ if (!height || 0 == height) return void console.log("请确认高度是非零数值!");
+ var i = Cesium.Cartesian3.normalize(point, new Cesium.Cartesian3),
+ r = new Cesium.Ray(point, i);//射线
+ return Cesium.Ray.getPoint(r, height)
+ }
+
+ function o(point, point1, height) {
+ var r = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(point1, point, new Cesium.Cartesian3), new Cesium.Cartesian3),
+ n = Cesium.Cartesian3.normalize(point, new Cesium.Cartesian3),
+ o = Cesium.Cartesian3.cross(n, r, new Cesium.Cartesian3),
+ a = Cesium.Cartesian3.cross(r, n, new Cesium.Cartesian3),
+ l = new Cesium.Ray(point, o),
+ u = new Cesium.Ray(point, a);
+ return {
+ left: Cesium.Ray.getPoint(l, height),
+ right: Cesium.Ray.getPoint(u, height)
+ }
+ }
+
+ if (!positions || positions.length <= 1 || !width || 0 == width) return void console.log("请确认参数符合规则:数组长度大于1,宽高不能为0!");
+ for (var r = positions.length, a = [], l = [], u = width / 2, c = 0; c < r; c++) {
+ var h = void 0,
+ d = void 0,
+ f = void 0,
+ p = void 0,
+ m = void 0;
+ if (0 == c ? (h = positions[c], d = positions[c], f = positions[c + 1]) : c == r - 1 ? (h = positions[c - 1], d = positions[c], f = positions[c - 1]) : (h = positions[c - 1], d = positions[c], f = positions[c + 1]), 0 != height && (h = n(h, height), d = n(d, height), f = n(f, height)), h && d && f) {
+ var g = o(d, f, u);
+ if (p = g.left, m = g.right, 0 == c) {
+ a.push(p), l.push(m), a.push(p), l.push(m);
+ continue
+ }
+ if (!(c < r - 1)) {
+ a.push(m), l.push(p), a.push(m), l.push(p);
+ continue
+ }
+ a.push(p), l.push(m), g = o(d, h, u), p = g.left, m = g.right, a.push(m), l.push(p)
+ }
+ }
+
+ var v = [],
+ y = [];
+ if (a.length != 2 * r) return void console.log("计算左右侧点出问题!");
+ for (var _ = 0; _ < r; _++) {
+ var w = positions[_],
+ b = a[2 * _ + 0],
+ C = a[2 * _ + 1],
+ x = Cesium.Cartesian3.subtract(b, w, new Cesium.Cartesian3),
+ P = Cesium.Cartesian3.subtract(C, w, new Cesium.Cartesian3),
+ M = Cesium.Cartesian3.add(x, P, new Cesium.Cartesian3),
+ E = Cesium.Cartesian3.add(w, M, new Cesium.Cartesian3);
+ v.push(Cesium.clone(E));
+ var T = l[2 * _ + 0],
+ S = l[2 * _ + 1];
+ x = Cesium.Cartesian3.subtract(T, w, new Cesium.Cartesian3), P = Cesium.Cartesian3.subtract(S, w, new Cesium.Cartesian3), M = Cesium.Cartesian3.add(x, P, new Cesium.Cartesian3), E = Cesium.Cartesian3.add(w, M, new Cesium.Cartesian3), y.push(Cesium.clone(E))
+ }
+
+ for (var O = [], D = [], k = [], A = [], R = [], F = 0; F < r; F++) {
+ var L = Cesium.EncodedCartesian3.fromCartesian(y[F]);
+ D.push(y[F].x), D.push(y[F].y), D.push(y[F].z), k.push(L.high.x), k.push(L.high.y), k.push(L.high.z), A.push(L.low.x), A.push(L.low.y), A.push(L.low.z), O.push(1, 1), F < r - 1 && (R.push(F + 2 * r), R.push(F + 1), R.push(F + 1 + r), R.push(F + 2 * r), R.push(F + 1 + r), R.push(r + F + 2 * r))
+ }
+
+ for (var I = 0; I < r; I++) {
+ var N = Cesium.EncodedCartesian3.fromCartesian(v[I]);
+ D.push(v[I].x), D.push(v[I].y), D.push(v[I].z), k.push(N.high.x), k.push(N.high.y), k.push(N.high.z), A.push(N.low.x), A.push(N.low.y), A.push(N.low.z), O.push(1, 0)
+ }
+
+ for (var V = 0; V < r; V++) {
+ var z = Cesium.EncodedCartesian3.fromCartesian(y[V]);
+ D.push(y[V].x), D.push(y[V].y), D.push(y[V].z), k.push(z.high.x), k.push(z.high.y), k.push(z.high.z), A.push(z.low.x), A.push(z.low.y), A.push(z.low.z), O.push(0, 1)
+ }
+
+ for (var H = 0; H < r; H++) {
+ var B = Cesium.EncodedCartesian3.fromCartesian(v[H]);
+ D.push(v[H].x), D.push(v[H].y), D.push(v[H].z), k.push(B.high.x), k.push(B.high.y), k.push(B.high.z), A.push(B.low.x), A.push(B.low.y), A.push(B.low.z), O.push(0, 0)
+ }
+
+ this.polygonCartesianArray = []
+ for (let i = 0; i < y.length; i++) {
+ this.polygonCartesianArray.push(y[i])
+ }
+ for (let i = 0; i < v.length; i++) {
+ this.polygonCartesianArray.push(v[i])
+ }
+ //计算polygon面积
+ this.getPolygonArea(this.getPositionArray(this.polygonCartesianArray),this.polygonCartesianArray)
+
+
+ return {
+ left: v,
+ right: y,
+ self: positions,
+ vertexs: new Float32Array(D),
+ vertexsH: new Float32Array(k),
+ vertexsL: new Float32Array(A),
+ indexs: new Uint16Array(R),
+ uvs: new Float32Array(O)
+ }
+ },
+ onOpen: function () {
+ //面板打开的时候触发 (when open this panel trigger)
+ this.map.scene.globe.baseColor = Cesium.Color.BLACK;
+ $($('div.cesium-viewer').find('.cesium-baseLayerPicker-choices')[0]).children('div:eq(3)').trigger('click');
+
+
+ },
+
+ onClose: function () {
+ //面板关闭的时候触发 (when this panel is closed trigger)
+ this.map.entities.remove(this.drawingPolyline);
+ this.map.scene.primitives.remove(this.riverPrimitive);
+
+ },
+
+ onMinimize: function () {
+ this.resize();
+ },
+
+ onMaximize: function () {
+ this.resize();
+ },
+
+ resize: function () {
+
+ },
+
+ destroy: function () {
+ //销毁的时候触发
+ //todo
+ //do something before this func
+ this.inherited(arguments);
+ },
+
+ //Cartesian3转换为经纬度
+ getPositionArray:function (cartesiansArray){
+ var positionArray = []
+
+ if (cartesiansArray.length>0){
+ for (let i = 0; i < cartesiansArray.length; i++) {
+ //获取的对象中的经纬度为弧度
+ let cartographic= Cesium.Cartographic.fromCartesian(cartesiansArray[i])
+ //弧度转换
+ let longitude = Cesium.Math.toDegrees(cartographic.longitude)
+ let latitude = Cesium.Math.toDegrees(cartographic.latitude)
+ let height = cartographic.height
+ positionArray.push({
+ lon:longitude,
+ lat:latitude,
+ hei:height,
+ })
+ }
+ }
+ return positionArray
+ },
+
+ //获取多边形面积
+ getPolygonArea:function (points,positions){
+ let radiansPerDegree = Math.PI / 180.0;//角度转化为弧度(rad)
+ let degreesPerRadian = 180.0 / Math.PI;//弧度转化为角度
+
+ //计算多边形面积
+ function getArea(points) {
+ let res = 0;
+ //拆分三角曲面
+
+ for (let i = 0; i < points.length - 2; i++) {
+ let j = (i + 1) % points.length;
+ let k = (i + 2) % points.length;
+ let totalAngle = Angle(points[i], points[j], points[k]);
+ let dis_temp1 = distance(positions[i], positions[j]);
+ let dis_temp2 = distance(positions[j], positions[k]);
+ res += dis_temp1 * dis_temp2 * Math.abs(Math.sin(totalAngle)) ;
+ console.log(res);
+ }
+
+
+ return (res/1000000.0).toFixed(4);
+ }
+
+ /*角度*/
+ function Angle(p1, p2, p3) {
+ let bearing21 = Bearing(p2, p1);
+ let bearing23 = Bearing(p2, p3);
+ let angle = bearing21 - bearing23;
+ if (angle < 0) {
+ angle += 360;
+ }
+ return angle;
+ }
+ /*方向*/
+ function Bearing(from, to) {
+ let lat1 = from.lat * radiansPerDegree;
+ let lon1 = from.lon * radiansPerDegree;
+ let lat2 = to.lat * radiansPerDegree;
+ let lon2 = to.lon * radiansPerDegree;
+ let angle = -Math.atan2(Math.sin(lon1 - lon2) * Math.cos(lat2), Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon1 - lon2));
+ if (angle < 0) {
+ angle += Math.PI * 2.0;
+ }
+ angle = angle * degreesPerRadian;//角度
+ return angle;
+ }
+
+ //计算距离
+ function distance(point1,point2){
+ let point1cartographic = Cesium.Cartographic.fromCartesian(point1);
+ let point2cartographic = Cesium.Cartographic.fromCartesian(point2);
+ /**根据经纬度计算出距离**/
+ let geodesic = new Cesium.EllipsoidGeodesic();
+ geodesic.setEndPoints(point1cartographic, point2cartographic);
+ let s = geodesic.surfaceDistance;
+ //console.log(Math.sqrt(Math.pow(distance, 2) + Math.pow(endheight, 2)));
+ //返回两点之间的距离
+ s = Math.sqrt(Math.pow(s, 2) + Math.pow(point2cartographic.height - point1cartographic.height, 2));
+ return s;
+ }
+
+ console.log(getArea(points)+"平方公里","777")
+
+ },
+
+ //鼠标事件
+ movehandLer: function movehandLer() {
+ // 取消默认双击事件
+ this.map.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
+ // 获取鼠标事件
+ this.mountainHandler = new Cesium.ScreenSpaceEventHandler(this.map.scene.canvas);
+ // 给鼠标左键添加事件函数
+ this.mountainHandler.setInputAction(lang.hitch(this, this.clickHand), Cesium.ScreenSpaceEventType.LEFT_CLICK);
+ },
+
+ //点击事件
+ clickHand:function (click){
+ var pickedObjects = this.map.scene.pick(click.position);
+ if (pickedObjects.primitive instanceof Cesium.Primitive) {
+ this.floodAnalysisPopup()
+ }
+ },
+
+ //洪水分析弹窗
+ floodAnalysisPopup:function (){
+ var url = './corelib/common/popup/floodAnalysis.html';
+ var top = ($(window).height() - 600) / 2;
+ var left = ($(window).width() - 900 - 340) / 2 + 340;
+ layer.open({
+ title:'模拟分析',
+ type: 2,
+ maxmin: false, //开启最大化最小化按钮
+ area: ['900px', '600px'],
+ skin: 'floodAnalysis',
+ offset: [top, left],
+ content: url,
+ id: "floodAnalysisLayer",
+ closeBtn: 1
+ });
+ },
+
+ //添加点
+ addPoint:function (){
+
+ },
+
+ //canvas转换为image
+ canvasToImage(){
+ var canvas = $('.cesium-widget canvas').get(0)
+ //cesium基于webgl,因此获取上下文需要用experimental-webgl而不是2d
+ var ctx = canvas.getContext('experimental-webgl');
+ ctx.beginPath()
+ ctx.rect(0,0,ctx.width,ctx.height)
+ }
+
+
+ });
+ });
diff --git a/widgets/FloodAnalysis/css/Tooltip-div.css b/widgets/FloodAnalysis/css/Tooltip-div.css
new file mode 100644
index 0000000..4310e34
--- /dev/null
+++ b/widgets/FloodAnalysis/css/Tooltip-div.css
@@ -0,0 +1,49 @@
+/*
+ 提示框
+*/
+.tooltipdiv {
+ display: block;
+ position: absolute;
+ visibility: visible;
+ max-width: 200px;
+ min-width: 100px;
+ padding: 1px 1px 1px 25px;
+ font-size: 11px;
+ z-index: 1000;
+ opacity: 0.8;
+ -khtml-opacity: 0.8;
+ -moz-opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+.tooltipdiv.left .tooltipdiv-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-left: 25px solid #000000;
+}
+.tooltipdiv.right .tooltipdiv-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-right: 25px solid #000000;
+}
+.tooltipdiv-inner {
+ padding: 3px 8px;
+ background-color: #000000;
+ color: white;
+ text-align: center;
+ max-width: 200px;
+ text-decoration: none;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.tooltipdiv-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+}
\ No newline at end of file
diff --git a/widgets/FloodAnalysis/css/style copy .css b/widgets/FloodAnalysis/css/style copy .css
new file mode 100644
index 0000000..0521ccc
--- /dev/null
+++ b/widgets/FloodAnalysis/css/style copy .css
@@ -0,0 +1,165 @@
+@import "Tooltip-div.css";
+
+.jimu-widget-DynamicRiver {
+ display: none;
+ width: 100%;
+ height: auto;
+ /* overflow-x: hidden; */
+ font-size: 14px;
+ color: rgb(238, 235, 235);
+ background-color: rgba(48, 48, 48, 0.7);
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-main {
+ border: 1px solid rgb(69, 154, 251);
+ border-radius: 5px;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-header {
+ position: relative;
+ width: 100%;
+ height: 40px;
+ line-height: 40px;
+ font-size: 20px;
+ border-bottom: 1px solid rgb(69, 154, 251);
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-header i {
+ display: inline-block;
+ margin-left: 6px;
+ vertical-align: middle;
+ width: 20px;
+ height: 20px;
+ background: url(../../../images/toolbox.png ) no-repeat 0 -20px;
+ background-size: 20px;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-header .close-dynamicriver {
+ position: absolute;
+ top: 50%;
+ right: 8px;
+ font-size: 38px;
+ font-weight: 400;
+ height: 28px;
+ line-height: 28px;
+ cursor: pointer;
+ transform: translateY(-50%);
+}
+
+.jimu-widget-DynamicRiver .water-analysis {
+ margin: 10px 8px;
+}
+
+.jimu-widget-DynamicRiver .water-analysis ul,
+.jimu-widget-DynamicRiver .water-analysis ul li {
+ margin: 0;
+ padding: 0;
+}
+
+.jimu-widget-DynamicRiver .water-analysis ul {
+ border-right: 1px solid #fff;
+ border-bottom: 1px solid #fff;
+}
+
+.jimu-widget-DynamicRiver .water-analysis ul li {
+ list-style: none;
+ height: 30px;
+ text-align: center;
+ line-height: 30px;
+ border-top: 1px solid #fff;
+ border-left: 1px solid #fff;
+}
+
+.jimu-widget-DynamicRiver .water-analysis ul li span.content-left {
+ float: left;
+ padding-left: 10px;
+ height: 100%;
+ width: 80%;
+ text-align: left;
+
+}
+
+.jimu-widget-DynamicRiver .water-analysis ul li span.content-right {
+ float: left;
+ height: 100%;
+ width: 20%;
+ background: url(../../../images/dynamicRiver-see.png) no-repeat;
+ background-position: 50%;
+ background-size: 50%;
+ border-left: 1px solid #fff;
+}
+
+
+.jimu-widget-DynamicRiver .dynamicriver-result div,
+.jimu-widget-DynamicRiver .dynamicriver-result ul,
+.jimu-widget-DynamicRiver .dynamicriver-result li {
+ margin: 0;
+ padding: 0;
+}
+
+
+.jimu-widget-DynamicRiver .dynamicriver-result {
+ display: none;
+ position: absolute;
+ top: 260px;
+ right: 10px;
+ width: 220px;
+ height: auto;
+ background-color: rgba(48, 48, 48, 0.7);
+ border: 1px solid rgb(69, 154, 251);
+ border-radius: 6px;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result > div {
+ position: relative;
+ padding: 0 10px;
+ height: 40px;
+ line-height: 40px;
+ font-size: 16px;
+ text-align: left;
+ border-bottom: 1px solid rgb(69, 154, 251);
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result div .close-dynamicriver-result {
+ position: absolute;
+ top: 50%;
+ right: 8px;
+ font-size: 30px;
+ font-weight: 400;
+ height: 28px;
+ line-height: 28px;
+ cursor: pointer;
+ transform: translateY(-50%);
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result ul {
+ margin: 10px;
+ border-top: 1px solid #fff;
+ border-left: 1px solid #fff;
+ border-right: 1px solid #fff;
+ border-radius: 6px;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result ul li {
+ list-style: none;
+ display: flex;
+ height: 30px;
+ line-height: 30px;
+ border-bottom: 1px solid #fff;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result ul li:last-child {
+ border-radius: 6px;
+}
+
+
+.jimu-widget-DynamicRiver .dynamicriver-result ul li span:first-child {
+ flex: 1;
+ border-right: 1px solid #fff;
+ text-align: center;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result ul li span:last-child {
+ flex: 2;
+ padding-left: 8px;
+}
\ No newline at end of file
diff --git a/widgets/FloodAnalysis/css/style copy.css b/widgets/FloodAnalysis/css/style copy.css
new file mode 100644
index 0000000..0521ccc
--- /dev/null
+++ b/widgets/FloodAnalysis/css/style copy.css
@@ -0,0 +1,165 @@
+@import "Tooltip-div.css";
+
+.jimu-widget-DynamicRiver {
+ display: none;
+ width: 100%;
+ height: auto;
+ /* overflow-x: hidden; */
+ font-size: 14px;
+ color: rgb(238, 235, 235);
+ background-color: rgba(48, 48, 48, 0.7);
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-main {
+ border: 1px solid rgb(69, 154, 251);
+ border-radius: 5px;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-header {
+ position: relative;
+ width: 100%;
+ height: 40px;
+ line-height: 40px;
+ font-size: 20px;
+ border-bottom: 1px solid rgb(69, 154, 251);
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-header i {
+ display: inline-block;
+ margin-left: 6px;
+ vertical-align: middle;
+ width: 20px;
+ height: 20px;
+ background: url(../../../images/toolbox.png ) no-repeat 0 -20px;
+ background-size: 20px;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-header .close-dynamicriver {
+ position: absolute;
+ top: 50%;
+ right: 8px;
+ font-size: 38px;
+ font-weight: 400;
+ height: 28px;
+ line-height: 28px;
+ cursor: pointer;
+ transform: translateY(-50%);
+}
+
+.jimu-widget-DynamicRiver .water-analysis {
+ margin: 10px 8px;
+}
+
+.jimu-widget-DynamicRiver .water-analysis ul,
+.jimu-widget-DynamicRiver .water-analysis ul li {
+ margin: 0;
+ padding: 0;
+}
+
+.jimu-widget-DynamicRiver .water-analysis ul {
+ border-right: 1px solid #fff;
+ border-bottom: 1px solid #fff;
+}
+
+.jimu-widget-DynamicRiver .water-analysis ul li {
+ list-style: none;
+ height: 30px;
+ text-align: center;
+ line-height: 30px;
+ border-top: 1px solid #fff;
+ border-left: 1px solid #fff;
+}
+
+.jimu-widget-DynamicRiver .water-analysis ul li span.content-left {
+ float: left;
+ padding-left: 10px;
+ height: 100%;
+ width: 80%;
+ text-align: left;
+
+}
+
+.jimu-widget-DynamicRiver .water-analysis ul li span.content-right {
+ float: left;
+ height: 100%;
+ width: 20%;
+ background: url(../../../images/dynamicRiver-see.png) no-repeat;
+ background-position: 50%;
+ background-size: 50%;
+ border-left: 1px solid #fff;
+}
+
+
+.jimu-widget-DynamicRiver .dynamicriver-result div,
+.jimu-widget-DynamicRiver .dynamicriver-result ul,
+.jimu-widget-DynamicRiver .dynamicriver-result li {
+ margin: 0;
+ padding: 0;
+}
+
+
+.jimu-widget-DynamicRiver .dynamicriver-result {
+ display: none;
+ position: absolute;
+ top: 260px;
+ right: 10px;
+ width: 220px;
+ height: auto;
+ background-color: rgba(48, 48, 48, 0.7);
+ border: 1px solid rgb(69, 154, 251);
+ border-radius: 6px;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result > div {
+ position: relative;
+ padding: 0 10px;
+ height: 40px;
+ line-height: 40px;
+ font-size: 16px;
+ text-align: left;
+ border-bottom: 1px solid rgb(69, 154, 251);
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result div .close-dynamicriver-result {
+ position: absolute;
+ top: 50%;
+ right: 8px;
+ font-size: 30px;
+ font-weight: 400;
+ height: 28px;
+ line-height: 28px;
+ cursor: pointer;
+ transform: translateY(-50%);
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result ul {
+ margin: 10px;
+ border-top: 1px solid #fff;
+ border-left: 1px solid #fff;
+ border-right: 1px solid #fff;
+ border-radius: 6px;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result ul li {
+ list-style: none;
+ display: flex;
+ height: 30px;
+ line-height: 30px;
+ border-bottom: 1px solid #fff;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result ul li:last-child {
+ border-radius: 6px;
+}
+
+
+.jimu-widget-DynamicRiver .dynamicriver-result ul li span:first-child {
+ flex: 1;
+ border-right: 1px solid #fff;
+ text-align: center;
+}
+
+.jimu-widget-DynamicRiver .dynamicriver-result ul li span:last-child {
+ flex: 2;
+ padding-left: 8px;
+}
\ No newline at end of file
diff --git a/widgets/FloodAnalysis/css/style.css b/widgets/FloodAnalysis/css/style.css
new file mode 100644
index 0000000..c628d65
--- /dev/null
+++ b/widgets/FloodAnalysis/css/style.css
@@ -0,0 +1,84 @@
+@import "Tooltip-div.css";
+.jimu-widget-FloodAnalysis{
+ width: 100%;
+ height: 100%;
+ position: fixed !important;
+ left: 30px !important;
+ top: 75px !important;
+ overflow-x: hidden;
+ background: rgba(31, 39, 48, .7);
+ font-size: 14px;
+ border: 1px solid rgb(69, 154, 251);
+ border-radius: 5px;
+ color: rgb(255, 255, 255);
+}
+
+.jimu-widget-FloodAnalysis .flood-analysis-header {
+ position: relative;
+ width: 100%;
+ height: 40px;
+ line-height: 40px;
+ font-size: 20px;
+ border-bottom: 1px solid rgb(69, 154, 251);
+}
+
+.jimu-widget-FloodAnalysis .flood-analysis-header i {
+ display: inline-block;
+ margin-left: 6px;
+ vertical-align: middle;
+ width: 20px;
+ height: 20px;
+ background: url(../../../images/toolbox.png ) no-repeat 0 -20px;
+ background-size: 20px;
+}
+
+.jimu-widget-FloodAnalysis .flood-water-analysis {
+ margin: 12px 17px 10px 17px;
+}
+
+.jimu-widget-FloodAnalysis .flood-water-analysis ul ,
+.jimu-widget-FloodAnalysis .flood-water-analysis ul li ,
+.jimu-widget-FloodAnalysis .flood-water-analysis ul input {
+ padding: 0;
+ margin: 0;
+}
+
+.jimu-widget-FloodAnalysis .flood-water-analysis ul li {
+ margin: 5px 0;
+ list-style: none;
+ height: 36px;
+ line-height: 36px;
+ font-size: 16px;
+}
+
+.jimu-widget-FloodAnalysis .flood-water-analysis ul li input {
+ padding: 0 10px;
+ width: 48%;
+ height: 100%;
+ color: #fff;
+ border: none;
+ background: rgba(140, 151, 165, 0.5);
+}
+
+.jimu-widget-FloodAnalysis .flood-water-analysis ul li span {
+ display: inline-block;
+ width: 52%;
+}
+
+.jimu-widget-FloodAnalysis .flood-water-analysis .flood-water-analysis-new input {
+ margin: 5px 0;
+ width: 48%;
+ height: 36px;
+ color: #fff;
+ background: rgb(2,24,55);
+ border: 1px solid rgb(69, 154, 251);
+ border-radius: 4px;
+}
+
+.jimu-widget-FloodAnalysis .flood-water-analysis .flood-water-analysis-new input:nth-child(odd) {
+ float:left;
+}
+
+.jimu-widget-FloodAnalysis .flood-water-analysis .flood-water-analysis-new input:nth-child(even) {
+ float: right;
+}
diff --git a/widgets/FloodAnalysis/data.json b/widgets/FloodAnalysis/data.json
new file mode 100644
index 0000000..f411306
--- /dev/null
+++ b/widgets/FloodAnalysis/data.json
@@ -0,0 +1,25 @@
+{
+ "data": [
+ {
+ "name": "龙山水库",
+ "LGTD": "116.074778",
+ "LTTD": "26.001260",
+ "house": "35",
+ "people": "175"
+ },
+ {
+ "name": "金湾水库",
+ "LGTD": "114.978944",
+ "LTTD": "24.904194",
+ "house": "35",
+ "people": "175"
+ },
+ {
+ "name": "雷公坝",
+ "LGTD": "115.672889",
+ "LTTD": "25.306611",
+ "house": "35",
+ "people": "175"
+ }
+ ]
+}
diff --git a/widgets/FloodAnalysis/images/location4.png b/widgets/FloodAnalysis/images/location4.png
new file mode 100644
index 0000000..8e08aae
--- /dev/null
+++ b/widgets/FloodAnalysis/images/location4.png
Binary files differ
diff --git a/widgets/FloodAnalysis/images/movingRiver.png b/widgets/FloodAnalysis/images/movingRiver.png
new file mode 100644
index 0000000..7169240
--- /dev/null
+++ b/widgets/FloodAnalysis/images/movingRiver.png
Binary files differ
diff --git a/widgets/FloodAnalysis/manifest.json b/widgets/FloodAnalysis/manifest.json
new file mode 100644
index 0000000..6404634
--- /dev/null
+++ b/widgets/FloodAnalysis/manifest.json
@@ -0,0 +1,17 @@
+{
+ "name": "FloodAnalysis",
+ "2D": true,
+ "3D": true,
+ "platform": "HTML",
+ "version": "2.10",
+ "wabVersion": "2.10",
+ "author": "jxdnosng",
+ "description": "",
+ "copyright": "",
+ "license": "",
+ "properties": {
+ "hasConfig": false,
+ "inPanel": false,
+ "hasVersionManager": false
+ }
+}
diff --git a/widgets/FloodAnalysis/nls/es/strings.js b/widgets/FloodAnalysis/nls/es/strings.js
new file mode 100644
index 0000000..8c1dae6
--- /dev/null
+++ b/widgets/FloodAnalysis/nls/es/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ _widgetLabel: "GoFloodAnalysis"
+ })
+);
diff --git a/widgets/FloodAnalysis/nls/strings.js b/widgets/FloodAnalysis/nls/strings.js
new file mode 100644
index 0000000..13e277a
--- /dev/null
+++ b/widgets/FloodAnalysis/nls/strings.js
@@ -0,0 +1,7 @@
+define({
+ root: ({
+ _widgetLabel: "FloodAnalysis"
+ }),
+ "es": 1,
+ "zh-cn": 1
+});
diff --git a/widgets/FloodAnalysis/nls/zh-cn/strings.js b/widgets/FloodAnalysis/nls/zh-cn/strings.js
new file mode 100644
index 0000000..d7a4967
--- /dev/null
+++ b/widgets/FloodAnalysis/nls/zh-cn/strings.js
@@ -0,0 +1,5 @@
+define(
+ ({
+ _widgetLabel: "洪水淹没分析"
+ })
+);
diff --git a/widgets/HydrologicalRiskArea/CommonPointLayer3D.js b/widgets/HydrologicalRiskArea/CommonPointLayer3D.js
index c030d41..07c88c7 100644
--- a/widgets/HydrologicalRiskArea/CommonPointLayer3D.js
+++ b/widgets/HydrologicalRiskArea/CommonPointLayer3D.js
@@ -79,7 +79,7 @@
/**
* @billbo 对象,确定entities中billboard的值
* @labble 对象,确定entities中lable的值
- *
+ *
*/
var billbo, labble, colorBill;
@@ -215,7 +215,7 @@
// 点击弹出面板;
openWindow: function (item) {
//点击测站的弹出框的内容,面板,单独的widget 可传参数
-
+
if(this.txt == "山洪风险区"){
var shpanel = new GeologicalDisasterPanel({ data: item });
new Popup({
@@ -244,4 +244,4 @@
this.setVisible(vis);
},
});
- });
\ No newline at end of file
+ });
diff --git a/widgets/Hydrology/Widget.js b/widgets/Hydrology/Widget.js
index 49559a9..a2c519d 100644
--- a/widgets/Hydrology/Widget.js
+++ b/widgets/Hydrology/Widget.js
@@ -75,7 +75,7 @@
tableObj.num = ind;
data.data.forEach(function (item, index) {
if (item.SiteList != '') {
-
+
if (item.list && item.list != {} && ((Date.parse(new Date()) - Date.parse(new Date(item.list.TM.substring(0, 11).replace(/-/g, '/') + item.list.TM.substring(11)))) < 86400000)) {
that.entitys({
id: item.SiteList.site_code + "yl",
@@ -125,7 +125,7 @@
var colorSl;
data.data.forEach(function (item, index) {
if (item.SiteList != '') {
-
+
if (item.list && item.list != {} && Date.parse(new Date()) - Date.parse(new Date(item.list.TM.substring(0, 11).replace(/-/g, '/') + item.list.TM.substring(11))) < 86400000) {
if (item.list.Z > item.list.yjsw) {
colorSl = Cesium.Color.RED;
@@ -181,7 +181,7 @@
var colorSl;
data.data.forEach(function (item, index) {
if (item.SiteList != '') {
-
+
if (item.list && item.list != {} && Date.parse(new Date()) - Date.parse(new Date(item.list.TM.substring(0, 11).replace(/-/g, '/') + item.list.TM.substring(11))) < 86400000) {
if (item.list.Q > item.list.yjll) {
colorSl = Cesium.Color.RED;
@@ -237,7 +237,7 @@
tableObj.num = ind;
data.data.forEach(function (item, index) {
if (item.SiteList != '') {
-
+
if (item.list && item.list.sum_ev == undefined) {
item.list.sum_ev = '0';
}
@@ -390,7 +390,7 @@
data.data.forEach(function (item, index) {
if (item.SiteList != '') {
-
+
if (item.list && item.list != {} && Date.parse(new Date()) - Date.parse(new Date(item.list.TM.substring(0, 11).replace(/-/g, '/') + item.list.TM.substring(11))) < 86400000) {
that.entitys({
id: item.SiteList.site_code + "sw",
@@ -441,7 +441,7 @@
data.data.forEach(function (item, index) {
if (item.SiteList != '') {
-
+ console.log(item)
that.entitys({
id: item.SiteList.site_code + "sw",
name: item.SiteList.site_name,
diff --git a/widgets/RiskEarlyWarning/Widget.js b/widgets/RiskEarlyWarning/Widget.js
index b5018a2..fc4b8af 100644
--- a/widgets/RiskEarlyWarning/Widget.js
+++ b/widgets/RiskEarlyWarning/Widget.js
@@ -160,7 +160,7 @@
that.flagone = false;
that.flagtwo = false;
that.flagthree = false;
- if (ind == 0) {
+ if (ind == 0) {//危险区
// 首次打开时,禁用实时预测选择
// closeRealTime(0);
// $('.jimu-widget-RiskEarlyWarning .risk-early-warning-right-tab .early-warning-image .shzhtl').stop().show();
@@ -179,7 +179,7 @@
that.excelFileName = '山洪灾害' + '.xlsx'
that.mountainFloodDisaster(timeAvailable.changeTime, timeAvailable.month)
that.childrenShowOne()
- } else if (ind == 1) {
+ } else if (ind == 1) {//风景区
that.btnInd = 1;
$('.jimu-widget-RiskEarlyWarning .risk-early-warning-right-tab .nav>li:eq(1) div button').prop('disabled', false);
$('.jimu-widget-RiskEarlyWarning .risk-early-warning-right-tab .nav>li:eq(1)>div>div>div').text('实时').stop().show().css('left', 0);
@@ -191,7 +191,7 @@
that.excelFileName = '风景区水位' + '.xlsx';
that.scenicSpot(timeAvailable.month, timeAvailable.dateTime);
that.childrenShowOne();
- } else if (ind == 2) {
+ } else if (ind == 2) {//监测站
// 首次打开时,禁用实时预测选择
// closeRealTime(2);
$('.jimu-widget-RiskEarlyWarning .risk-early-warning-right-tab .nav>li:eq(2) div button').prop('disabled', false);
@@ -3604,6 +3604,7 @@
// 注册鼠标左键单击事件
clickHand: function clickHand(click) {
var pickedObjects = this.map.scene.drillPick(click.position);
+ console.log(pickedObjects,click,"5555")
if (Cesium.defined(pickedObjects)) {
for (var i = 0; i < pickedObjects.length; ++i) {
var obj = pickedObjects[i].id;
diff --git a/widgets/ThematicDynamicRiver/ThematicDynamicRiver.js b/widgets/ThematicDynamicRiver/ThematicDynamicRiver.js
index a6f7f5d..ab6b13f 100644
--- a/widgets/ThematicDynamicRiver/ThematicDynamicRiver.js
+++ b/widgets/ThematicDynamicRiver/ThematicDynamicRiver.js
@@ -82,7 +82,7 @@
mouseHandlerDraw = null;
}
TooltipDiv.setVisible(false);
- //移除
+ //移除
if (drawingPolyline != undefined)
viewer.entities.remove(drawingPolyline);
@@ -106,7 +106,7 @@
var lineOpts = {
polyline: {
positions: positionArr,
- clampToGround: true, //
+ clampToGround: true, //
width: 3,
material: Cesium.Color.BLUE.withAlpha(0.5),
}
@@ -138,7 +138,7 @@
if (cartesian) {
positions.push(cartesian.clone());
// var cartographic = Cesium.Cartographic.fromCartesian(cartesian);//当前点
- // if (cartographic) {
+ // if (cartographic) {
// if (cartesian) {
// var isIntersect = false;
// if (positions.length >= 3) {
@@ -154,7 +154,7 @@
// var intersects = turf.lineIntersect(line1, line2);
// if (intersects && intersects.features && intersects.features.length > 0) {
// isIntersect = true;
-
+
// alert('图形自相交!');
// break;
// }
@@ -180,13 +180,12 @@
positionArr.push(positions[i]);
}
positionArr.push(cartesian);
-
if (drawingPolyline != undefined)
viewer.entities.remove(drawingPolyline);
var lineOpts = {
polyline: {
positions: positionArr,
- clampToGround: true, //
+ clampToGround: true, //
width: 3,
material: Cesium.Color.BLUE.withAlpha(0.5),
}
@@ -254,7 +253,7 @@
mouseHandlerDraw = null;
}
TooltipDiv.setVisible(false);
- //移除
+ //移除
if (drawingPolylineN != undefined)
viewer.entities.remove(drawingPolylineN);
if (drawingPolylineT != undefined)
@@ -274,13 +273,13 @@
var positionArr = [];
positionArr.push(positions[0]);
positionArr.push(cartesian);
- //实时
+ //实时
if (drawingPolylineT != undefined)
viewer.entities.remove(drawingPolylineT);
var lineOptsT = {
polyline: {
positions: positionArr,
- clampToGround: true, //
+ clampToGround: true, //
width: 3,
material: Cesium.Color.BLUE.withAlpha(0.5),
}
@@ -295,7 +294,7 @@
var lineOptsN = {
polyline: {
positions: positionN,
- clampToGround: true, //
+ clampToGround: true, //
width: 3,
material: Cesium.Color.RED.withAlpha(0.5),
}
@@ -308,4 +307,4 @@
}
return _;
-})();
\ No newline at end of file
+})();
diff --git a/widgets/ThematicDynamicRiver/Widget.js b/widgets/ThematicDynamicRiver/Widget.js
index 9c341a6..7046578 100644
--- a/widgets/ThematicDynamicRiver/Widget.js
+++ b/widgets/ThematicDynamicRiver/Widget.js
@@ -34,13 +34,11 @@
this.inherited(arguments);
var self = this;
-
this.map.scene.globe.depthTestAgainstTerrain = true;
//取消双击事件
this.map.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
-
$("#thematic_hzsm_headtab").click(function () {
DrawDynamicClampGround.startDrawingPolyline(self.map, function (cartesians) {
if (self.drawingPolyline != undefined)
@@ -287,7 +285,7 @@
},
-
+
onClose: function () {
//面板关闭的时候触发 (when this panel is closed trigger)
this.map.entities.remove(this.drawingPolyline);
@@ -315,4 +313,4 @@
}
});
- });
\ No newline at end of file
+ });
diff --git a/widgets/YuShuiQing/Widget.js b/widgets/YuShuiQing/Widget.js
index aa6f4b0..e904e3f 100644
--- a/widgets/YuShuiQing/Widget.js
+++ b/widgets/YuShuiQing/Widget.js
@@ -176,7 +176,7 @@
//面板关闭的时候触发 (when this panel is closed trigger)
this.layer ? this.layer.setVis(false) : '';
-
+
},
resize: function () {
@@ -248,7 +248,7 @@
cellNavigation: false // for Keyboard; allow only row-level keyboard navigation
}, tab);
grid.startup();
-
+
grid.on('dgrid-select', function (event) {
topic.publish("gis/map/setCenter", {
'lgtd': event.rows[0].data.LGTD,
diff --git a/widgets/YuShuiQing/popup/js/river.js b/widgets/YuShuiQing/popup/js/river.js
index 4ab3ac3..e546ea1 100644
--- a/widgets/YuShuiQing/popup/js/river.js
+++ b/widgets/YuShuiQing/popup/js/river.js
@@ -74,7 +74,6 @@
function recharts_z() {
var width = $(window).width() * 0.53;
var height = ($(window).height() - 50) - 80;
-
$("#eigthRiverWeater").empty();
$("#eigthRiverWeater").removeAttr("_echarts_instance_").empty();
var chartPie = document.getElementById('eigthRiverWeater');
@@ -216,7 +215,6 @@
'dateEnd': endTime
},
success: function (result) {
- debugger
var result = result.data;
var maxY = Number(result.maxWater);
--
Gitblit v1.9.3