From e2c94dcb58b199eb57c164a67f1b038d401063d7 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期二, 22 八月 2023 16:38:35 +0800
Subject: [PATCH] 图层管理属性查询;空间查询下载借款给调试,分屏对比功能修改;

---
 src/assets/js/Map/rightServer.js |  328 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 322 insertions(+), 6 deletions(-)

diff --git a/src/assets/js/Map/rightServer.js b/src/assets/js/Map/rightServer.js
index 9e8fa6c..4c85743 100644
--- a/src/assets/js/Map/rightServer.js
+++ b/src/assets/js/Map/rightServer.js
@@ -1,7 +1,196 @@
-const rightServer = {
+import { getToken } from "@/utils/auth";
+//閰嶇疆鏂囦欢鍦板潃
+import config from "./config";
 
-    AddWmtesLayer(url) {
-        var urlTemplateImageryProvider = DoubleScreen.right.factory.createImageryLayer({
+const rightServer = {
+    layerList: [],
+    addTreeData(treeNode) {
+        if (!treeNode.checked) {
+            this.delLayer(treeNode.id);
+            return;
+        }
+        //鍒ゆ柇鏄惁涓轰唬鐞�
+        if (treeNode.proxy) {
+            this.addProxyAddress(treeNode); //鏈変唬鐞�
+        } else {
+            this.addUrlAddress(treeNode); //鏃犱唬鐞�
+        }
+    },
+    //浠g悊鍦板潃
+    addProxyAddress(res) {
+        //鍒ゆ柇鏁版嵁绫诲瀷
+        switch (res.data) {
+            case 1: //鏁板瓧姝e皠褰卞儚鍥�
+                this.setDataType(res);
+                break;
+            case 2: //鍦烘櫙鍦板舰鏁版嵁
+                this.setTerrainData(res);
+                break;
+            case 3: //鏁板瓧楂樼▼妯″瀷锛堟檿娓插浘锛�
+                this.setDataType(res);
+                break;
+            case 4: //鍗曟尝娈垫爡鏍兼暟鎹�
+                this.setDataType(res);
+                break;
+            case 5: //澶氬厜璋辨爡鏍兼暟鎹�
+                this.setDataType(res);
+                break;
+            case 6: //楂樺厜璋辨爡鏍兼暟鎹�
+                this.setDataType(res);
+                break;
+            case 7: //鐭㈤噺鍥惧眰
+                this.setVectorData(res);
+                break;
+            case 8: //涓夌淮妯″瀷
+                this.setModelData(res);
+                break;
+        }
+    },
+    //鏅�氬湴鍧�
+    addUrlAddress(res) {
+        switch (res.category) {
+            case 0: //鍏朵粬
+                break;
+            case 1: //GisServer
+                this.addProxyAddress(res);
+                break;
+            case 2: //GeoServer
+                this.addGeoServerAddress(res);
+                break;
+            case 3: //鏁扮畝
+                this.addProxyAddress(res);
+                break;
+        }
+    },
+    //Geoserver鏈嶅姟
+    addGeoServerAddress(res) {
+        //鍒ゆ柇鏁版嵁绫诲瀷
+        switch (res.data) {
+            case 1: //鏁板瓧姝e皠褰卞儚鍥�
+                this.setGeoDataType(res);
+                break;
+            case 2: //鍦烘櫙鍦板舰鏁版嵁
+                this.setTerrainData(res);
+                break;
+            case 3: //鏁板瓧楂樼▼妯″瀷锛堟檿娓插浘锛�
+                this.setGeoDataType(res);
+                break;
+            case 4: //鍗曟尝娈垫爡鏍兼暟鎹�
+                this.setGeoDataType(res);
+                break;
+            case 5: //澶氬厜璋辨爡鏍兼暟鎹�
+                this.setGeoDataType(res);
+                break;
+            case 6: //楂樺厜璋辨爡鏍兼暟鎹�
+                this.setGeoDataType(res);
+                break;
+            case 7: //鐭㈤噺鍥惧眰
+                this.setGeoVectorData(res);
+                break;
+            case 8: //涓夌淮妯″瀷
+                this.setModelData(res);
+                break;
+        }
+    },
+    setGeoDataType(res) {
+        switch (res.type) {
+            case 0: //URL
+                break;
+            case 1: //TMS
+                this.setAddTmsLayer(res);
+                break;
+            case 2: //WMTS
+                this.setAddWmtsLayer(res);
+                break;
+            case 3: //WMS
+                this.setAddGeoWmsLayer(res);
+                break;
+        }
+    },
+    setGeoVectorData(res) {
+        switch (res.type) {
+            case 0: //URL
+                break;
+            case 3: //WMS
+                this.setAddGeoWmsLayer(res);
+                break;
+            case 4: //WFS
+                break;
+        }
+    },
+    setDataType(res) {
+        switch (res.type) {
+            case 0: //URL
+                break;
+            case 1: //TMS
+                this.setAddTmsLayer(res);
+                break;
+            case 2: //WMTS
+                this.setAddWmtsLayer(res);
+                break;
+            case 3: //WMS
+                this.setAddWmsLayer(res);
+                break;
+        }
+    },
+
+    setTerrainData(res) {
+        switch (res.type) {
+            case 0: //URL
+                this.setAddTearrinLayer(res);
+                break;
+            case 1: //TMS
+                this.setAddTearrinLayer(res);
+                break;
+        }
+    },
+    setVectorData(res) {
+        switch (res.type) {
+            case 0: //URL
+                break;
+            case 3: //WMS
+                this.setAddWmsLayer(res);
+                break;
+            case 4: //WFS
+                break;
+        }
+    },
+    setModelData(res) {
+        switch (res.type) {
+            case 0: //Tileset
+                this.setAddModelLayer(res);
+                break;
+            case 3: //WMS
+                this.setAddModelLayer(res);
+                break;
+            case 5: //WFS
+                break;
+        }
+    },
+    //鑾峰彇鏈嶅姟鍦板潃
+    getLayrUrl(res) {
+        var url;
+        if (res.proxy) {
+            const token = getToken();
+            url = config.proxy + res.proxy.replaceAll("{token}", token);
+        } else {
+            url = res.url;
+        }
+        return url;
+    },
+    //鍔犺浇TMS鏈嶅姟
+    setAddTmsLayer(res) {
+        var url = this.getLayrUrl(res);
+        var urlTemplateImageryProvider = new Cesium.UrlTemplateImageryProvider({
+            url: url + '/{z}/{x}/{reverseY}.png',
+        });
+        let img_layer = window.rightViewer.imageryLayers.addImageryProvider(urlTemplateImageryProvider);
+        this.layerList.push({ id: res.id, layerData: img_layer, type: "tms" });
+    },
+    //鍔犺浇WMTS鏈嶅姟
+    setAddWmtsLayer(res) {
+        var url = this.getLayrUrl(res);
+        var urlTemplateImageryProvider = new Cesium.WebMapTileServiceImageryProvider({
             sourceType: "wmts",
             url: url,
             layer: "",
@@ -33,9 +222,136 @@
                 ellipsoid: Cesium.Ellipsoid.MOON,
             }),
         });
+        let img_layer = window.rightViewer.imageryLayers.addImageryProvider(urlTemplateImageryProvider);
+        this.layerList.push({
+            id: res.id,
+            layerData: img_layer,
+            type: "wmts",
+        });
+    },
+    //鍔犺浇鍦板舰鏈嶅姟
+    setAddTearrinLayer(res) {
+        this.setChangeTearrinLayer();
+        var url = this.getLayrUrl(res);
+        window.terrainLayer = new Cesium.CesiumTerrainProvider({
+            url: url,
+        });
+        window.rightViewer.terrainProvider = window.terrainLayer;
+        this.layerList.push({ id: res.id, type: "dem" });
+    },
+    //鍔犺浇WMS鏈嶅姟
+    setAddWmsLayer(res) {
+        var url = this.getLayrUrl(res);
+        var img_layer = window.rightViewer.createImageryProvider(
+            "giserver",
+            "wms",
+            {
+                url: url,
+                layers: "",
+                parameters: {
+                    format: "image/png",
+                    transparent: true,
+                },
+            },
+            "0",
+            undefined,
+            true,
+            ""
+        );
+        this.layerList.push({
+            id: res.id,
+            layerData: img_layer,
+            type: "wmts",
+        });
+    },
+    //鍔犺浇妯″瀷鏈嶅姟
+    setAddModelLayer(res) {
+        var url = this.getLayrUrl(res);
+        let tileset = window.rightViewer.scene.primitives.add(
+            new Cesium.Cesium3DTileset({
+                name: res.cnName,
+                url: url,
+                skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false
+                baseScreenSpaceError: 1024,
+                maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16锛屾暟鍊煎姞澶ц兘璁╂渶缁堟垚鍍忓彉妯$硦
+                skipScreenSpaceErrorFactor: 16,
+                skipLevels: 1,
+                immediatelyLoadDesiredLevelOfDetail: false,
+                loadSiblings: true, // 鑷姩浠庝腑蹇冨紑濮嬭秴娓呭寲妯″瀷锛歠alse
+                cullWithChildrenBounds: true, // 浣跨敤瀛愰」杈圭晫浣撶Н鐨勫苟闆嗘潵鍓旈櫎鍥惧潡锛歵rue
+                cullRequestsWhileMoving: true,
+                cullRequestsWhileMovingMultiplier: 10, // 鍊艰秺灏忚兘澶熸洿蹇殑鍓旈櫎锛�60
+                preloadWhenHidden: true,
+                preferLeaves: true, // 棰勮瀛愯妭鐐癸細false
+                maximumMemoryUsage: 768, // 鍐呭瓨鍒嗛厤鍙樺皬鏈夊埄浜庡唴瀛樺洖鏀讹紝鎻愬崌鎬ц兘浣撻獙
+                progressiveResolutionHeightFraction: 0.5, // 鏁板�煎亸浜�0鑳藉璁╁垵濮嬪姞杞藉彉寰楁ā绯�
+                dynamicScreenSpaceErrorDensity: 0.5, // 鏁板�煎姞澶э紝鑳借鍛ㄨ竟鍔犺浇鍙樺揩
+                dynamicScreenSpaceErrorFactor: 2, // 鍔ㄦ�佸睆骞曠┖闂磋宸殑绯绘暟
+                dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse锛屽叏灞忓姞杞藉畬涔嬪悗鎵嶆竻鏅板寲鎴垮眿
+            })
+        );
+        tileset.readyPromise.then((tileset) => {
+            tileset.id = res.id;
+        });
+        this.layerList.push({ id: res.id, layerData: tileset, type: "tileset" });
+    },
+    //鍦板舰绉婚櫎浜嬩欢
+    setChangeTearrinLayer() {
+        this.layerList.forEach((e, i) => {
+            switch (e.type) {
+                case "dem":
+                    window.rightViewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(
+                        {}
+                    );
+                    this.layerList.splice(i, 1);
+                    break;
+            }
+        });
     },
 
+    //娓呴櫎鍥惧眰
+    delLayer(code) {
+        this.layerList.forEach((e, i) => {
+            if (e.id === code) {
+                switch (e.type) {
+                    case "wmts":
+                        window.rightViewer.imageryLayers.remove(e.layerData);
+                        break;
+                    case "tms":
+                        window.rightViewer.imageryLayers.remove(e.layerData);
+                        break;
+                    case "dem":
+                        window.rightViewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(
+                            {}
+                        );
+                        break;
+                    case "tileset":
+                        window.rightViewer.scene.primitives.remove(e.layerData)
+                        break;
+                }
+                this.layerList.splice(i, 1);
+            }
+        });
+    },
+    //鍔犺浇GeoServer-WMS鏈嶅姟
+    setAddGeoWmsLayer(res) {
+        var url = this.getLayrUrl(res);
+        let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({
+            url: url,
+            layers: res.tab,
+            parameters: {
+                transparent: true,
+                format: "image/png",
+                srs: "EPSG:104903",
+                styles: "",
+            },
+            tileWidth: 512,
+            tileHeight: 512,
+        });
+        layer.name = `Wms_Layer${res.id}`;
 
-
-}
-export default rightServer;
\ No newline at end of file
+        let img_layer = window.rightViewer.imageryLayers.addImageryProvider(layer);
+        this.layerList.push({ id: res.id, layerData: img_layer, type: "wmts" });
+    },
+};
+export default rightServer;

--
Gitblit v1.9.3