From 384fe106ad1efd66ef0910a824bff907322570ea Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期四, 17 八月 2023 15:09:37 +0800 Subject: [PATCH] 图层管理,数据类行加载方式修改 --- src/assets/js/Map/server.js | 488 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 301 insertions(+), 187 deletions(-) diff --git a/src/assets/js/Map/server.js b/src/assets/js/Map/server.js index 4a127a7..c1064af 100644 --- a/src/assets/js/Map/server.js +++ b/src/assets/js/Map/server.js @@ -9,192 +9,204 @@ this.delLayer(treeNode.id); return; } - // WMTS -> 鍥剧墖 - // DOM\DEM 褰╄壊\榛戠櫧 - - // TMS -> DOM銆丏EM - // DOM->鍥剧墖 - // DEM -> Terrain - - // URL -> URL - // TMS -> URL DOM DEM - // WMTS -> URL DOM DEM - // WMS -> URL - // WFS -> URL - // Tileset -> URL` - //comment on table lf.sys_res is '璧勬簮琛�'; - // comment on column lf.sys_res.id is '涓婚敭ID'; - // comment on column lf.sys_res.pid is '鐖禝D锛�0-鏍硅妭鐐�'; - // comment on column lf.sys_res.cn_name is '涓枃鍚嶇О'; - // comment on column lf.sys_res.en_name is '鑻辨枃鍚嶇О'; - // comment on column lf.sys_res.type is '绫诲瀷锛�1-鍥惧眰缁�,2-鏅�氬浘灞�,3-浠g悊鍥惧眰'; - // comment on column lf.sys_res.status is '鐘舵�侊細-1-搴熷純锛�0-鍋滅敤锛�1-鍚敤'; - // comment on column lf.sys_res.category is '绫诲瀷锛�0-URL锛�1-TMS锛�2-WMTS锛�3-WFS锛�4-Tileset'; - // comment on column lf.sys_res.firm is '鍘傚晢锛�0-鍏朵粬锛�1-GisServer锛�2-GeoServer锛�3-鏁扮畝'; - // comment on column lf.sys_res.url is '鏈嶅姟鍦板潃'; - // comment on column lf.sys_res.test is '娴嬭瘯鍦板潃'; - // comment on column lf.sys_res.proxy is '浠g悊鍦板潃'; - // comment on column lf.sys_res.descr is '鎻忚堪'; - // comment on column lf.sys_res.depid is '鍗曚綅缂栫爜'; - // comment on column lf.sys_res.dirid is '椤圭洰缂栫爜'; - // comment on column lf.sys_res.img is '缂╃暐鍥�'; - // comment on column lf.sys_res.level is '灞傜骇锛�0-鏍硅妭鐐�'; - // comment on column lf.sys_res.sort is '鎺掑簭'; - // comment on column lf.sys_res.create_user is '鍒涘缓浜篒D'; - // comment on column lf.sys_res.create_time is '鍒涘缓鏃堕棿'; - // comment on column lf.sys_res.update_user is '鏇存柊浜篒D'; - // comment on column lf.sys_res.update_time is '鏇存柊鏃堕棿'; - // comment on column lf.sys_res.bak is '澶囨敞'; - // 浠g悊锛�/proxy/{token}/4 - // 鍦板潃锛歨ttp://192.168.20.83:8088/MoonServer + proxy.replace("{token}", token) - // order_num -> sort - // serve_type -> category - - // switch (treeNode.type) { - // case 1: - // treeNode.useUrl = treeNode.url; - // break; - // case 2: - // treeNode.useUrl = treeNode.url; - // break; - // case 3: - // treeNode.useUrl = treeNode.url; - // // var token = getToken(); - // // treeNode.useUrl = BASE_URL + treeNode.proxy.replace("{token}", token); - // break; - // } - - - - if (treeNode.resid && treeNode.resid > 0) { - + //鍒ゆ柇鏄惁涓轰唬鐞� + if (treeNode.proxy) { + this.addProxyAddress(treeNode);//鏈変唬鐞� } else { - console.log(treeNode) + 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; } - this.addGisServer(treeNode); - // if (treeNode.firm == 2) { - // this.addGeoServer(treeNode); - // } else { - // this.addGisServer(treeNode); - // } }, - //娓呴櫎鍥惧眰 - delLayer(code) { - this.layerList.forEach((e, i) => { - if (e.id === code) { - switch (e.type) { - case "wmts": - window.Viewer.imageryLayers.remove(e.layerData.item); - break; - case "tms": - - window.Viewer.imageryLayers.remove(e.layerData.item); - break; - case "dem": - window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider( - {} - ); - break; - } - this.layerList.splice(i, 1); - } - }); - }, - addGisServer(treeNode) { - // 0-URL锛�1-TMS锛�2-WMTS锛�3-WFS锛�4-Tileset'; - //鍒ゆ柇鏈嶅姟鏄惁宸插瓨鍦� - var service = []; - if (this.layerList.length > 0) { - service = this.layerList.filter((res) => { - if (res.id == treeNode.id) { - return res - } - }) + //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; } - if (service.length > 0) return - var url = null; - if (treeNode.useUrl && treeNode.useUrl.indexOf('{token}') > -1) { + }, + setGeoDataType() { + 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.BASE_URL + treeNode.proxy.replaceAll("{token}", token) + url = config.proxy + res.proxy.replaceAll("{token}", token) } else { - url = treeNode.useUrl + url = res.url; } - switch (treeNode.type) { - case 1: - this.AddTmsLayer(url, treeNode.data, treeNode.id); - break; - case 2: - this.AddWmtesLayer(url, treeNode.id); - break; - case 3: - break; - case 4: - break; - } + return url }, - addGeoServer(treeNode) { - // 0-URL锛�1-TMS锛�2-WMTS锛�3-WFS锛�4-Tileset'; - switch (treeNode.type) { - case 1: - break; - case 2: - this.AddGeoWmsLayer(treeNode.useUrl, treeNode.id, treeNode.tab); - break; - case 3: - break; - case 4: - break; - } - }, - //娣诲姞geoserver鏈嶅姟wms鏈嶅姟 - AddGeoWmsLayer(url, id, tab) { - let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({ - // url: "http://192.168.22.198:8090/geoserver/moon/wms", - url: url, - layers: tab, - parameters: { - transparent: true, - format: "image/png", - srs: "EPSG:104903", - styles: "", + //鍔犺浇TMS鏈嶅姟 + setAddTmsLayer(res) { + var url = this.getLayrUrl(res) + let img_layer = earthCtrl.Creator.createUrlTemplateImageryProvider( + "tms鏈嶅姟", + { + url: Cesium.buildModuleUrl(url + "/{z}/{x}/{y}.png"), }, - tileWidth: 512, - tileHeight: 512, - }); - layer.name = `Wms_Layer${id}`; - - let img_layer = Viewer.imageryLayers.addImageryProvider(layer); - this.layerList.push({ id: id, layerData: img_layer, type: "wmts" }); + "0", + undefined, + true, + "" + ); + this.layerList.push({ id: res.id, layerData: img_layer, type: "tms" }); }, - //娣诲姞GisServer鏈嶅姟TMS鍒囩墖鏈嶅姟 - AddTmsLayer(url, data, id) { - // var urlTemplateImageryProvider = new SmartEarth.Cesium.UrlTemplateImageryProvider({ - // url: url + "/{z}/{x}/{y}.png" - // }); - // Viewer.imageryLayers.addImageryProvider(urlTemplateImageryProvider); - - if (data == '0' || data == '1') { - let img_layer = earthCtrl.Creator.createUrlTemplateImageryProvider( - "tms鏈嶅姟", - { - url: Cesium.buildModuleUrl(url + "/{z}/{x}/{y}.png"), - }, - "0", - undefined, - true, - "" - ); - this.layerList.push({ id: id, layerData: img_layer, type: "tms" }); - } else if (data == '2') { - window.terrainLayer = new Cesium.CesiumTerrainProvider({ - url: url - }); - Viewer.terrainProvider = window.terrainLayer - this.layerList.push({ id: id, type: "dem", }); - } - }, - AddWmtesLayer(url, id) { + //鍔犺浇WMTS鏈嶅姟 + setAddWmtsLayer(res) { + var url = this.getLayrUrl(res) var urlTemplateImageryProvider = earthCtrl.factory.createImageryLayer({ sourceType: "wmts", url: url, @@ -227,25 +239,127 @@ ellipsoid: Cesium.Ellipsoid.MOON, }), }); - console.log(urlTemplateImageryProvider); this.layerList.push({ - id: id, + id: res.id, layerData: urlTemplateImageryProvider._primitive, type: "wmts", }); }, - AddDemLayer(url, id) { - var terrain = new Cesium.CesiumTerrainProvider({ - url: config.moonTerrain, - // url: url, - tilingScheme: new Cesium.GeographicTilingScheme({ - ellipsoid: Cesium.Ellipsoid.MOON, - }), + //鍔犺浇鍦板舰鏈嶅姟 + setAddTearrinLayer(res) { + this.setChangeTearrinLayer(); + var url = this.getLayrUrl(res) + window.terrainLayer = new Cesium.CesiumTerrainProvider({ + url: url }); - window.Viewer.terrainProvider = terrain; + Viewer.terrainProvider = window.terrainLayer + this.layerList.push({ id: res.id, type: "dem", }); + }, + //鍔犺浇WMS鏈嶅姟 + setAddWmsLayer(res) { + var url = this.getLayrUrl(res) + var img_layer = sgworld.Creator.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", + }); - // let img_layer = Viewer.imageryLayers.addImageryProvider(layer); - this.layerList.push({ id: id, type: "dem" }); + }, + //鍔犺浇妯″瀷鏈嶅姟 + setAddModelLayer(res) { + var url = this.getLayrUrl(res); + let tileset = Viewer.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; + }); + }, + //鍦板舰绉婚櫎浜嬩欢 + setChangeTearrinLayer() { + this.layerList.forEach((e, i) => { + switch (e.type) { + case "dem": + window.Viewer.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": + debugger + 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 "": + 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}`; + let img_layer = window.Viewer.imageryLayers.addImageryProvider(layer); + this.layerList.push({ id: res.id, layerData: img_layer, type: "wmts" }); }, }; export default server; -- Gitblit v1.9.3