From c8a1a20ba1ca73bef0cc3bbac652014367d05d75 Mon Sep 17 00:00:00 2001
From: zhanmingkan <496160012@qq.com>
Date: 星期一, 16 五月 2022 19:34:19 +0800
Subject: [PATCH] 完善了shp的 控制开关,利用checkbox ,取消了点击。 完善了颜色参数

---
 assets/js/indexAI.js            |    2 
 view/project/layerAnalysis.html |  132 ++++++++++++++++----------
 assets/map/map3D.js             |    2 
 view/project/shpAdd.html        |  158 ++++++++++++++++---------------
 4 files changed, 166 insertions(+), 128 deletions(-)

diff --git a/assets/js/indexAI.js b/assets/js/indexAI.js
index 44518e1..ee9e591 100644
--- a/assets/js/indexAI.js
+++ b/assets/js/indexAI.js
@@ -139,7 +139,7 @@
             maxmin: false,
             scrollbar: false,
             shadeClose: true, //鐐瑰嚮閬僵鍏抽棴灞�
-            area: ['290px', '340px'],
+            area: ['330px', '380px'],
             resize: false,
             offset: [layerPageStyle.offsetX, layerPageStyle.offsetY],
             content: 'project/shpAdd.html',
diff --git a/assets/map/map3D.js b/assets/map/map3D.js
index 7d997e6..d5d18fa 100644
--- a/assets/map/map3D.js
+++ b/assets/map/map3D.js
@@ -9,6 +9,8 @@
 var userId;
 var userName;
 
+var layerMap=new Map();//瀛樺偍id鍜屽浘灞傜殑index绱㈠紩缁撴瀯
+
 var entityMouseClickListenerIsEnable = true;
 
 var previousTime;//鍦扮悆鏃嬭浆鐨勫弬鏁�
diff --git a/view/project/layerAnalysis.html b/view/project/layerAnalysis.html
index 1df3ed5..81deb1f 100644
--- a/view/project/layerAnalysis.html
+++ b/view/project/layerAnalysis.html
@@ -114,58 +114,7 @@
                                 break;
                             }
                             case "shpFeature": {
-                                let path = data.path;
-                                let shpArray = JSON.parse(path);
-                                var shpPromises = [];
-                                for (let i = 0; i < shpArray.length; i++) {
-                                    shpPromises.push(Cesium.loadBlob(parent.httpConfig.nginxUrl + shpArray[i]));
-                                }
-
-                                var layer = null;
-                                parent.Cesium.when.all(shpPromises, function (files) {
-                                    for (let i = 0; i < shpArray.length; i++) {
-                                        files[i].name = shpArray[i];
-                                    }
-
-                                    var shpProvider = new parent.VectorTileImageryProvider({
-                                        source: files,
-                                        zIndex: 99,
-                                        removeDuplicate: false,
-                                        defaultStyle: {
-                                            outlineColor: "rgb(255,0,0)",
-                                            fillColor: "rgba(255,0,0,0.6)",
-                                            lineWidth: 1,
-                                            fill: false,
-                                            tileCacheSize: 200,
-                                            showMaker: false,
-                                            showCenterLabel: true,
-                                            fontColor: "rgba(255,0,0,1)",
-                                            labelOffsetX: -10,
-                                            labelOffsetY: -5,
-                                            fontSize: 13,
-                                            fontFamily: "榛戜綋",
-                                            centerLabelPropertyName: "NAME",
-                                            lineCap: "round",
-                                            shadowColor: "black",
-                                            shadowOffsetX: 1,
-                                            shadowOffsetY: -1,
-                                            shadowBlur: 1,
-                                            lineJoin: "round"
-                                        },
-                                        maximumLevel: 20,
-                                        minimumLevel: 1,
-                                        simplify: false
-                                    });
-                                    shpProvider.readyPromise.then(function () {
-                                        layer = parent.viewer.imageryLayers.addImageryProvider(shpProvider);
-
-                                        parent.viewer.flyTo(layer);
-                                        parent.Cesium.Camera.DEFAULT_VIEW_RECTANGLE = shpProvider.rectangle;
-
-                                    });
-
-                                });
-
+                                console.log("shpFeature click");                                
 
                             }
                         }
@@ -211,6 +160,85 @@
                     var ischeck = obj.checked;
                     var objData = obj.data;
                     var type = objData.field;
+
+                    if (type == "shpFeature") {//濡傛灉鏄� shp鍥惧眰
+                        if(ischeck){
+                            let data= obj.data.ext;
+                            
+                            let path = data.path;
+                                let shpArray = JSON.parse(path);
+                                var shpPromises = [];
+                                for (let i = 0; i < shpArray.length; i++) {
+                                    shpPromises.push(parent.Cesium.loadBlob(parent.httpConfig.nginxUrl + shpArray[i]));
+                                }
+
+                                //鍒ゆ柇鏄惁瀛樺湪
+                                let len = parent.viewer.imageryLayers.length;
+                                if (parent.layerMap.get(obj.data.id) != null) {
+                                    parent.vMsg.warning("鍥惧眰宸茬粡瀛樺湪鏃犻渶閲嶅鍔犺浇");
+                                    return;
+                                }
+
+                                var layer = null;
+                                parent.Cesium.when.all(shpPromises, function (files) {
+                                    for (let i = 0; i < shpArray.length; i++) {
+                                        files[i].name = shpArray[i];
+                                    }
+    
+                                    var shpProvider = new parent.VectorTileImageryProvider({
+                                        source: files,
+                                        zIndex: len,
+                                        removeDuplicate: false,
+                                        defaultStyle: {
+                                            outlineColor: data.color,
+                                            fillColor: data.color,
+                                            lineWidth: 1,
+                                            fill: false,
+                                            tileCacheSize: 200,
+                                            showMaker: false,
+                                            showCenterLabel: true,
+                                            fontColor: "rgba(255,0,0,1)",
+                                            labelOffsetX: -10,
+                                            labelOffsetY: -5,
+                                            fontSize: 13,
+                                            fontFamily: "榛戜綋",
+                                            centerLabelPropertyName: "NAME",
+                                            lineCap: "round",
+                                            shadowColor: "black",
+                                            shadowOffsetX: 1,
+                                            shadowOffsetY: -1,
+                                            shadowBlur: 1,
+                                            lineJoin: "round"
+                                        },
+                                        maximumLevel: 20,
+                                        minimumLevel: 1,
+                                        simplify: false
+                                    });
+                                    shpProvider.readyPromise.then(function () {
+                                        parent.layerMap.set(obj.data.id, len);
+                                        layer = parent.viewer.imageryLayers.addImageryProvider(shpProvider, len);
+
+                                        parent.viewer.flyTo(layer);
+                                        parent.Cesium.Camera.DEFAULT_VIEW_RECTANGLE = shpProvider.rectangle;
+
+                                    });
+
+                                });
+                        }else{//绉婚櫎shp                         
+                            var id = obj.data.id;
+                            var index = parent.layerMap.get(id);
+                          
+                            parent.viewer.imageryLayers.remove(parent.viewer.imageryLayers.get(index),true);
+                            parent.layerMap.delete(id);
+                            for(let key of  parent.layerMap.keys()){//鏁扮粍鐨勬父鏍�-1
+                                if( parent.layerMap.get(key)>index){
+                                    parent.layerMap.set(key, parent.layerMap.get(key)-1);
+                                }
+                            }
+                        }
+                      
+                    }
+
                     if (type != 'BaseMap' && type != 'Terrain' && type != 'Plotting') {
                         //changeChecked(ischeck, parent.getNodeById(objData.id));
                         /*
diff --git a/view/project/shpAdd.html b/view/project/shpAdd.html
index 1678f21..69b7132 100644
--- a/view/project/shpAdd.html
+++ b/view/project/shpAdd.html
@@ -13,19 +13,10 @@
             margin-top: 5px;
         }
 
-        .text2 {
-            float: left;
-            color: white;
-            font-size: 14px;
-            margin-left: 30px;
-            margin-top: 20px;
-        }
-
-        .labelInput {
-            width: 150px;
+        .input {
+            width: 100%;
+ 
             height: 30px;
-            margin-left: 25px;
-            margin-right: 50px;
             line-height: 40px;
             font-size: 14px;
             text-indent: 8px;
@@ -40,29 +31,10 @@
             color: white;
         }
 
-        .textarea {
-            width: 240px;
-            height: 140px;
-            margin-left: 25px;
-            margin-right: 50px;
-            margin-top: 20px;
-            font-size: 16px;
-            text-indent: 8px;
-            outline: 0;
-            border: none;
-            border-color: #3b403f;
-            /* box-shadow: 0 2px 6px #3a3c42; */
-            border-top-left-radius: 2px;
-            border-bottom-left-radius: 2px;
-            background-color: rgba(63, 72, 84, 0.7);
-            color: white;
-            resize: none;
-        }
 
         .my-save-btn {
-            margin-top: 20px;
             margin-left: 50px;
-            width: 200px;
+            width: 250px;
             height: 30px;
             color: white;
             background-color: rgba(35, 68, 117, 0.85);
@@ -97,6 +69,19 @@
             color: white;
             height: 100px;
         }
+
+        .layui-colorpicker {
+            width: 20px !important;
+            height: 20px !important;
+            border: 1px solid #e6e6e6;
+            padding: 5px;
+            border-radius: 2px;
+            line-height: 24px;
+            display: inline-block;
+            cursor: pointer;
+            transition: all .3s;
+            -webkit-transition: all .3s;
+        }
     </style>
     <link href="../../libs/layui/css/layui.css" rel="stylesheet">
     <script type="text/javascript" src="../../libs/jquery/jquery-3.5.1.min.js"></script>
@@ -105,43 +90,65 @@
 
 <body>
     <div style="margin-top: 20px;">
-        <form class="layui-form" action="">
-            <div>
-                <span class="text">鍚嶅瓧</span>
-                <input id="name" class="labelInput" type="text" placeholder="杈撳叆鍚嶇О" autocomplete="off" />
-            </div>
-            <div>
-                <div style="display:inline-block;margin-top: 20px;margin-left: 30px;color:white">
-                    棰滆壊
+        <form class="layui-form">
+            <div style="height: 40px;width: 100%;margin-top: 10px;">
+                <div
+                    style="width: 20%; float:left;text-align: center;color: white;font-size:14px;line-height: 14px;line-height: 30px;">
+                    鍚嶅瓧:
                 </div>
-                <div id="colorSelect" style="display:inline-block;margin-top: 5px;margin-left: 20px;">
+                <div style="width: 70%; float:left;">
+                    <input id="name" class="input" type="text" placeholder="杈撳叆鍚嶇О" autocomplete="off" />
                 </div>
             </div>
 
-            <div>
-                <div style="display:inline-block;margin-top: 20px;margin-left: 30px;color:white">
-                    绫诲瀷
+            <div style="height:40px;width: 100%;margin-top: 10px;">
+                <div
+                    style="width: 20%; float:left;text-align: center;color: white;font-size:14px;line-height: 14px;line-height: 30px;">
+                    棰滆壊:
                 </div>
-                <div style="display:inline-block;margin-top: 5px;width: 150px;margin-left:  20px;">
-                    <select id="type" lay-verify="required" class="my-select" lay-filter="fontfamily">
+                <div style="width: 70%; float:left;">
+                    <div id="colorSelect" style="display:inline-block;margin-top: 5px;">
+                    </div>
+                </div>
+            </div>
+
+            <div style="height: 40px;width: 100%;margin-top: 10px;">
+                <div
+                    style="width: 20%; float:left;text-align: center;color: white;font-size:14px;line-height: 14px;line-height: 30px;">
+                    绫诲瀷:
+                </div>
+                <div style="width: 70%; float:left;">
+
+                    <select id="type" lay-verify="required" lay-filter="fontfamily" style="margin-top: 10px;">
                         <option value="point">鐐�</option>
                         <option value="line">绾�</option>
                         <option value="polygon">闈�</option>
                     </select>
+
                 </div>
             </div>
-            <div>
-                <span class="text2">鏂囦欢</span>
-                <button type="button" class="layui-btn layui-bg-black"
-                    style="width:150px;height:30px;margin-top:15px;margin-left: 25px;line-height: 30px;float: left;"
-                    id="uploadIcon">
-                    <i class="layui-icon">&#xe67c;</i>涓婁紶shp
-                </button>
-                <input type="hidden" id="path">
-            </div>
-            <br />
 
-            <button class="my-save-btn" onclick="uploadShp()">涓婁紶</button>
+            <div style="height: 40px;width: 100%;margin-top: 10px;">
+                <div style="width: 20%; float:left;text-align: center;color: white;font-size:14px;line-height: 14px;line-height: 30px;">
+                    鏂囦欢
+                </div>
+                <div style="width: 70%; float:left;">
+                    <button type="button" class="layui-btn layui-bg-black"
+                        style="width:150px;height:35px;float: left;" id="uploadIcon">
+                        <i class="layui-icon">&#xe67c;</i>涓婁紶shp
+                    </button>
+                    <input type="hidden" id="path">
+                    <input type="hidden" id="color" value="#ffde06">
+                </div>
+            </div>
+            <div style="width: 100%;margin-top: 10px; color: white;">
+                <div id="tips" style="margin-left: 50px;color: white;font-family: emoji;font-size: 14px;font-style: italic;"></div> 
+            </div>
+            <div style="height: 40px;width: 100%;margin-top: 10px;">
+                <button class="my-save-btn" onclick="uploadShp()">涓婁紶</button>
+            </div>
+
+        
         </form>
     </div>
     <script>
@@ -153,11 +160,15 @@
             var upload = layui.upload;
             colorpicker.render({
                 elem: '#colorSelect',
-                color: "red",
+                color: "#ffde06",
                 size: '20px',
                 done: function (color) {
 
                 },
+                change: function(color){
+                   console.log(color);
+                   $("#color").val(color);
+                }
             });
 
             upload.render({
@@ -166,38 +177,29 @@
                 url: parent.httpConfig.webApiUrl + "landstamp/front/uploadShp",
                 done: function (res) {
                     if (res.code == 0) {
-                        console.log(res.msg);
-                        $("#path").val(res.msg);
+                        $("#path").val(res.url);
+                        $("#tips").html("涓婁紶鏂囦欢:"+res.filename);
 
                     } else {
-                        layui.use('layer', function () {
-                            var layer = layui.layer;
-                            layer.msg(res.msg, { time: 1000 });
-                        });
+                        parent.vMsg.warning(res.msg);
                     }
                 }
             });
-            form.render();
         });
 
         function uploadShp() {
             var name = $("#name").val();
-            var color = $("#colorSelect").val();
+            var color = $("#color").val();
             var type = $("#type").val();
             var path = $("#path").val();
             if (name == "") {
-            
                 parent.vMsg.warning("璇疯緭鍏ュ悕瀛�");
                 return;
             }
-            if(path == ""){
-                layui.use('layer', function () {
-                    var layer = layui.layer;
-                    layer.msg("璇蜂笂浼爏hp鏂囦欢");
-                });
+            if (path == "") {
+                parent.vMsg.warning("璇蜂笂浼爏hp鏂囦欢");
                 return;
             }
-            console.log(name, color, type, path);
             var obj = {
                 "name": name,
                 "color": color,
@@ -209,14 +211,20 @@
             $.ajax({
                 url: parent.httpConfig.webApiUrl + "landstamp/front/saveShp",
                 type: 'POST',
-                contentType: "application/json;charset=utf-8",
+                dataType: "json",   
+                async:false,  
                 data: JSON.stringify(obj),
+                contentType: "application/json;charset=utf-8",
                 beforeSend: function (request) {
                     request.setRequestHeader("token", token);
                 },
                 success: function (result) {
-
                     console.log(result);
+                    if(result.code ==0){
+                        parent.vMsg.warning("涓婁紶鎴愬姛");
+                    }else{
+                        parent.vMsg.warning("涓婁紶澶辫触");
+                    }
                 }
             });
 

--
Gitblit v1.9.1