| | |
| | | export function dataQuery_selectByGid(params) { |
| | | return request.get('/dataQuery/selectByGid', { params: params }); |
| | | } |
| | | |
| | | //ææç®¡ç=>æ¥è¯¢å½åç¨æ·çæå½±å¾å±ææ |
| | | export function perms_selectProjectLayers(params) { |
| | | return request.get('/perms/selectProjectLayers', { params: params }); |
| | | } |
| | | |
| | | |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { getToken } from "@/utils/auth"; |
| | | //é
ç½®æä»¶å°å |
| | | import config from "./config"; |
| | | import store from "@/store"; |
| | | const projection = { |
| | | layerList: [], |
| | | addTreeData(treeNode) { |
| | | this.delLayerAll(); |
| | | //夿æ¯å¦ä¸ºä»£ç |
| | | if (treeNode.proxy) { |
| | | this.addProxyAddress(treeNode); //æä»£ç |
| | | } else { |
| | | this.addUrlAddress(treeNode); //æ 代ç |
| | | } |
| | | }, |
| | | //代çå°å |
| | | addProxyAddress(res) { |
| | | //å¤ææ°æ®ç±»å |
| | | switch (res.data) { |
| | | case 1: //æ°åæ£å°å½±åå¾ |
| | | 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: //æ°åæ£å°å½±åå¾ |
| | | 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); |
| | | let img_layer = earthCtrl.Creator.createUrlTemplateImageryProvider( |
| | | "tmsæå¡", |
| | | { |
| | | url: Cesium.buildModuleUrl(url + "/{z}/{x}/{reverseY}.png"), |
| | | }, |
| | | "0", |
| | | undefined, |
| | | true, |
| | | "" |
| | | ); |
| | | this.layerList.push({ id: res.id, layerData: img_layer, type: "tms" }); |
| | | }, |
| | | //å è½½WMTSæå¡ |
| | | setAddWmtsLayer(res) { |
| | | var url = this.getLayrUrl(res); |
| | | var urlTemplateImageryProvider = earthCtrl.factory.createImageryLayer({ |
| | | sourceType: "wmts", |
| | | url: url, |
| | | layer: "", |
| | | format: "image/png", |
| | | tileMatrixSetID: "GoogleCRS84Quad01", |
| | | tileMatrixLabels: [ |
| | | "0", |
| | | "1", |
| | | "2", |
| | | "3", |
| | | "4", |
| | | "5", |
| | | "6", |
| | | "7", |
| | | "8", |
| | | "9", |
| | | "10", |
| | | "11", |
| | | "12", |
| | | "13", |
| | | "14", |
| | | "15", |
| | | "16", |
| | | "17", |
| | | "18", |
| | | ], |
| | | style: "", |
| | | tilingScheme: new Cesium.GeographicTilingScheme({ |
| | | ellipsoid: Cesium.Ellipsoid.MOON, |
| | | }), |
| | | }); |
| | | this.layerList.push({ |
| | | id: res.id, |
| | | layerData: urlTemplateImageryProvider._primitive, |
| | | type: "wmts", |
| | | }); |
| | | }, |
| | | //å è½½å°å½¢æå¡ |
| | | setAddTearrinLayer(res) { |
| | | this.setChangeTearrinLayer(); |
| | | var url = this.getLayrUrl(res); |
| | | window.terrainLayer = new Cesium.CesiumTerrainProvider({ |
| | | url: url, |
| | | }); |
| | | 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", |
| | | }); |
| | | }, |
| | | //å 载模åæå¡ |
| | | 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, // èªå¨ä»ä¸å¿å¼å§è¶
æ¸
忍¡åï¼false |
| | | cullWithChildrenBounds: true, // 使ç¨å项边çä½ç§¯ç并鿥åé¤å¾åï¼true |
| | | cullRequestsWhileMoving: true, |
| | | cullRequestsWhileMovingMultiplier: 10, // å¼è¶å°è½å¤æ´å¿«çåé¤ï¼60 |
| | | preloadWhenHidden: true, |
| | | preferLeaves: true, // é¢è£
åèç¹ï¼false |
| | | maximumMemoryUsage: 768, // å
ååé
åå°æå©äºå
ååæ¶ï¼æåæ§è½ä½éª |
| | | progressiveResolutionHeightFraction: 0.5, // æ°å¼åäº0è½å¤è®©åå§å è½½å徿¨¡ç³ |
| | | dynamicScreenSpaceErrorDensity: 0.5, // æ°å¼å 大ï¼è½è®©å¨è¾¹å è½½åå¿« |
| | | dynamicScreenSpaceErrorFactor: 2, // 卿å±å¹ç©ºé´è¯¯å·®çç³»æ° |
| | | dynamicScreenSpaceError: true, // åå°ç¦»ç¸æºè¾è¿çå±å¹ç©ºé´é误ï¼falseï¼å
¨å±å è½½å®ä¹åææ¸
æ°åæ¿å± |
| | | }) |
| | | ); |
| | | 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.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": |
| | | 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.layerList.splice(i, 1); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | 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.layerList.splice(i, 1); |
| | | }); |
| | | this.layerList = []; |
| | | }, |
| | | //å è½½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" }); |
| | | }, |
| | | getFeatureInfo(html) { |
| | | store.state.details.showDetails = false; |
| | | var start = html.indexOf("<caption class=\"featureInfo\">") + "<caption class=\"featureInfo\">".length; |
| | | var end = html.indexOf("</caption>"); |
| | | var tab = html.substr(start, end - start); |
| | | var std = html.substr(html.indexOf('<th>'), html.lastIndexOf('</th>') - html.indexOf('<th>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</th>') |
| | | var gindex = null; |
| | | for (var i = 0; i < std.length; i++) { |
| | | if (std[i].indexOf('gid') > -1) { |
| | | gindex = i; |
| | | break; |
| | | } |
| | | } |
| | | if (!gindex) return |
| | | var str = html.substr(html.indexOf('<td>'), html.lastIndexOf('</td>') - html.indexOf('<td>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</td>') |
| | | var gid = parseInt(str[gindex].replaceAll( |
| | | '<td>', '' |
| | | )) |
| | | if (gid && tab) { |
| | | |
| | | store.state.details = { |
| | | gid: gid, |
| | | tab: tab, |
| | | showDetails: true |
| | | } |
| | | } |
| | | |
| | | }, |
| | | }; |
| | | export default projection; |
| | |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | 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.layerList.splice(i, 1); |
| | | }); |
| | | |
| | | }, |
| | | //å è½½GeoServer-WMSæå¡ |
| | | setAddGeoWmsLayer(res) { |
| | | var url = this.getLayrUrl(res); |
| | |
| | | tab: null, |
| | | showDetails: false, |
| | | }, |
| | | restLayer: false, |
| | | }, |
| | | mutations: { |
| | | //è·åç»å½Code |
| | |
| | | <div class="titleImg"> |
| | | <ArrowLeft /> |
| | | </div> |
| | | <div class="titleLable"></div> |
| | | <div class="titleLable"> æå½±å¾å±ç®¡ç</div> |
| | | </div> |
| | | </div> |
| | | <div class="baseMapSwitching_content"> |
| | |
| | | class="baseMapSwitching_list_tr" |
| | | v-for="(item, i) in list" |
| | | :key="i" |
| | | @click="setProjectionLayerChange(item)" |
| | | > |
| | | <div class="baseMapSwitching_list_tr_name"> |
| | | <span>{{ item.name }}</span> |
| | | <span :class="{ 'baseMapActive' : activceIndex == item.id}">{{item.cnName }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | defineProps, |
| | | defineEmits, |
| | | } from "vue"; |
| | | let list = ref([ |
| | | { |
| | | name: "çè·ç¦»æ±æå½± ( <75)", |
| | | type: "poi", |
| | | icon: "d.png", |
| | | }, |
| | | { |
| | | name: "åæå¹³é¢æå½±", |
| | | type: "line", |
| | | icon: "x.png", |
| | | }, |
| | | { |
| | | name: "åæå¹³é¢æå½±", |
| | | type: "cover", |
| | | icon: "m.png", |
| | | }, |
| | | ]); |
| | | import { perms_selectProjectLayers } from "@/api/api"; |
| | | import server from "@/assets/js/Map/server"; |
| | | import store from "@/store"; |
| | | |
| | | import projection from "@/assets/js/Map/projectionServer"; |
| | | let list = ref([]); |
| | | const activceIndex = ref(); |
| | | const setProjectionLayerChange = (res) => { |
| | | server.delLayerAll(); |
| | | projection.addTreeData(res); |
| | | activceIndex.value = res.id; |
| | | store.state.restLayer = true; |
| | | }; |
| | | const getProjectionLayer = async () => { |
| | | const data = await perms_selectProjectLayers(); |
| | | if (data.code != 200) return; |
| | | var result = data.result.filter((res) => { |
| | | if (res.isLayer == 1) { |
| | | return res; |
| | | } |
| | | }); |
| | | list.value = result.reverse(); |
| | | if (!activceIndex.value) { |
| | | setProjectionLayerChange(list.value[0]); |
| | | } |
| | | }; |
| | | getProjectionLayer(); |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | |
| | | align-items: center; |
| | | |
| | | .titleLable { |
| | | font-size: 24px; |
| | | font-size: 18px; |
| | | font-family: Source Han Sans CN; |
| | | font-weight: 400; |
| | | color: #ffffff; |
| | |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | .baseMapActive { |
| | | color: #73a1fa !important; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | defineProps, |
| | | defineEmits, |
| | | nextTick, |
| | | watch, |
| | | } from "vue"; |
| | | import layerSet from "./layerSet"; |
| | | import attributeList from "./attributeList"; |
| | |
| | | let isCheck = checked.checkedKeys.indexOf(data.id) > -1; |
| | | // this.setVisiable(data, isCheck); |
| | | |
| | | let son = estreeRef.value.getCheckedNodes(); |
| | | |
| | | let son = estreeRef.value.getCheckedNodes().reverse(); |
| | | server.delLayerAll(); |
| | | for (var i in son) { |
| | | var layerArr = son[i]; |
| | | layerArr.checked = true; |
| | | server.addTreeData(layerArr); |
| | | } |
| | | store.commit("SET_CHECKLAYER", son); |
| | | setVisiable(data, isCheck); |
| | | // setVisiable(data, isCheck); |
| | | |
| | | // server.addLayer(layerArr, isCheck); |
| | | // |
| | | }; |
| | | const setVisiable = (treeNode, checked) => { |
| | | if (checked !== undefined) { |
| | |
| | | }; |
| | | |
| | | const getLayer = async () => { |
| | | store.state.restLayer = false; |
| | | server.delLayerAll(); |
| | | const dt = await perms_selectLayers(); |
| | | if (dt.code == 200) { |
| | | treeData.value = setTreeData(dt.result).sort(function (a, b) { |
| | |
| | | return father.pid == 0; // è¿åä¸çº§èå |
| | | }); |
| | | } |
| | | watch( |
| | | () => store.state.restLayer, |
| | | (nVal, oVal) => { |
| | | if (nVal) { |
| | | getLayer(); |
| | | } |
| | | }, |
| | | { deep: true } |
| | | ); |
| | | getLayer(); |
| | | onMounted(() => {}); |
| | | </script> |