1.添加加载自定义地形的地图逻辑;2.添加模型配置的页面内容,添加加载模型的地图逻辑;
This commit is contained in:
parent
bcddf0dbfc
commit
4a76c7eadf
|
@ -26,6 +26,7 @@ onMounted(async () => {
|
|||
// 初始化地图
|
||||
const initMap = async () => {
|
||||
let terrainProvider = await Cesium.createWorldTerrainAsync()
|
||||
|
||||
const oldOptions = {
|
||||
// 动画仪表盘
|
||||
animation: false,
|
||||
|
@ -69,6 +70,13 @@ const initMap = async () => {
|
|||
configJson = {}
|
||||
}
|
||||
if (props.options.isTerrainProvider) {
|
||||
// 是否使用自定义地形
|
||||
if(props.options.cesiumTerrainProviderUrl) {
|
||||
const customTerrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(props.options.cesiumTerrainProviderUrl);
|
||||
if(customTerrainProvider) {
|
||||
terrainProvider = customTerrainProvider;
|
||||
}
|
||||
}
|
||||
oldOptions.terrainProvider = terrainProvider;
|
||||
}
|
||||
let options = Object.assign(oldOptions, configJson)
|
||||
|
@ -95,6 +103,7 @@ const setInitConfig = () => {
|
|||
}
|
||||
|
||||
setMapImg(options);
|
||||
setModel(options);
|
||||
}
|
||||
|
||||
// 设置地图
|
||||
|
@ -166,6 +175,27 @@ const mapSetView = (options) => {
|
|||
}
|
||||
}
|
||||
|
||||
// 设置模型
|
||||
const setModel = async (options) => {
|
||||
// 3d模型参数
|
||||
const tilesetOption = {
|
||||
maximumScreenSpaceError: 1, // 应对大疆一键生成的模型问题;如模型能正常显示但文件加载太过频繁,可增大数值
|
||||
skipLevelOfDetail: true,
|
||||
// baseScreenSpaceError: 1024,
|
||||
// skipScreenSpaceErrorFactor: 16,
|
||||
skipLevels: 5,
|
||||
// immediatelyLoadDesiredLevelOfDetail: false,
|
||||
// loadSiblings: false,
|
||||
// cullWithChildrenBounds: true
|
||||
};
|
||||
for (const url of options.modelList) {
|
||||
const primitive = await Cesium.Cesium3DTileset.fromUrl(url, tilesetOption);
|
||||
if(primitive) {
|
||||
viewer.scene.primitives.add(primitive);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onUnmounted(() => {
|
||||
if (viewer) {
|
||||
viewer.entities.removeAll()
|
||||
|
|
|
@ -88,6 +88,27 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-divider content-position="left">模型配置</el-divider>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="显示列表" prop="model">
|
||||
<div class="config-modellist">
|
||||
<div v-for="item in formData.modelList" class="model-item" :key="item">
|
||||
<span class="model-text">{{ item }}</span>
|
||||
<el-button type="danger" link @click="formData.modelList = formData.modelList.filter(x => x != item)">删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="添加模型">
|
||||
<el-input v-model="addModel" placeholder="请输入模型根目录下tileset.json文件的url">
|
||||
<template #append>
|
||||
<el-button @click="addModelEvent">添加</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-divider content-position="left">其他配置</el-divider>
|
||||
<el-form-item label="其他配置" prop="configJson">
|
||||
<JsonEditorVue v-model="formData.configJson" style="width: 100%;" />
|
||||
|
@ -123,6 +144,7 @@ const dituList = [
|
|||
value: 'tianditu'
|
||||
}
|
||||
]
|
||||
const addModel = ref(null); // 添加模型的输入框
|
||||
|
||||
const formData = ref({
|
||||
setView: {
|
||||
|
@ -139,9 +161,18 @@ const formData = ref({
|
|||
isTerrainProvider: true, // 是否显示地形
|
||||
cesiumTerrainProviderUrl: '', // 自定义地形
|
||||
ditu: '', // 底图选择
|
||||
modelList: ['test1', 'test2'], // 模型列表
|
||||
configJson: {}
|
||||
})
|
||||
|
||||
const addModelEvent = () => {
|
||||
if (!addModel.value || addModel.value.indexOf('tileset.json') < 0) {
|
||||
return;
|
||||
}
|
||||
formData.value.modelList.push(addModel.value);
|
||||
addModel.value = null;
|
||||
}
|
||||
|
||||
// 点击保存
|
||||
const saveClick = () => {
|
||||
// todo 调保存接口
|
||||
|
@ -172,4 +203,19 @@ onMounted(() => {
|
|||
justify-content: flex-end;
|
||||
}
|
||||
}
|
||||
.config-modellist {
|
||||
border: 1px solid #e2e2e3;
|
||||
width: 100%;
|
||||
padding: 0 12px;
|
||||
height: 80px;
|
||||
overflow: auto;
|
||||
|
||||
.model-item {
|
||||
display: flex;
|
||||
|
||||
.model-text {
|
||||
flex: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -34,7 +34,11 @@ export default defineConfig(({ mode, command }) => {
|
|||
target: 'http://localhost:9100',
|
||||
changeOrigin: true,
|
||||
rewrite: (p) => p.replace(/^\/dev-api/, '')
|
||||
}
|
||||
},
|
||||
'/model': {
|
||||
target: 'http://47.109.202.121:8081/',
|
||||
changeOrigin: true,
|
||||
},
|
||||
}
|
||||
},
|
||||
//fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
|
||||
|
|
Loading…
Reference in New Issue