From 9f1f8674c82dd35800cbd7c64142fa25a92f5f28 Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Mon, 28 Jun 2021 14:53:06 +0800
Subject: [PATCH] BOX裁剪功能添加

---
 config.json                               |    4 
 widgets/BOXTailoring/manifest.json        |   17 +
 widgets/LeftNavigationBar/Widget.js       |    7 
 widgets/BOXTailoring/nls/zh-cn/strings.js |    5 
 widgets/BOXTailoring/Widget.html          |   57 +++++
 widgets/BOXTailoring/Widget.js            |  379 ++++++++++++++++++++++++++++++++++
 widgets/BOXTailoring/nls/strings.js       |    7 
 widgets/digTheEarth/Widget.js             |    4 
 widgets/BOXTailoring/nls/es/strings.js    |    5 
 widgets/spatialAnalysis/Widget.js         |   84 ++++---
 widgets/BOXTailoring/css/style.css        |   61 +++++
 11 files changed, 591 insertions(+), 39 deletions(-)

diff --git a/config.json b/config.json
index 656296b..09772df 100644
--- a/config.json
+++ b/config.json
@@ -276,6 +276,10 @@
       {
         "name": "平面裁剪",
         "uri": "widgets/clippingPlanes/Widget"
+      },
+      {
+        "name": "BOX裁剪",
+        "uri": "widgets/BOXTailoring/Widget"
       }
     ],
     "groups": [],
diff --git a/widgets/BOXTailoring/Widget.html b/widgets/BOXTailoring/Widget.html
new file mode 100644
index 0000000..586336e
--- /dev/null
+++ b/widgets/BOXTailoring/Widget.html
@@ -0,0 +1,57 @@
+<div>
+    <div id="cesiumContainer"></div>
+    <div id='loadingbarBOXTailoring' class="spinner">
+        <div class="spinner-container container1">
+            <div class="circle1"></div>
+            <div class="circle2"></div>
+            <div class="circle3"></div>
+            <div class="circle4"></div>
+        </div>
+        <div class="spinner-container container2">
+            <div class="circle1"></div>
+            <div class="circle2"></div>
+            <div class="circle3"></div>
+            <div class="circle4"></div>
+        </div>
+        <div class="spBOXTailoringinner-container container3">
+            <div class="circle1"></div>
+            <div class="circle2"></div>
+            <div class="circle3"></div>
+            <div class="circle4"></div>
+        </div>
+    </div>
+    <div id='toolbarBOXTailoring' class="param-container tool-bar">
+        <div id="toolbarBOXTailoringIn">
+            <select style="width: 180px;" id="clipModeBOXTailoring">
+                <option value="clip_behind_all_plane">裁剪包围盒内</option>
+                <option value="clip_behind_any_plane">裁剪包围盒外</option>
+            </select>
+
+        </div>
+        <div class="param-item">
+            <b>改变长度:</b>
+            <div id="lengthBOXTailoring"></div>
+        </div>
+        <div class="param-item">
+            <b>改变宽度:</b>
+            <div id="widthBOXTailoring"></div>
+        </div>
+        <div class="param-item">
+            <b>改变高度:</b>
+            <div id="heightBOXTailoring"></div>
+        </div>
+        <div class="param-item">
+            <b>进行旋转:</b>
+            <div id="rotateBOXTailoring"></div>
+        </div>
+        <div class="param-item">
+            <button type="button" id="beginBOXTailoringG" class="button black">设置盒子</button>
+            <button type="button" id="customBOXTailoring" class="button black"  title="左键移动裁剪,右键结束">移 动</button>
+            <button type="button" id="clearboxBOXTailoring" class="button black">清 除</button>
+        </div>
+
+    </div>
+    <i class="layui-icon closeOUR">
+        &#x1006;
+    </i></span>
+</div>
\ No newline at end of file
diff --git a/widgets/BOXTailoring/Widget.js b/widgets/BOXTailoring/Widget.js
new file mode 100644
index 0000000..2cf8e9c
--- /dev/null
+++ b/widgets/BOXTailoring/Widget.js
@@ -0,0 +1,379 @@
+define([
+    'dojo/_base/declare',
+    'dojo/_base/lang',
+    'dojo/_base/array',
+    'dojo/_base/html',
+    'dojo/topic',
+    'jimu/BaseWidget',
+],
+    function (declare,
+        lang,
+        array,
+        html,
+        topic,
+        BaseWidget
+    ) {
+        return declare([BaseWidget], {
+            baseClass: 'jimu-widget-BOXTailoring',
+            name: 'BOXTailoring',
+            flag: false,
+            startup: function () {
+                var that = this;
+                topic.subscribe("beginBOXTailoring", lang.hitch(this, this.beginBOXTailoring));
+                topic.subscribe("closesBOXTailoring", lang.hitch(this, this.closesBOXTailoring));
+                // topic.publish('getbeginSlope', that.beginSlope);
+                $(`.${that.baseClass}`).find('.closeOUR').click(() => {
+                    $(`.${that.baseClass}`).hide();
+                    that.closesBOXTailoring();
+                })
+                // 设置滑块,体验感
+                that.defaultLayui();
+
+                // $('#beginBOXTailoringG').click(() => {
+                // that.beginBOXTailoring();
+                // })
+
+
+            },
+            defaultLayui: function () {
+                var that = this;
+                layui.use(function () {
+                    var slider = layui.slider //滑块
+                    //滑块
+                    var sliderInst1 = slider.render({
+                        elem: '#lengthBOXTailoring'
+                        // , input: true //输入框
+                        , value: that.Nowlength
+                        , disabled: true
+                        , change: function (value) {
+                            // console.log(value) //得到开始值
+                        }
+                    });
+                    var sliderInst2 = slider.render({
+                        elem: '#widthBOXTailoring'
+                        // , input: true //输入框
+                        , value: that.Nowwidth
+                        , disabled: true
+                        , change: function (value) {
+                            // console.log(value) //得到开始值
+                        }
+                    });
+                    var sliderInst3 = slider.render({
+                        elem: '#heightBOXTailoring'
+                        // , input: true //输入框
+                        , value: that.Nowheight
+                        , disabled: true
+                        , change: function (value) {
+                            // console.log(value) //得到开始值
+                        }
+                    });
+                    var sliderInst4 = slider.render({
+                        elem: '#rotateBOXTailoring'
+                        // , input: true //输入框
+                        , value: that.Nowrotate
+                        , max: 360
+                        , disabled: true
+                        , change: function (value) {
+                            // console.log(value) //得到开始值
+                        }
+                    });
+                })
+            },
+            Nowlength: 5,
+            Nowwidth: 5,
+            Nowheight: 5,
+            Nowrotate: 0,
+            beginBOXTailoring: function (pro) {
+                console.log(`${this.name}--kaishi`);
+                var that = this;
+                var promise = window.mySanweiShujuOpens[pro.id];
+                // var promise = window.mySanweiShujuOpens;
+                // console.log(pro.ZName);
+                // console.log(promise);
+                // return;
+
+                var viewer = that.map;
+                // viewer.imageryLayers.addImageryProvider(new Cesium.BingMapsImageryProvider({
+                //     url: 'https://dev.virtualearth.net',
+                //     mapStyle: Cesium.BingMapsStyle.AERIAL,
+                //     key: window.MYURL_CONFIG.BING_MAP_KEY
+                // }));
+                var scene = viewer.scene;
+                var widget = viewer.cesiumWidget;
+                $('#toolbarBOXTailoring').show();
+                $('#loadingbarBOXTailoring').remove();
+                // 场景添加S3M图层服务
+                // that.promise = scene.open(window.MYURL_CONFIG.SCENE_BIMBUILDING);
+                that.promise = promise;
+                Cesium.when(that.promise, function (layers) {
+                    // 精准定位
+                    // scene.camera.setView({
+                    //     destination: new Cesium.Cartesian3(-2180753.065987198, 4379023.266141494, 4092583.575045952),
+                    //     orientation: {
+                    //         heading: 4.0392222751147955,
+                    //         pitch: 0.010279641987852584,
+                    //         roll: 1.240962888005015e-11
+                    //     }
+                    // });
+
+                    // 设置裁剪线颜色
+                    setAllLayersClipColor();
+                    var boxEntity = undefined;
+                    var $clipMode = $('#clipModeBOXTailoring')
+                        , Nowlength = that.Nowlength
+                        , Nowwidth = that.Nowwidth
+                        , Nowheight = that.Nowheight
+                        , Nowrotate = that.Nowrotate;
+                    var tooltip = window.MYcreateTooltip(document.body);
+                    var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
+                    var isBegin = false;//设置不重复添加盒子
+
+                    $('#beginBOXTailoringG').click(() => {
+                        if (isBegin) {
+                            layer.tips('请先清除,再添加', '#clearboxBOXTailoring', {
+                                tips: [3, 'red']
+                            });
+                            return false;
+                        }
+                        isBegin = true;
+                        layui.use(function () {
+                            var slider = layui.slider //滑块
+                            //滑块
+                            var sliderInst1 = slider.render({
+                                elem: '#lengthBOXTailoring'
+                                // , input: true //输入框
+                                , value: Nowlength
+                                , disabled: false
+                                , change: function (value) {
+                                    // console.log(value) //得到开始值
+                                    Nowlength = Number(value);
+                                    that.Nowlength = Number(value);
+                                    if (!boxEntity) {
+                                        return;
+                                    }
+                                    var dim = boxEntity.box.dimensions.getValue();
+                                    var newValue = Number(value);
+                                    boxEntity.box.dimensions = new Cesium.Cartesian3(newValue, dim.y, dim.z);
+                                    setClipBox();
+                                }
+                            });
+                            var sliderInst2 = slider.render({
+                                elem: '#widthBOXTailoring'
+                                // , input: true //输入框
+                                , value: Nowwidth
+                                , disabled: false
+                                , change: function (value) {
+                                    // console.log(value) //得到开始值
+                                    Nowwidth = Number(value);
+                                    that.Nowwidth = Number(value);
+                                    if (!boxEntity) {
+                                        return;
+                                    }
+                                    var dim = boxEntity.box.dimensions.getValue();
+                                    var newValue = Number(value);
+                                    boxEntity.box.dimensions = new Cesium.Cartesian3(dim.x, newValue, dim.z);
+                                    setClipBox();
+                                }
+                            });
+                            var sliderInst3 = slider.render({
+                                elem: '#heightBOXTailoring'
+                                // , input: true //输入框
+                                , value: Nowheight
+                                , disabled: false
+                                , change: function (value) {
+                                    // console.log(value) //得到开始值
+                                    Nowheight = Number(value);
+                                    that.Nowheight = Number(value);
+                                    if (!boxEntity) {
+                                        return;
+                                    }
+                                    var dim = boxEntity.box.dimensions.getValue();
+                                    var newValue = Number(value);
+                                    boxEntity.box.dimensions = new Cesium.Cartesian3(dim.x, dim.y, newValue);
+                                    setClipBox();
+                                }
+                            });
+                            var sliderInst4 = slider.render({
+                                elem: '#rotateBOXTailoring'
+                                // , input: true //输入框
+                                , value: Nowrotate
+                                , disabled: false
+                                , max: 360
+                                , change: function (value) {
+                                    // console.log(value) //得到开始值
+                                    Nowrotate = Number(value);
+                                    that.Nowrotate = Number(value);
+                                    if (!boxEntity) {
+                                        return;
+                                    }
+                                    var position = boxEntity.position.getValue(0);
+                                    var newValue = Number(value);
+                                    var rotate = Cesium.Math.toRadians(newValue);
+                                    var hpr = new Cesium.HeadingPitchRoll(rotate, 0, 0);
+                                    var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr);
+                                    boxEntity.orientation = orientation;
+                                    setClipBox();
+                                }
+                            });
+                        })
+
+
+
+                        handler.setInputAction(function (evt) {
+                            tooltip.showAt(evt.endPosition, '<p>点击模型,添加裁剪盒子</p>');
+                        }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
+
+                        handler.setInputAction(function (evt) {
+                            var clipMode = $clipMode.val();
+                            var length = Number(Nowlength);
+                            var width = Number(Nowwidth);
+                            var height = Number(Nowheight);
+                            var rotate = Cesium.Math.toRadians(parseFloat(Nowrotate));
+                            // 获取鼠标点击的笛卡尔坐标
+                            var cartesian = scene.pickPosition(evt.position);
+                            var boxOption = {
+                                dimensions: new Cesium.Cartesian3(length, width, height),
+                                position: cartesian,
+                                clipMode: clipMode,
+                                heading: rotate
+                            };
+                            var hpr = new Cesium.HeadingPitchRoll(rotate, 0, 0);
+                            var orientation = Cesium.Transforms.headingPitchRollQuaternion(cartesian, hpr);
+                            boxEntity = viewer.entities.add({
+                                box: {
+                                    dimensions: new Cesium.Cartesian3(length, width, height),
+                                    material: Cesium.Color.fromRandom({
+                                        alpha: 0.1
+                                    })
+                                },
+                                position: cartesian,
+                                orientation: orientation
+                            });
+                            setAllLayersClipOptions(boxOption);
+                            tooltip.setVisible(false);
+                            handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);
+                            handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
+                        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
+
+                    })
+                    $("#customBOXTailoring").on("click", function () {
+                        if (!boxEntity) {
+                            return;
+                        }
+                        if (!isBegin) {
+                            layer.tips('请先添加盒子', '#beginBOXTailoringG', {
+                                tips: [3, 'red']
+                            });
+                            return false;
+                        }
+                        handler.setInputAction(
+                            function (movement) {
+                                tooltip.showAt(movement.endPosition, '<p>点击模型,移动裁剪盒子</p>');
+                                var cartesian = viewer.scene.pickPosition(movement.startPosition);
+                                boxEntity.position = cartesian;
+                                handler.setInputAction(function (evt) {
+                                    setClipBox();
+                                    tooltip.setVisible(false);
+                                    handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);
+                                }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
+                            }, Cesium.ScreenSpaceEventType.MOUSE_MOVE
+                        );
+                    });
+                    $('#clearboxBOXTailoring').click(function () {
+                        // for (var i = 0, j = layers.length; i < j; i++) {
+                        //     layers[i].clearCustomClipBox();
+                        // };
+                        // viewer.entities.removeAll();
+                        // that.defaultLayui();
+                        isBegin = false;
+                        that.closesBOXTailoring();
+                    });
+
+                    handler.setInputAction(function () {
+                        setClipBox();
+                        handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);
+                    }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
+                    $clipMode.change(function () {
+                        setClipBox();
+                    });
+
+                    function setClipBox() {
+                        var newDim = boxEntity.box.dimensions.getValue();
+                        var position = boxEntity.position.getValue(0);
+                        var clipMode = $clipMode.val();
+                        var heading = Cesium.Math.toRadians(Nowrotate);
+                        var boxOptions = {
+                            dimensions: newDim,
+                            position: position,
+                            clipMode: clipMode,
+                            heading: heading
+                        };
+                        setAllLayersClipOptions(boxOptions);
+                    }
+
+                    function setAllLayersClipColor() {
+                        for (var i = 0, j = layers.length; i < j; i++) {
+                            layers[i].clipLineColor = new Cesium.Color(1, 1, 1, 0);
+                        }
+                    }
+
+                    function setAllLayersClipOptions(boxOptions) {
+                        for (var i = 0, j = layers.length; i < j; i++) {
+                            layers[i].setCustomClipBox(boxOptions);
+                        }
+                    }
+
+                }, function (e) {
+                    if (widget._showRenderLoopErrors) {
+                        var title = '加载SCP失败,请检查网络连接状态或者url地址是否正确?';
+                        widget.showErrorPanel(title, undefined, e);
+                    }
+                });
+
+
+            },
+            promise: 'null',
+            closesBOXTailoring: function (froms) {
+                console.log(`${this.name}--guanbi`);
+                var that = this;
+                if (that.promise != 'null') {
+                    Cesium.when(that.promise, function (layers) {
+                        for (var i = 0, j = layers.length; i < j; i++) {
+                            layers[i].clearCustomClipBox();
+                        };
+                        that.map.entities.removeAll();
+                        that.defaultLayui();
+                    })
+                }
+
+            },
+            onOpen: function () {
+
+            },
+
+            onClose: function () {
+                //面板关闭的时候触发 (when this panel is closed trigger)
+                console.log('jies')
+            },
+
+            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/BOXTailoring/css/style.css b/widgets/BOXTailoring/css/style.css
new file mode 100644
index 0000000..2c2de0d
--- /dev/null
+++ b/widgets/BOXTailoring/css/style.css
@@ -0,0 +1,61 @@
+.jimu-widget-BOXTailoring {
+  position: fixed !important;
+  top: 72px !important;
+  right: 388px !important;
+  width: 200px !important;
+  height: 300px !important;
+  background-color: rgb(255, 255, 255);
+  font-size: 14px;
+  color: rgb(0, 0, 0);
+  z-index: 12 !important;
+  border-radius: 10px;
+  display: none;
+  box-shadow: 0 0 8px #fff;
+  padding: 0px 5px !important;
+}
+
+.jimu-widget-BOXTailoring .closeOUR {
+  position: absolute;
+  right: 5px;
+  top: 5px;
+  font-size: 18px;
+  cursor: pointer;
+}
+
+.jimu-widget-BOXTailoring .closeOUR:hover {
+  color: red;
+}
+
+.jimu-widget-BOXTailoring button{
+  line-height: 30px;
+  /* width: 80px; */
+  height: 30px;
+  font-size: 14px;
+  border-radius: 5px;
+  box-shadow: 2px 2px 15px -5px #378ef1;
+  border: 1px solid transparent;
+  background-color: #fff;
+  padding: 0 8px;
+}
+
+.jimu-widget-BOXTailoring button:hover {
+  box-shadow: 2px 2px 25px -5px #1679eb;
+}
+
+.jimu-widget-BOXTailoring #lengthBOXTailoring
+,.jimu-widget-BOXTailoring #widthBOXTailoring
+,.jimu-widget-BOXTailoring #heightBOXTailoring
+,.jimu-widget-BOXTailoring #rotateBOXTailoring{
+  width: 180px;
+}
+
+.jimu-widget-BOXTailoring #toolbarBOXTailoring {
+  width: 100%;
+  height: calc(100% - 30px);
+  margin-top: 20px;
+  /* border: 1px solid sandybrown; */
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  justify-content: space-around;
+}
diff --git a/widgets/BOXTailoring/manifest.json b/widgets/BOXTailoring/manifest.json
new file mode 100644
index 0000000..7f1b458
--- /dev/null
+++ b/widgets/BOXTailoring/manifest.json
@@ -0,0 +1,17 @@
+{
+  "name": "BOXTailoring",
+  "2D": true,
+  "3D": true,
+  "platform": "HTML",
+  "version": "2.10",
+  "wabVersion": "2.10",
+  "author": "liuyg",
+  "description": "",
+  "copyright": "",
+  "license": "",
+  "properties": {
+    "hasConfig": false,
+    "inPanel": false,
+    "hasVersionManager": false
+  }
+}
\ No newline at end of file
diff --git a/widgets/BOXTailoring/nls/es/strings.js b/widgets/BOXTailoring/nls/es/strings.js
new file mode 100644
index 0000000..2b3d87b
--- /dev/null
+++ b/widgets/BOXTailoring/nls/es/strings.js
@@ -0,0 +1,5 @@
+define(
+   ({
+    _widgetLabel: "BOXTailoring"
+  })
+);
\ No newline at end of file
diff --git a/widgets/BOXTailoring/nls/strings.js b/widgets/BOXTailoring/nls/strings.js
new file mode 100644
index 0000000..a2cdd73
--- /dev/null
+++ b/widgets/BOXTailoring/nls/strings.js
@@ -0,0 +1,7 @@
+define({
+  root: ({
+    _widgetLabel: "BOXTailoring"
+  }),
+  "es": 1,
+  "zh-cn": 1
+});
\ No newline at end of file
diff --git a/widgets/BOXTailoring/nls/zh-cn/strings.js b/widgets/BOXTailoring/nls/zh-cn/strings.js
new file mode 100644
index 0000000..81016a9
--- /dev/null
+++ b/widgets/BOXTailoring/nls/zh-cn/strings.js
@@ -0,0 +1,5 @@
+define(
+   ({
+    _widgetLabel: "BOX裁剪"
+  })
+);
\ No newline at end of file
diff --git a/widgets/LeftNavigationBar/Widget.js b/widgets/LeftNavigationBar/Widget.js
index 8380776..2d557da 100644
--- a/widgets/LeftNavigationBar/Widget.js
+++ b/widgets/LeftNavigationBar/Widget.js
@@ -331,7 +331,7 @@
             },
             begin: function (data) {
                 var that = this;
-
+                window.mySanweiShujuOpens = {};//全局scene.open资源
                 var a = null;
 
                 layui.use(function () {
@@ -388,6 +388,8 @@
                                             that[item.id] = scene.open(host + partOfUrl, undefined, {
                                                 autoSetView: false //不自动定位
                                             });
+                                            
+                                            window.mySanweiShujuOpens[item.id] = that[item.id];
                                             // console.log(222)
                                             topic.publish('appendTilt', 'Layermanagement', item);
                                             topic.publish('appendTiltS', 'spatialAnalysis', item);
@@ -513,7 +515,8 @@
                                         that[obj.data.id] = scene.open(host + partOfUrl, undefined, {
                                             autoSetView: false //不自动定位
                                         });
-                                        // console.log(333)
+                                        window.mySanweiShujuOpens[obj.data.id] = that[obj.data.id];
+
                                         topic.publish('appendTilt', 'Layermanagement', obj.data);
                                         topic.publish('appendTiltS', 'spatialAnalysis', obj.data);
                                         topic.publish('addLayersLegends', 'legends', obj.data);
diff --git a/widgets/digTheEarth/Widget.js b/widgets/digTheEarth/Widget.js
index 0288d8d..4cafa8e 100644
--- a/widgets/digTheEarth/Widget.js
+++ b/widgets/digTheEarth/Widget.js
@@ -157,7 +157,9 @@
                 if (that.handlerPolygon.deactivate) {
                     that.handlerPolygon.deactivate();
                 }
-                that.tooltip.setVisible(false);
+                if(that.tooltip.setVisible){
+                    that.tooltip.setVisible(false);
+                }
             },
             onOpen: function () {
 
diff --git a/widgets/spatialAnalysis/Widget.js b/widgets/spatialAnalysis/Widget.js
index 5f2992d..b36a3a0 100644
--- a/widgets/spatialAnalysis/Widget.js
+++ b/widgets/spatialAnalysis/Widget.js
@@ -80,6 +80,11 @@
 						name: '平面裁剪',
 						classs: 'clippingPlanes-tool',
 						img: './images/addL/pingmian.png'
+					},
+					{//BOX裁剪
+						name: 'BOX裁剪',
+						classs: 'BOXTailoring-tool',
+						img: './images/addL/pingmian.png'
 					}
 				];
 
@@ -289,6 +294,20 @@
 					}
 				})
 
+				//BOX裁剪
+				$('.BOXTailoring-tool').click(function () {
+					that.closeOnceUse();
+
+					if (that.promise == 'NODATA') {
+						layer.tips('请选择三维倾斜数据中的图层支持!', '.SelectLayerTool', {
+							tips: [3, 'red']
+						});
+					} else {
+						$(".jimu-widget-BOXTailoring").show();
+						topic.publish('beginBOXTailoring', that.promise);
+					}
+				})
+
 				$('.SelectLayerTool').click(() => {
 					$('#SelectLayerToolItem').toggle();
 				})
@@ -308,10 +327,19 @@
 				dom.append(str);
 				// console.log('数据错误默认')
 				this.promise = 'NODATA';
+				this.SelectClose();//关闭需要三维数据的窗口
+			},
+			SelectClose: function () {
 				//关闭平面裁剪
 				if ($(".jimu-widget-clippingPlanes").is(":visible")) {//判断是否隐藏
 					$(".jimu-widget-clippingPlanes").hide();
 					topic.publish('closesclippingPlanes');
+				}
+
+				//关闭BOX裁剪
+				if ($(".jimu-widget-BOXTailoring").is(":visible")) {//判断是否隐藏
+					$(".jimu-widget-BOXTailoring").hide();
+					topic.publish('closesBOXTailoring');
 				}
 			},
 			liClick: function (itemid, name, ourdata = 1) {//点击事件
@@ -333,39 +361,36 @@
 					if (ourdata != 1) {
 						// 	console.log('data')
 						if (ourdata.lon) {
-							that.map.camera.flyTo({
-								destination: Cesium.Cartesian3.fromDegrees(Number(ourdata.lon), Number(ourdata.lat), Number(ourdata.height * 50))
+							//设置相机位置、视角,便于观察场景
+							that.map.scene.camera.setView({
+								destination: new Cesium.Cartesian3.fromDegrees(Number(ourdata.lon), Number(ourdata.lat), Number(ourdata.height)),
+								orientation: {
+									heading: Cesium.Math.toRadians(Number(ourdata.yawAngle)),
+									pitch: Cesium.Math.toRadians(Number(ourdata.pitchAngle)),
+									roll: Cesium.Math.toRadians(Number(ourdata.rollAngle))
+								}
 							});
 						}
 						if (ourdata.src.indexOf('.openrealspace') != -1) {
 							// console.log('数据正确');
-							//关闭平面裁剪
-							if ($(".jimu-widget-clippingPlanes").is(":visible")) {//判断是否隐藏
-								$(".jimu-widget-clippingPlanes").hide();
-								topic.publish('closesclippingPlanes');
-							}
+							this.SelectClose();//关闭需要三维数据的窗口
 							that.promise = {
 								src: ourdata.src,
-								name: ourdata.serviceName
+								ZName: ourdata.title,
+								name: ourdata.serviceName,
+								id: ourdata.id
 							};
 
 						} else {
 							// console.log('数据错误');
 							that.promise = 'NODATA';
-							//关闭平面裁剪
-							if ($(".jimu-widget-clippingPlanes").is(":visible")) {//判断是否隐藏
-								$(".jimu-widget-clippingPlanes").hide();
-								topic.publish('closesclippingPlanes');
-							}
+							this.SelectClose();//关闭需要三维数据的窗口
 						}
 					} else {
 						// console.log('数据错误没有data');
 						that.promise = 'NODATA';
 						//关闭平面裁剪
-						if ($(".jimu-widget-clippingPlanes").is(":visible")) {//判断是否隐藏
-							$(".jimu-widget-clippingPlanes").hide();
-							topic.publish('closesclippingPlanes');
-						}
+						this.SelectClose();//关闭需要三维数据的窗口
 					}
 
 				})
@@ -479,25 +504,6 @@
 					}
 				}
 			},
-
-			// beginRool: function (data) {
-			// 	//选择图层Layui
-			// 	layui.use(['dropdown', 'util', 'layer', 'table'], function () {
-			// 		var dropdown = layui.dropdown
-			// 			, layer = layui.layer;
-			// 		dropdown.render({
-			// 			elem: '.SelectLayerTool'
-			// 			, data: data
-			// 			, click: function (obj) {
-			// 				layer.tips('选择了:' + obj.title, this.elem, { tips: [1, '#5FB878'] });
-			// 				var dom = $('.SelectLayerTool');
-			// 				dom.empty();
-			// 				var str = `${obj.title} <i class="layui-icon layui-icon-down layui-font-12"></i>`
-			// 				dom.append(str);
-			// 			}
-			// 		});
-			// 	});
-			// },
 			closeToolBox: function (item) {
 				if (item != this.name) {
 					$('.tool-y-box').hide();
@@ -567,6 +573,12 @@
 					topic.publish('closesclippingPlanes');
 				}
 
+				//关闭BOX裁剪
+				if ($(".jimu-widget-BOXTailoring").is(":visible")) {//判断是否隐藏
+					$(".jimu-widget-BOXTailoring").hide();
+					topic.publish('closesBOXTailoring');
+				}
+
 			},
 			onOpen: function () {
 			},

--
Gitblit v1.9.3