cesium126,230616,Set Url at Runtime from Blueprint (运行时从蓝图设置URL):获取项目所在路径的蓝图函数 Get Project Directory

(190)需求提出
在这里插入图片描述

(191) url 格式

在这里插入图片描述

(192)场景搭建

在这里插入图片描述

(193)获取项目路径,项目目录的相关蓝图函数

在这里插入图片描述

(194) 更新 3D 瓦片后的刷新,也有三个同名函数,按需使用

在这里插入图片描述

(195)蓝图里加载 URL

在这里插入图片描述

++ 效果

在这里插入图片描述

++ 蓝图里的刷新,对应于这个细节面板里的按钮

在这里插入图片描述

(196)如动态相机,等,本身包含多个组件,如何获取里面的组件呢

在这里插入图片描述

(197) 老师的例题里的 XML 文件的路径

在这里插入图片描述

(198)地形覆层里的 URL 修改

在这里插入图片描述

(199)

谢谢

<think>好的,我现在需要帮助用户将Cesium中的地形服务的绝对路径改为相对路径。首先,我得确认用户使用的框架或工具,比如是否在本地服务器运行,或者使用类似Vite、Webpack这样的构建工具。因为相对路径的正确性取决于当前文件与地形数据目录的相对位置。 用户提供的代码是: terrain: new Cesium.Terrain(Cesium.CesiumTerrainProvider.fromUrl("D:/VScodeProject/qianduan/public/test")) 这里的问题在于路径是绝对路径,这在部署或共享项目会遇到问题,因为其他环境可能没有相同的目录结构。需要将其改为相对路径,比如`public/test`或`./public/test`,但具体怎么改取决于项目结构和服务器配置。 首先,用户的项目结构可能如下: - 项目根目录:D:/VScodeProject/qianduan/ - public目录位于根目录下,作为静态资源目录。 - JavaScript文件可能在src或另一个子目录中,比如D:/VScodeProject/qianduan/src/,而public在根目录的同级。 假设用户的JavaScript文件在src目录中,而public在根目录下,那么从JS文件到public的相对路径应该是`../public/test`。不过,如果服务器配置将public作为静态资源根目录,可能需要使用相对于服务器根目录的路径,比如`/test`。 另外,Cesium的TerrainProvider.fromUrl需要正确的URL,如果地形数据是静态文件,应确保服务器能正确提供这些文件。例如,如果使用Express.js,可能需要设置静态目录: app.use(express.static('public')); 这样,从客户端访问URL应该是相对于服务器的根路径,如`/test`。因此,代码应该改为: Cesium.CesiumTerrainProvider.fromUrl("/test") 或者如果地形服务在子目录下,可能需要调整路径。用户需要检查服务器的静态资源设置,确保路径正确指向地形数据的位置。此外,还要确认地形数据是否确实位于public/test下,并且结构符合Cesium地形提供者的要求,比如包含layer.json等元数据文件。 可能的错误情况包括路径错误导致地形无法加载,或者服务器未正确配置静态目录。用户应检查浏览器控制台的网络请求,查看是否正确获取地形数据,并根据错误调整路径或服务器配置。</think>要修改地形服务的绝对路径为相对路径,需根据项目结构和服务器配置进行调整。以下是分步说明: --- ### **步骤 1 - 确认目录结构** 假设你的项目结构如下: ``` 项目根目录/ ├─ public/ // 静态资源目录 │ └─ test/ // 地形数据目录 │ └─ layer.json // 地形元数据文件 └─ src/ └─ main.js // 你的Cesium代码文件 ``` --- ### **步骤 2 - 使用相对路径** 根据上述结构,从`main.js`到地形数据的相对路径应为: ```javascript terrain: new Cesium.Terrain( Cesium.CesiumTerrainProvider.fromUrl("./public/test") // 或简写为 "public/test" ) ``` --- ### **步骤 3 - 配置服务器(关键步骤)** 必须确保服务器能正确托管`public`目录: 1. **如果使用本地服务器(如Express)**: ```javascript const express = require('express'); const app = express(); app.use(express.static('public')); // 将public设为静态资源目录 ``` 此URL路径应为`/test`: ```javascript Cesium.CesiumTerrainProvider.fromUrl("/test") ``` 2. **如果使用Vite/Webpack**: 直接将地形数据放入`public`目录,路径保持`public/test`。 --- ### **步骤 4 - 验证路径** 打开浏览器开发者工具 ➔ Network标签 ➔ 检查是否有`404`错误。正确的请求应显示成功加载地形数据文件(如`.terrain`或`.quantized-mesh`文件)。 --- ### **常见错误处理** - **错误:`Failed to load terrain tiles`** 检查地形数据目录是否包含`layer.json`文件。 - **错误:`Invalid URL`** 确保路径不包含磁盘符(如`D:/`),改用纯相对路径。 --- ### **最终代码示例** ```javascript const viewer = new Cesium.Viewer("cesiumContainer", { terrain: new Cesium.Terrain( Cesium.CesiumTerrainProvider.fromUrl("public/test") // 或"/test" ) }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhangkeji

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值