From 369d44cc36c599b5ad9d66d78a8d4a18d4575e7a Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 23 五月 2023 17:53:08 +0800 Subject: [PATCH] 1 --- src/views/Tools/LayerTree.vue | 545 +++++++++++++++++++++++------------------------------- 1 files changed, 235 insertions(+), 310 deletions(-) diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue index 69a3552..c46ef63 100644 --- a/src/views/Tools/LayerTree.vue +++ b/src/views/Tools/LayerTree.vue @@ -180,7 +180,7 @@ } let checkKey = [], checkedLayers = []; - var layers = data.result.filter((lyr) => { + let layers = data.result.filter((lyr) => { if (lyr.url && lyr.type == 2 && lyr.isShow == 1) { checkKey.push(lyr.id); if (lyr.serveType == "WMS") checkedLayers.push(lyr); @@ -247,7 +247,7 @@ showLayerAttribute (data) { this.rmListener(); this.currentData = data ? data : this.currentData; - var layer = this.currentData.enName.replaceAll("_", ""); + let layer = this.currentData.enName.replaceAll("_", ""); this.$store.state.mapSpaceQueryLayer = layer; this.$store.state.showPopBoxFlag = true; this.$store.state.mapPopBoxFlag = "2"; @@ -256,7 +256,7 @@ async positioning () { this.rmListener(); if (["Tileset", "3DML"].indexOf(this.currentData.serveType) > -1) { - for (var i in Viewer.scene.primitives._primitives) { + for (let i in Viewer.scene.primitives._primitives) { if (Viewer.scene.primitives._primitives[i].id == this.currentData.cnName) { Viewer.flyTo(Viewer.scene.primitives._primitives[i]); break; @@ -266,10 +266,10 @@ } if (["TMS", "DOM", "DEM"].indexOf(this.currentData.serveType) > -1 && this.currentData.pubid) { - var data = await comprehensive_selectPubById({ id: this.currentData.pubid }); + let data = await comprehensive_selectPubById({ id: this.currentData.pubid }); if (data.result && data.result.geom) { - var wkt = this.$wkt.parse(data.result.geom); - var height = this.getHeight(wkt.coordinates[2]); + let wkt = this.$wkt.parse(data.result.geom); + let height = this.getHeight(wkt.coordinates[2]); Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), // 2000 }); @@ -284,7 +284,7 @@ // 閽诲瓟鏌辩姸鍥� async histogram () { this.rmListener(); - var layer = this.currentData.enName.replaceAll("_", ""); + let layer = this.currentData.enName.replaceAll("_", ""); this.$store.state.mapSpaceQueryLayer = layer; this.$store.state.mapPopBoxFlag = "2"; this.$store.state.showPopBoxFlag = true; @@ -292,7 +292,7 @@ // 閫忔槑搴� pellucidity () { this.rmListener(); - for (var j in Viewer.scene.primitives._primitives) { + for (let j in Viewer.scene.primitives._primitives) { if (Viewer.scene.primitives._primitives[j].id == this.currentData.cnName) { this.$store.state.setAlphaDity = this.currentData; this.$bus.$emit("showPellucidity", true); @@ -346,7 +346,7 @@ getNodes (data, arr) { if (data.children) { for (let i = 0, c = data.children.length; i < c; i++) { - var node = data.children[i]; + let node = data.children[i]; if (node.children) { this.getNodes(node, arr) } else { @@ -359,10 +359,9 @@ }, // 鑾峰彇鑺傜偣ID getCheckNodesIds () { - var nodes = this.$refs.tree.getCheckedNodes(); - - var ids = []; - for (var i in nodes) { + let nodes = this.$refs.tree.getCheckedNodes(); + let ids = []; + for (let i in nodes) { ids.push(nodes[i].id); } @@ -370,28 +369,28 @@ }, // 鍒囨崲WMS鏈嶅姟 setChangeWMS (layers, checked) { - var value = this.$refs.tree.getCheckedNodes(); + let value = this.$refs.tree.getCheckedNodes(); this.$bus.$emit("showMenuLayer", value); }, // 鍒囨崲Tileset setChangeTileset (layers, checked) { let ids = this.getCheckNodesIds(), arr = []; - for (var i in layers) { - var layer = layers[i]; + for (let k in layers) { + let layer = layers[k]; if (ids.indexOf(layer.id) > -1) { arr.push(layer); continue; } - for (var j in Viewer.scene.primitives._primitives) { + for (let j in Viewer.scene.primitives._primitives) { if (Viewer.scene.primitives._primitives[j].id == layer.cnName) { Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]); break; } } - var list = this.$store.state.setAlphaList; - for (var i = 0; i < list.length; i++) { + let list = this.$store.state.setAlphaList; + for (let i = 0; i < list.length; i++) { if (list[i].name == layer.cnName) { list.splice(i, 1); } @@ -402,19 +401,69 @@ }, // 娣诲姞Tileset鍥惧眰 addTilesetLayers (layers) { - // + for (let i in layers) { + let res = layers[i]; + let url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : modelUrl + "/" + res.url; + + 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: 512, // 鍐呭瓨鍒嗛厤鍙樺皬鏈夊埄浜庡唴瀛樺洖鏀讹紝鎻愬崌鎬ц兘浣撻獙 + progressiveResolutionHeightFraction: 0.5, // 鏁板�煎亸浜�0鑳藉璁╁垵濮嬪姞杞藉彉寰楁ā绯� + dynamicScreenSpaceErrorDensity: 0.5, // 鏁板�煎姞澶э紝鑳借鍛ㄨ竟鍔犺浇鍙樺揩 + dynamicScreenSpaceErrorFactor: 2, // 鍔ㄦ�佸睆骞曠┖闂磋宸殑绯绘暟 + dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse锛屽叏灞忓姞杞藉畬涔嬪悗鎵嶆竻鏅板寲鎴垮眿 + }) + ); + tileset.readyPromise.then((tileset) => { + tileset.id = res.cnName; + tileset.layerId = res.id; + tileset.pubid = res.pubid; + + if (res.serveType != '3DML') { + // Cesium.Matrix4.equals(a,b) 鍒ゆ柇鐭╅樀鏄惁鐩哥瓑锛屾暣涓牴鑺傜偣妯″瀷鐭╅樀锛岃tileSet=>涓栫晫鍧愭爣绯伙紝鍗曚綅鐭╅樀瀵硅绾垮�间负1.0鐨�4*4鐭╅樀 + if (!Cesium.Matrix4.equals(tileset.root.transform, Cesium.Matrix4.IDENTITY)) { + // 鑾峰彇妯″瀷鐨勪笘鐣屽潗鏍�(绗涘崱灏�)锛孋esium.Matrix4.getTranslation 閫氳繃浠垮皠鍙樻崲鐭╅樀鑾峰彇璇ileSet鐨勪笘鐣屽潗鏍� + const transformCenter = Cesium.Matrix4.getTranslation(tileset.root.transform, new Cesium.Cartesian3()); + // 灏嗙瑳鍗″皵鍧愭爣杞崲涓篧GS84缁忕含搴﹀潗鏍囷紙妯″瀷鐨勶級 + const transformCartographic = Cesium.Cartographic.fromCartesian(transformCenter); + // 灏嗙瑳鍗″皵鍧愭爣杞崲涓篧GS84缁忕含搴﹀潗鏍囷紙鎴潰鐨勶級 + const boundingSphereCartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center); + const height = boundingSphereCartographic.height - transformCartographic.height; + // 浠庝竴涓狢artesian3瀵硅薄鐢熸垚Matrix4鍙樻崲鐭╅樀锛堣鍒囬潰鐨勶級 + window.modelHeight = height; + } else { + window.modelHeight = 0; + } + this.setTilesetArgs(tileset, res); + } + }); + } }, // 鍒囨崲TMS setChangeTMS (layers, checked) { let ids = this.getCheckNodesIds(), arr = []; - for (var i in layers) { - var layer = layers[i]; + for (let j in layers) { + let layer = layers[j]; if (ids.indexOf(layer.id) > -1) { arr.push(layer); continue; } - for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { + for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { if (window.Viewer.imageryLayers._layers[i].name == layer.cnName) { window.Viewer.imageryLayers.remove(window.Viewer.imageryLayers._layers[i]); break; @@ -424,21 +473,37 @@ if (arr.length) this.addTMSLayers(arr); }, - // 娣诲姞Tile鍥惧眰 + // 娣诲姞TMS鍥惧眰 addTMSLayers (layers) { - // + let url = res.url; + if (res.url.indexOf("{host}") != -1) { + url = res.url.replace("{host}", iisHost); + } + + if (res.pubid) { + this.setQueryPubid(res); + } else { + let layer = Viewer.imageryLayers.addImageryProvider( + new Cesium.UrlTemplateImageryProvider({ + url: url, + maximumLevel: 22, + }) + ); + layer.name = res.cnName; + this.setChangeWMS(); + } }, // 鍒囨崲Mpt setChangeMpt (layers, checked) { let ids = this.getCheckNodesIds(), arr = []; - for (var i in layers) { - var layer = layers[i]; + for (let j in layers) { + let layer = layers[j]; if (ids.indexOf(layer.id) != -1) { arr.push(layer); continue; } - for (var i in this.mptLayer) { + for (let i in this.mptLayer) { if (this.mptLayer[i].treeobj.name == layer.cnName) { this.mptLayer[i].deleteObject(); this.mptLayer.splice(i, 1); @@ -450,229 +515,100 @@ }, // 娣诲姞Mpt鍥惧眰 addMptLayers (layers) { - // + if (res.url.indexOf("{host}") != -1) { + res.url = res.url.replace("{host}", iisHost); + } + let url = res.url.split(';') + + let layer = sgworld.Creator.createImageryProvider(res.cnName, "wms", { + url: url[0], + layers: url[1] + }, "0", undefined, true, ""); + this.mptLayer.push(layer) + setTimeout(() => { + this.setChangeWMS(); + }, 500); }, // 鍒囨崲DEM setChangeDEM (layers, checked) { - let ids = this.getCheckNodesIds(), arr = [], isDel = false; - for (var i in layers) { - var layer = layers[i]; + let ids = this.getCheckNodesIds(), arr = [], isDel = false, useSG = false; + for (let i in layers) { + let layer = layers[i]; if (ids.indexOf(layer.id) != -1) { arr.push(layer.url); continue; } - // 鍒犻櫎DEM - if (window.Viewer.terrainProvider._layers[0].resource._url == layer.url) { - isDel = true; - } + if (window.Viewer.terrainProvider._layers[0].resource._url == layer.url) isDel = true; // 鍒犻櫎DEM } - if (!arr.length && isDel) arr.push(demLayer); - if (arr.length) this.addDEMLayers(arr[0]); + if (!arr.length && isDel) useSG = true; // demLayer + if (arr.length) this.addDEMLayers(arr[0], useSG); }, // 娣诲姞DEM鍥惧眰 - addDEMLayer (url) { - Viewer.terrainLayer = new Cesium.CesiumTerrainProvider({ - url: url, - requestVertexNormals: true - }); - }, - async setAddLayers (res) { - if (res.serveType == "WMS") { - var resource = geoServerURl; - if (res.resource != null && res.resource != undefined) { - resource = res.resource; - } - var imageryLayers = window.Viewer.scene.imageryLayers; - let layerWMS = new Cesium.WebMapServiceImageryProvider({ - url: resource, - layers: res.url, - parameters: { - transparent: true, - format: "image/png", - srs: "EPSG:4490", - styles: "", - }, - tileWidth: 512, - tileHeight: 512, - }); - layerWMS.name = res.cnName; - //閫忔槑搴� - var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS); - if (res.opacity) { - tdtAnnoLayer.alpha = parseInt(res.opacity) / 100; - } - var layer2 = new Image({ - name: res.cnName, - source: new ImageWMS({ - crossOrigin: "anonymous", - url: resource, - params: { - FORMAT: "image/png", - VERSION: "1.1.1", - LAYERS: res.url, - }, - }), - }); - if (res.opacity) { - layer2.setOpacity(parseInt(res.opacity) / 100); - } - window.map.addLayer(layer2); - } else if (res.serveType == "WFS") { - var url = - res.resource + - "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + - res.url + - "&outputFormat=application%2Fjson"; - $.ajax({ - url: url, - cache: false, - async: true, - success: function (data) { - var datasource = Cesium.GeoJsonDataSource.load(data, { - stroke: Cesium.Color.YELLOW, - fill: Cesium.Color.YELLOW.withAlpha(0.1), - alpha: 0.1, - strokeWidth: 8, - clampToGround: true, //鏄惁璐村湴 - }); - datasource.then((data) => { - data.name = res.cnName; - window.Viewer.dataSources.add(data); - }); - }, - error: function (data) { - console.log("error"); - }, - }); - var vectorLayer = new VectorLayer({ - name: res.cnName, - source: new VectorSource({ - url: url, - format: new GeoJSON(), - }), - }); - window.map.addLayer(vectorLayer); - } else if (res.serveType == "Tileset" || res.serveType == "3DML") { - var url; - if (res.url.indexOf("{host}") != -1) { - url = res.url.replace("{host}", iisHost); - } else { - url = modelUrl + "/" + res.url - } - var tileset = Viewer.scene.primitives.add( - new Cesium.Cesium3DTileset({ - name: res.cnName, - url: url, //192.168.20.106,to4 - maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16 - maximumMemoryUsage: 768, // 鏈�澶у唴瀛橈細512 - dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse - skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false - }) - ); - - tileset.readyPromise.then((tileset) => { - tileset.id = res.cnName; - tileset.layerId = res.id; - tileset.pubid = res.pubid; - if (res.serveType != '3DML') { - - // Cesium.Matrix4.equals(a,b)鍒ゆ柇涓や釜鍥涚淮鐭╅樀鏄惁鐩哥瓑 - // 鏁翠釜鏍硅妭鐐规ā鍨嬬煩闃碉紝璇ileSet=>涓栫晫鍧愭爣绯� - // 鍗曚綅鐭╅樀锛屽瑙掔嚎鍊间负1.0鐨�4*4鐭╅樀 - if (!Cesium.Matrix4.equals(tileset.root.transform, Cesium.Matrix4.IDENTITY)) { - // 鑾峰彇妯″瀷鐨勪笘鐣屽潗鏍�(绗涘崱灏�) - // Cesium.Matrix4.getTranslation 閫氳繃浠垮皠鍙樻崲鐭╅樀鑾峰彇璇ileSet鐨勪笘鐣屽潗鏍� - const transformCenter = Cesium.Matrix4.getTranslation( - tileset.root.transform, - new Cesium.Cartesian3() - ); - // 灏嗙瑳鍗″皵鍧愭爣杞崲涓篧GS84缁忕含搴﹀潗鏍囷紙妯″瀷鐨勶級 - const transformCartographic = Cesium.Cartographic.fromCartesian( - transformCenter - ); - // 灏嗙瑳鍗″皵鍧愭爣杞崲涓篧GS84缁忕含搴﹀潗鏍囷紙鎴潰鐨勶級 - const boundingSphereCartographic = Cesium.Cartographic.fromCartesian( - tileset.boundingSphere.center - ); - const height = boundingSphereCartographic.height - transformCartographic.height; - // 浠庝竴涓狢artesian3瀵硅薄鐢熸垚Matrix4鍙樻崲鐭╅樀锛堣鍒囬潰鐨勶級 - window.modelHeight = height; - } else window.modelHeight = 0; - this.getTilesetArgs(tileset, res); - } - }); - this.$store.state.setAlphaList.push({ - name: res.cnName, - alpha: 1 - }) - window.model = tileset - } else if (res.serveType == "TMS") { - var url = res.url; - if (res.url.indexOf("{host}") != -1) { - url = res.url.replace("{host}", iisHost); - } - - if (res.pubid) { - this.setQueryPubid(res); - } else { - - var layer = Viewer.imageryLayers.addImageryProvider( - new Cesium.UrlTemplateImageryProvider({ - url: url, - maximumLevel: 22, - }) - ); - layer.name = res.cnName; - this.setChangeWMS(); - } - - } else if (res.serveType == "Mpt") { - - if (res.url.indexOf("{host}") != -1) { - res.url = res.url.replace("{host}", iisHost); - } - var url = res.url.split(';') - - var layer = sgworld.Creator.createImageryProvider(res.cnName, "wms", { - url: url[0], - layers: url[1] - }, "0", undefined, true, ""); - this.mptLayer.push(layer) - setTimeout(() => { - this.setChangeWMS(); - }, 500); - } - }, - async getTilesetArgs (tileset, res) { - if (res.pubid > 0) { - const data = await comprehensive_selectPubById({ id: res.pubid }) - if (data.code != 200) { - // - } else { - if (res.serveType != '3DML') { - this.reload(tileset, data.result.json) - } else { - this.tileSet(tileset, parseFloat(res.elev)) - } - } + addDEMLayer (url, useSG) { + if (useSG) { + let option = { + url: window.sceneConfig.SGUrl, + layerName: window.sceneConfig.mptName, + requestVertexNormals: true + }; + window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); } else { - this.tileSet(tileset, parseFloat(res.elev)) + window.terrainLayer = new Cesium.CesiumTerrainProvider({ + url: url, + requestVertexNormals: true + }); } + Viewer.terrainProvider = terrainLayer; + }, + // 璁剧疆Tileset鍙傛暟 + async setTilesetArgs (tileset, res) { + if (res.serveType == '3DML' || !res.pubid) { + this.setTilesetHeigth(tileset, parseFloat(res.elev)); + return; + } + + const data = await comprehensive_selectPubById({ id: res.pubid }) + if (data.code == 200) this.setTilesetCoord(tileset, data.result.json); + }, + // 璁剧疆Tileset楂樺害 + setTilesetHeigth (tileset, height) { + //3dtile妯″瀷鐨勮竟鐣岀悆浣� + let boundingSphere = tileset.boundingSphere; + //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛� + let cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center); + //鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�=>杩崱灏旂┖闂寸洿瑙掑潗鏍� + let Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height); + let Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height); + //鑾峰緱鍦伴潰鍜宱ffset鐨勮浆鎹� + let translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3()); + //淇敼妯″瀷鐭╅樀 + tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); + // Viewer.flyTo(tileset); + }, + // 璁剧疆Tileset鍧愭爣 + setTilesetCoord (tileset, json) { + let vm = JSON.parse(json); + let pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height); + let converter = Cesium.Transforms.eastNorthUpToFixedFrame; + let hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0); + let matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter); + tileset._root.transform = matrix; + // Viewer.flyTo(tileset); }, async setQueryPubid (res) { const data = await comprehensive_selectPubById({ id: res.pubid }) if (data.code != 200) { // } else { - var url = data.result.url; + let url = data.result.url; if (res.url.indexOf("{host}") != -1) { url = res.url.replace("{host}", iisHost); } - var min = data.result.min; - var max = data.result.max; - var layer; + let min = data.result.min; + let max = data.result.max; + let layer; if (max > 0) { layer = Viewer.imageryLayers.addImageryProvider( new Cesium.UrlTemplateImageryProvider({ @@ -692,7 +628,7 @@ layer.name = res.cnName; if (data.result.geom) { - // var wkt = this.$wkt.parse(data.result.geom); + // let wkt = this.$wkt.parse(data.result.geom); // Viewer.camera.flyTo({ // destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000), // }); @@ -700,46 +636,23 @@ this.setChangeWMS(); } }, - reload (tileset, res) { - var vm = JSON.parse(res) - var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height); - var converter = Cesium.Transforms.eastNorthUpToFixedFrame; - var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0); - var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter); - tileset._root.transform = matrix; - // Viewer.flyTo(tileset); - }, - tileSet (tileset, height) { - //3dtile妯″瀷鐨勮竟鐣岀悆浣� - var boundingSphere = tileset.boundingSphere; - //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛� - var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center); - //鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�=>杩崱灏旂┖闂寸洿瑙掑潗鏍� - var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height); - var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height); - //鑾峰緱鍦伴潰鍜宱ffset鐨勮浆鎹� - var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3()); - //淇敼妯″瀷鐭╅樀 - tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); - // Viewer.flyTo(tileset); - }, async setproChange (res) { if (res) { this.setCheeckedLayer = this.$refs.tree.getCheckedKeys(); this.$store.state.pigCode = res; - var st_code = this.optionts.filter(rs => { + let st_code = this.optionts.filter(rs => { if (rs.code == res) { return rs } }) - var val = this.$store.state.oldTree.filter(rs => { + let val = this.$store.state.oldTree.filter(rs => { if (rs.enName == st_code[0].code) { return rs } }) this.removeAllLayer(); - var obj = { + let obj = { dirid: res, pageIndex: 1, pageSize: 10, @@ -752,29 +665,29 @@ } if (data.result[0]) { - var geom = data.result[0].geom + let geom = data.result[0].geom if (geom) { - var wkt = this.$wkt.parse(geom) + let wkt = this.$wkt.parse(geom) Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0].toFixed(6), wkt.coordinates[1].toFixed(6), 5000), }); } } - this.cannelTerrainLayer(); - this.setTerrainMptLayer(); + //this.cannelTerrainLayer(); + //this.setTerrainMptLayer(); //娓呯┖鍥惧眰鏍戦�変腑鐘舵�� this.$refs.tree.setCheckedKeys([]); if (val.length > 0) { if (val[0].type == 1 && val[0].isProject == 1) {//椤圭洰鍒嗙被 - var std_check = []; - for (var i in val) { - var std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], []) - for (var j in std_val) { + let std_check = []; + for (let i in val) { + let std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], []) + for (let j in std_val) { std_check.push(std_val[j]) } } - var value = this.$store.state.isProjectLayer; - for (var i in value) { + let value = this.$store.state.isProjectLayer; + for (let i in value) { std_check.push(value[i]) } @@ -789,50 +702,50 @@ this.removeAllLayer(); this.$store.state.pigCode = null; this.$refs.tree.setCheckedKeys(this.setCheeckedLayer); - var std = []; - for (var i in this.setCheeckedLayer) { + let std = []; + for (let i in this.setCheeckedLayer) { std.push(this.$refs.tree.getNode(this.setCheeckedLayer[i]).data) } this.setProjectLayer(std); } }, removeAllLayer () { - for (var j in Viewer.scene.primitives._primitives) { + for (let j in Viewer.scene.primitives._primitives) { Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]) } - for (var i in window.Viewer.dataSources._dataSources) { + for (let i in window.Viewer.dataSources._dataSources) { window.Viewer.dataSources.remove( window.Viewer.dataSources._dataSources[i] ); } - for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { - var val_id = window.Viewer.imageryLayers._layers[i].id; + for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { + let val_id = window.Viewer.imageryLayers._layers[i].id; if (val_id == 'TMS') { window.Viewer.imageryLayers.remove( window.Viewer.imageryLayers._layers[i] ); } } - for (var i in this.mptLayer) { + for (let i in this.mptLayer) { this.mptLayer[i].deleteObject(); this.mptLayer.splice(i, 1) } this.mptLayer = []; }, setProjectLayer (res) { - var layerid = []; - for (var i in res) { - layerid.push(res[i].id) + let layerid = []; + for (let j in res) { + layerid.push(res[j].id) } this.$refs.tree.setCheckedKeys(layerid); - // var value = this.$refs.tree.getCheckedNodes(); + // let value = this.$refs.tree.getCheckedNodes(); // this.$bus.$emit("showMenuLayer", value); - var listWMS = []; - var listWFS = []; - var listTileset = []; - var listTMS = []; - var listMpt = []; - for (var i in res) { + let listWMS = []; + let listWFS = []; + let listTileset = []; + let listTMS = []; + let listMpt = []; + for (let i in res) { if (res[i].type == 2) { switch (res[i].serveType) { case 'WMS': @@ -871,43 +784,55 @@ } return result }, - cannelTerrainLayer () { - //娓呯┖鍦板舰 - if (window.terrainMptLayer) { - window.terrainMptLayer.deleteObject(); - window.terrainMptLayer = null; - } - if (window.terrainDemLayer) { - Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); - window.terrainDemLayer = null; - } - }, - setTerrainMptLayer () { - // //榛樿鍦板舰MPT - // var option = { - // url: window.sceneConfig.SGUrl, - // layerName: window.sceneConfig.mptName, - // requestVertexNormals: true, - // }; - // window.terrainMptLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); - window.terrainDemLayer = new Cesium.CesiumTerrainProvider({ - // url: LFData + '/3d/terrain/dem20230321' - url: demLayer - }); - Viewer.terrainProvider = window.terrainDemLayer - }, setChangeProLayer () { - var value = this.$store.state.isProjectLayer; + let value = this.$store.state.isProjectLayer; if (value.length != 0) { - var std = []; - for (var i in value) { + let std = []; + for (let i in value) { std.push(value[i].id) } this.$refs.tree.setCheckedKeys(std); this.$bus.$emit("showMenuLayer", value); } }, + // 娣诲姞WFS鍥惧眰 * + addWFSLayers (res) { + let url = + res.resource + + "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + + res.url + + "&outputFormat=application%2Fjson"; + $.ajax({ + url: url, + cache: false, + async: true, + success: function (data) { + let datasource = Cesium.GeoJsonDataSource.load(data, { + stroke: Cesium.Color.YELLOW, + fill: Cesium.Color.YELLOW.withAlpha(0.1), + alpha: 0.1, + strokeWidth: 8, + clampToGround: true, //鏄惁璐村湴 + }); + datasource.then((data) => { + data.name = res.cnName; + window.Viewer.dataSources.add(data); + }); + }, + error: function (data) { + console.log("error"); + }, + }); + let vectorLayer = new VectorLayer({ + name: res.cnName, + source: new VectorSource({ + url: url, + format: new GeoJSON(), + }), + }); + window.map.addLayer(vectorLayer); + } }, }; </script> -- Gitblit v1.9.3