Skip to content

Commit

Permalink
合并iearth代码
Browse files Browse the repository at this point in the history
  • Loading branch information
supermapliukaiyun committed Jul 4, 2023
1 parent ffff89c commit b78257a
Show file tree
Hide file tree
Showing 211 changed files with 279,357 additions and 841 deletions.
272 changes: 18 additions & 254 deletions SuperMap iEarth/src/App.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<template>
<n-config-provider
:theme="darkTheme"
:theme-overrides="overridesTheme"
:theme="darkTheme"
:locale="zhCN"
:date-locale="dateZhCN"
>
Expand All @@ -28,243 +28,7 @@ import { DialogContent } from "@/components/Plugins/DialogContent";
import { LoadingContent } from "@/components/Plugins/LoadingContent";
import { loadAsyncComponent } from "@/utils/index";
import { darkTheme, zhCN, dateZhCN } from "naive-ui";
import {
getRootUrl,
isIportalProxyServiceUrl,
getHostName,
} from "@/tools/iportal/portalTools";
import { onMounted, ref } from "vue";
import { useLayerTreeStore } from "@/store/layerTreeStore/index";
const layerTreeStore = useLayerTreeStore();
if (window.SuperMap3D) {
window.Cesium = window.SuperMap3D;
}
onMounted(() => {
openExistScene();
});
let iportalToken = ref(
"?token=BTKYtyi2bsoLNUA2xn7nRg3V9IfETNnmskQhpsmCz8Q5ClFYCWGAMJSX1ESedBqCF1jFmHLY_20jhpHssvwNQg.."
);
// 如果打开是有保存的场景
function openExistScene() {
let openExistSceneUrl = window.location.href;
let parmeter = openExistSceneUrl.split("id=")[1];
if (!parmeter) {
return;
}
let sceneID = parmeter.split("&")[0];
let requestUrl = "/web/scenes/" + sceneID + ".json";
// let requestUrl = "web/scenes/" + "1229861295" + ".json";
// let requestUrl = "web/scenes/" + "1229861295" + ".json";
let rootUrl = getRootUrl();
let url = rootUrl.includes("iportal")
? rootUrl + requestUrl
: "/iportal" + requestUrl + iportalToken.value;
window.axios.get(url, { withCredentials: true }).then(function (response) {
openScene(response);
});
}
// 打开已保存的场景
function openScene(response?: any) {
let content = JSON.parse(response.data.content);
if (content) {
if (JSON.stringify(content.layers) !== "{}") {
let layers = content.layers;
//需要改动
if (layers.s3mLayer.length !== 0) {
openS3M(content);
}
if (layers.imageryLayer.length !== 0) {
openImagery(content);
}
if (layers.MVTLayer.length !== 0) {
openMVT(content);
}
if (layers.terrainLayer.length !== 0) {
openTerrain(content);
}
setTimeout(() => {
layerTreeStore.updatelayerList("REALSPACE");
layerTreeStore.updateBaseTerrain(content.layers.terrainLayer[0]);
}, 3000);
}
let cameraX = content.camera.position.x;
let cameraY = content.camera.position.y;
let cameraZ = content.camera.position.z;
viewer.scene.camera.setView({
destination: new Cesium.Cartesian3(cameraX, cameraY, cameraZ),
orientation: {
heading: content.camera.heading,
pitch: content.camera.pitch,
roll: content.camera.roll,
},
});
} else if (response.data.url) {
let realspaceUrl = response.data.url;
let index = realspaceUrl.indexOf("/scenes");
realspaceUrl = realspaceUrl.substring(0, index);
setTrustedServers(realspaceUrl);
viewer.scene.open(realspaceUrl);
}
}
// 打开s3m
function openS3M(content: any) {
let s3mlayer = content.layers.s3mLayer;
if (s3mlayer.length > 0) {
for (let t = 0; t < s3mlayer.length; t++) {
let url = content.layers.s3mLayer[t].url;
let name = content.layers.s3mLayer[t].name;
setTrustedServers(url);
viewer.scene.addS3MTilesLayerByScp(url, { name: name });
}
}
}
// 打开影像
function openImagery(content: any) {
let imageryLayer = content.layers.imageryLayer;
let imageryProvider;
if (imageryLayer.length > 0) {
for (let i = 0; i < imageryLayer.length; i++) {
let url = content.layers.imageryLayer[i].url;
if (url.length > 1) {
setTrustedServers(url);
}
let imageryType = content.layers.imageryLayer[i].type;
switch (imageryType) {
case "BingMapsImageryProvider":
imageryProvider = new Cesium.BingMapsImageryProvider({
url: content.layers.imageryLayer[i].url,
// key: state.key,
key: "Av63hPkCmH18oGGn5Qg3QhLBJvknZ97xbhyw3utDLRtFv7anHjXNOUQbyWBL5fK5",
});
break;
case "TiandituImageryProvider":
imageryProvider = new Cesium.TiandituImageryProvider({
url: content.layers.imageryLayer[i].url,
// token: this.token
// token: content.layers.imageryLayer[i].token,
token: "7933ae29d47bcf1440889ad983dbe0af",
});
break;
case "SingleTileImageryProvider":
imageryProvider = new Cesium.SingleTileImageryProvider({
url: content.layers.imageryLayer[i].url,
});
break;
case "UrlTemplateImageryProvider":
imageryProvider = new Cesium.UrlTemplateImageryProvider({
url: content.layers.imageryLayer[i].url,
});
break;
case "SuperMapImageryProvider":
imageryProvider = new Cesium.SuperMapImageryProvider({
url: content.layers.imageryLayer[i].url,
});
break;
case "GRIDIMAGERY":
imageryProvider = new Cesium.TileCoordinatesImageryProvider();
break;
default:
break;
}
viewer.imageryLayers.addImageryProvider(imageryProvider);
}
}
}
// 打开mvt
function openMVT(content: any) {
let MVTLayerUrlList = content.layers.MVTLayer;
// MVTLayerUrlList.forEach((item) => {
// layerManagement.addMvtLayer(item.url, item.name);
// });
}
// 打开地形
function openTerrain(content: any) {
viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
let terrainLayer = content.layers.terrainLayer;
if (terrainLayer.length > 0) {
let terrainType = content.layers.terrainLayer[0].type;
let url = content.layers.terrainLayer[0].url;
setTrustedServers(url);
switch (terrainType) {
case "StkTerrain":
let flag: boolean;
if (
content.layers.terrainLayer[0].url.indexOf("3D-stk_terrain") != -1
) {
// stk地形
flag = false;
} else {
// 普通地形(自定义添加)
flag = true;
}
viewer.terrainProvider = new Cesium.SuperMapTerrainProvider({
url: content.layers.terrainLayer[0].url,
isSct: flag,
});
break;
case "tianDiTuTerrain":
viewer.terrainProvider = new Cesium.TiandituTerrainProvider({
// token: state.terrainToken,
token: "e90d56e5a09d1767899ad45846b0cefd",
});
break;
case "supermapOnlineTerrain":
viewer.terrainProvider = new Cesium.SCTTerrainProvider({
urls: [content.layers.terrainLayer[0].url],
});
break;
}
}
}
// 检查请求是否带cookie
function setTrustedServers(url) {
// if (IportalStore.isPortal) {
// if (IportalStore.portalConfig) {
// let serviceProxy = IportalStore.portalConfig.serviceProxy;
// let withCredentials = isIportalProxyServiceUrl(url, serviceProxy);
// if (withCredentials) {
// let ip = getHostName(url);
// if (
// !Cesium.TrustedServers.contains(
// "http://" + ip + "/" + serviceProxy.port
// )
// ) {
// Cesium.TrustedServers.add(ip, serviceProxy.port);
// }
// }
// }
// }
}
// 组件界面的入门vue文件:承载布局 组件 控件(这里必须异步调用,不然执行顺序会有问题)
const layout = loadAsyncComponent(() => import("@/views/layout.vue"));
// 读取scss变量
// import scssVariable from '@/stylesMine/variables.module.scss'
// console.log("scssVariable:",scssVariable)
const layout = loadAsyncComponent(() => import("@/layout/index.vue"));
// 重写主题样式
/**
Expand All @@ -284,9 +48,9 @@ const overridesTheme = {
// textColor: scssVariable.midColorNormal,
},
Input: {
color: "none",
paddingRight: "12px", // 又不起作用
border: "1px solid yellow;",
// color: "none",
// paddingRight: "12px", // 又不起作用
// border: "1px solid yellow;",
},
// 完全不起作用
Tabs: {
Expand All @@ -303,36 +67,36 @@ const overridesTheme = {
Slider: {
fillColor: "#3499E5",
fillColorHover: "#3499E5",
handleSize:"12px"
},
Switch: {
railColorActive: "#3499E5",
},
// ColorPicker: {
// height: "",
// },
};
</script>

<style lang="scss">
// 以下样式 先放到这里 后续再看怎么处理
.n-tabs .n-tabs-bar {
background-color: #3499e5 !important;
}
.n-tabs-tab {
color: #fff !important;
}
.n-color-picker-trigger {
border: none;
}
.n-layout .n-layout-scroll-container {
overflow: visible;
}
.n-tree .n-tree-node-content .n-tree-node-content__text {
max-width: 144px;
white-space: nowrap; /* 防止文本换行 */
overflow: hidden; /* 隐藏超出元素的内容 */
text-overflow: ellipsis; /* 显示省略号 */
}
.n-slider .n-slider-handles .n-slider-handle-wrapper .n-slider-handle {
background: #414141;
border: 3px solid #3499E5;
.drawCur {
cursor: url(./images/cur/draw.cur), auto;
}
.n-slider .n-slider-handles .n-slider-handle-wrapper .n-slider-handle {
height: 12px;
width: 12px;
.measureCur {
cursor: url(./images/cur/measure.cur), auto;
}
</style>
Loading

0 comments on commit b78257a

Please sign in to comment.