当前位置: 首页 > news >正文

Cesium.js(7):地图、地形的加载

1 地图加载

Cesium.js提供了不同的地图,不同地图有不同的效果,如下图:

1.1 加载cesium在线资源

用户可以通过加载cesium在线资源,加载新的地图模型。

登陆cesium,道Asset Depot在线资产库中进行添加新的模型资产:

其中My Assets是已经添加的资产。

这里我添加了一个新的资产

加载模型之前样式如下

代码如下:


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>相机</title><script src="../../libs/Cesium/Cesium.js"></script><link href="../../libs/Cesium/Widgets/widgets.css" rel="stylesheet"><style>html,body {margin: 0px;padding: 0px;}</style>
</head>
<body><div id="puiedu-cesiumContainer"></div><script>Cesium.Ion.defaultAccessToken = '你的key';const viewer = new Cesium.Viewer('puiedu-cesiumContainer',{infoBox: false,baseLayerPicker:false,           });// 将异步操作包裹在立即执行的async函数中(async function() {try {const imageryLayer = viewer.imageryLayers.addImageryProvider(await Cesium.IonImageryProvider.fromAssetId(3812));} catch (error) {console.log(error);}})();</script>
</body>
</html>

加载地图之后样式如下

1.2 加载ArcGIS地图服务

代码如下:

        //加载地图var esri = new Cesium.ArcGisMapServerImageryProvider({url:'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'})Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjMTA2MDkxZS00MmVjLTRhMjMtYWJhYS03ZmYwZWRhOWYyZTUiLCJpZCI6MjExNjUzLCJpYXQiOjE3NDQ2MTg3NDF9.KxNS9sIFshzyoCeJJnIKblgg77yYbXAlx2jKfFCjqi8';const viewer = new Cesium.Viewer('cesiumContainer', {baseLayerPicker:false,imageryProvider:esri,});

效果如下:

当然也可以加载其他的地图,后面会有专门的印象专题。

2 加载地形

在为加载地形数据是,会发现地图上的山峰没有山势起伏的样子。

先到Asset Depot中添加一个地形数据如下:

找到对应的ID。

编写代码:


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>相机</title><script src="../../libs/Cesium/Cesium.js"></script><link href="../../libs/Cesium/Widgets/widgets.css" rel="stylesheet"><style>html,body {margin: 0px;padding: 0px;}</style>
</head>
<body><div id="puiedu-cesiumContainer"></div><script>Cesium.Ion.defaultAccessToken = '你的key';const viewer = new Cesium.Viewer('puiedu-cesiumContainer', {baseLayerPicker: false,});viewer.scene.setTerrain(new Cesium.Terrain(Cesium.CesiumTerrainProvider.fromIonAssetId(1,{requestWaterMask: true, //请求水面掩膜。这会使得地形数据中的水体区域呈现得更真实。requestVertexNormals: true, //请求地形的顶点法线,这对于渲染光照和阴影效果非常重要})),);</script>
</body>
</html>

然后运行查看如下:

看水面会发现波涛汹涌的效果。

当然想看的清晰一点可以开启光照

        viewer.scene.globe.showWaterEffect = true; // 确保全局水面效果开启viewer.scene.globe.enableLighting = true;  // 建议开启光照(影响波纹可见性)


http://www.mrgr.cn/news/98430.html

相关文章:

  • 双链表各种操作实现(数据结构C语言多文件编写)
  • ubuntu18.04安装miniforge3
  • Base64在线编码解码 - 加菲工具
  • 【JavaEE】SpringBoot 统一功能处理
  • 【图解】系统设计学习笔记
  • +++++背到厌倦。持续更新
  • composer报错的处理方案
  • 【VUE3】练习项目——大事件后台管理
  • Android studio消息同步机制:消息本地存储,服务器交互减压
  • Nodejs Express框架
  • linux 进程信号
  • 批处理脚本bat丨遍历一个包含项目名称的数组,并对每个文件中的项目执行 git pull 操作 (一键拉很多文件的代码)
  • C++ Json-Rpc框架-3项目实现(2)
  • hive数仓要点总结
  • Apache Hive学习教程
  • [Dify] 使用 Docker 本地部署 Dify 并集成 Ollama 模型的详细指南
  • (2025亲测可用)Chatbox多端一键配置Claude/GPT/DeepSeek-网页端配置
  • Gitea 1.23.7 速配
  • 腾讯云golang一面
  • 批量归一化(Batch Normalization)原理与PyTorch实现