From b7e62ad2625121586b1254dab69b3c3d38da71de Mon Sep 17 00:00:00 2001 From: surprise <15810472099@163.com> Date: 星期二, 31 十月 2023 17:31:10 +0800 Subject: [PATCH] 投影图层修改,在线制图修改 --- src/assets/js/Map/server.js | 184 +++++++++++++++++++++++++++++++++++++--------- 1 files changed, 148 insertions(+), 36 deletions(-) diff --git a/src/assets/js/Map/server.js b/src/assets/js/Map/server.js index c99d8b5..5671f58 100644 --- a/src/assets/js/Map/server.js +++ b/src/assets/js/Map/server.js @@ -2,14 +2,22 @@ //閰嶇疆鏂囦欢鍦板潃 // import config from "../../../../public/config/config"; import store from "@/store"; +import { nextTick } from "vue"; const server = { layerList: [], graticules: null, + alpha: null,//閫忔槑搴� + geoLayer: [], + geoUrl: null, + wmsLayerId: null, addTreeData(treeNode) { - if (!treeNode.checked) { - this.delLayer(treeNode.id); - return; - } + // if (!treeNode.checked) { + // debugger + // this.delLayer(treeNode.id); + // return; + // } + + this.alpha = this.getResLayersAlpha(treeNode); //鍒ゆ柇鏄惁涓轰唬鐞� if (treeNode.proxy) { this.addProxyAddress(treeNode); //鏈変唬鐞� @@ -155,7 +163,8 @@ this.setAddWmtsLayer(res); break; case 3: //WMS - this.setAddWmsLayer(res); + // this.setAddWmsLayer(res); + this.setAddGeoWmsLayer(res) break; } }, @@ -175,7 +184,8 @@ case 0: //URL break; case 3: //WMS - this.setAddWmsLayer(res); + // this.setAddWmsLayer(res); + this.setAddGeoWmsLayer(res) break; case 4: //WFS break; @@ -221,11 +231,13 @@ }, //鍔犺浇WMTS鏈嶅姟 setAddWmtsLayer(res) { + this.delLayer(res.id); var url = this.getLayrUrl(res); - var urlTemplateImageryProvider = earthCtrl.factory.createImageryLayer({ + let urlTemplateImageryProvider = new Cesium.WebMapTileServiceImageryProvider({ sourceType: "wmts", url: url, layer: "", + id: res.id, format: "image/png", tileMatrixSetID: "GoogleCRS84Quad01", tileMatrixLabels: [ @@ -253,12 +265,43 @@ tilingScheme: new Cesium.GeographicTilingScheme({ ellipsoid: Cesium.Ellipsoid.MOON, }), - }); + }) + var imageLayer = window.Viewer.imageryLayers.addImageryProvider(urlTemplateImageryProvider); + imageLayer.id = res.id + + imageLayer.alpha = this.alpha; + // urlTemplateImageryProvider.id = res.id this.layerList.push({ id: res.id, - layerData: urlTemplateImageryProvider._primitive, + layerData: imageLayer, type: "wmts", + alpha: imageLayer, }); + }, + //鑾峰彇鍥惧眰涔嬪墠鐨勯�忔槑搴� + getResLayersAlpha(result) { + var std = this.layerList.filter(res => { + if (res.id == result.id) { + return res; + } + }); + + if (std.length <= 0) { + return 1; + } else { + var id = std[0].id; + var val = null; + var layers = window.Viewer.imageryLayers._layers; + for (var i in layers) { + if (layers[i].id == id) { + val = id; + return layers[i].alpha; + } + } + if (!null) { + return 1 + } + } }, //鍔犺浇鍦板舰鏈嶅姟 setAddTearrinLayer(res) { @@ -276,7 +319,9 @@ }, //鍔犺浇WMS鏈嶅姟 setAddWmsLayer(res) { + var url = this.getLayrUrl(res); + var img_layer = sgworld.Creator.createImageryProvider( "giserver", "wms", @@ -346,10 +391,14 @@ //娓呴櫎鍥惧眰 delLayer(code) { + this.layerList.forEach((e, i) => { if (e.id === code) { switch (e.type) { case "wmts": + window.Viewer.imageryLayers.remove(e.layerData); + break; + case "wms": window.Viewer.imageryLayers.remove(e.layerData); break; case "tms": @@ -371,29 +420,35 @@ delLayerAll() { this.layerList.forEach((e, i) => { - switch (e.type) { - case "wmts": - window.Viewer.imageryLayers.remove(e.layerData); - break; - case "tms": - window.Viewer.imageryLayers.remove(e.layerData); - break; - case "dem": - window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider( - {} - ); - break; - case "tileset": - window.Viewer.scene.primitives.remove(e.layerData); - break; - } + this.setRemoveLayer(e); this.layerList.splice(i, 1); }); }, + setRemoveLayer(e) { + switch (e.type) { + case "wmts": + window.Viewer.imageryLayers.remove(e.layerData); + break; + case "tms": + window.Viewer.imageryLayers.remove(e.layerData); + break; + case "dem": + window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider( + {} + ); + break; + case "tileset": + window.Viewer.scene.primitives.remove(e.layerData); + break; + + } + }, //鍔犺浇GeoServer-WMS鏈嶅姟 - setAddGeoWmsLayer(res) { - var url = this.getLayrUrl(res); + setAddGeoWmsLayer(res, alpha) { + // + var url = res.url; var that = this; + this.delLayer(res.id) var getFeatureInfoFormat = new SmartEarth.Cesium.GetFeatureInfoFormat( "html", null, @@ -401,10 +456,18 @@ that.getFeatureInfo(html); } ); + if (url.indexOf('{token}') > -1) { + const token = getToken(); + url = config.proxy + url.replaceAll("{token}", token); + } else { + url = url; + } + let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({ url: url, layers: res.tab, - getFeatureInfoParameters: { info_format: "text/html" }, + id: res.id, + getFeatureInfoParameters: { info_format: "text/html", srs: "EPSG:104903" }, enablePickFeatures: true, getFeatureInfoFormats: [getFeatureInfoFormat], parameters: { @@ -416,12 +479,16 @@ tileWidth: 512, tileHeight: 512, }); - layer.name = `Wms_Layer${res.id}`; - let img_layer = window.Viewer.imageryLayers.addImageryProvider(layer); + let img_layer = window.Viewer.imageryLayers.addImageryProvider(layer); + img_layer.name = `Wms_Layer${res.id}`; + img_layer.id = res.id + img_layer.alpha = alpha ? alpha : 1; this.layerList.push({ id: res.id, layerData: img_layer, type: "wmts" }); }, addGeoServerMmsLayers(layer, url) { + this.geoLayer = layer; + this.geoUrl = url; var that = this; var getFeatureInfoFormat = new SmartEarth.Cesium.GetFeatureInfoFormat( "html", @@ -430,10 +497,21 @@ that.getFeatureInfo(html); } ); + if (url.indexOf('{token}') > -1) { + const token = getToken(); + url = config.proxy + url.replaceAll("{token}", token); + } else { + url = url; + } + + if (!this.wmsLayerId) { + this.wmsLayerId = new Date(); + } let wmslayer = new SmartEarth.Cesium.WebMapServiceImageryProvider({ url: url, + id: this.wmsLayerId, layers: layer.toString(), - getFeatureInfoParameters: { info_format: "text/html" }, + getFeatureInfoParameters: { info_format: "text/html", srs: "EPSG:104903" }, enablePickFeatures: true, getFeatureInfoFormats: [getFeatureInfoFormat], parameters: { @@ -445,13 +523,47 @@ tileWidth: 512, tileHeight: 512, }); - wmslayer.name = `Wms_Layer_geo`; - let img_layer = window.Viewer.imageryLayers.addImageryProvider(wmslayer); - this.layerList.push({ id: 1001011, layerData: img_layer, type: "wmts" }); - }, + let img_layer = window.Viewer.imageryLayers.addImageryProvider(wmslayer); + img_layer.id = this.wmsLayerId; + this.layerList.push({ id: this.wmsLayerId, layerData: img_layer, type: "wmts" }); + }, + getGeoLayerChangeAlpha(res) { + var std = []; + for (var i in this.geoLayer) { + if (this.geoLayer[i] != res.tab) { + std.push(this.geoLayer[i]) + } + } + this.geoLayer = []; + this.geoLayer = std; + var imageLayers = window.Viewer.imageryLayers._layers; + for (var i in imageLayers) { + if (imageLayers[i].id == this.wmsLayerId) { + + window.Viewer.imageryLayers.remove(imageLayers[i]) + } + } + for (var i in this.layerList) { + if (this.layerList[i].id == this.wmsLayerId) { + this.layerList.splice(i, 1) + } + } + if (this.geoLayer.length > 0) { + this.addGeoServerMmsLayers(this.geoLayer, this.geoUrl) + } + this.setAddGeoWmsLayer(res); + for (var i in this.layerList) { + if (this.layerList[i].id == res.id) { + return { + id: i, + layer: this.layerList[i] + }; + break; + } + } + }, getFeatureInfo(html) { - store.state.details.showDetails = false; var start = html.indexOf('<caption class="featureInfo">') + '<caption class="featureInfo">'.length; -- Gitblit v1.9.3