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