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

CesiumJS 案例 P3:清空默认图层、添加纯色图层、创建圆点、创建矩形

CesiumJS

  • CesiumJS API:https://cesium.com/learn/cesiumjs/ref-doc/index.html

  • CesiumJS 是一个开源的 JavaScript 库,它用于在网页中创建和控制 3D 地球仪(地图)


一、清空默认图层

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>清空默认图层</title>
		<link rel="stylesheet" href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css" />
		<style>
			* {
				margin: 0;
				padding: 0;
				box-sizing: border-box;
			}

			html,
			body {
				width: 100%;
				height: 100%;
			}

			.container {
				width: 100%;
				height: 100%;
			}
		</style>
	</head>

	<body>
		<div id="container"></div>
	</body>

	<script src="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script>
	<script>
		Cesium.Ion.defaultAccessToken =
			"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2YmM3MTFjMC1mOTIyLTQ4MmItYWU0MC0wNWM5ODdjZWIzOGMiLCJpZCI6MTI0NzQ5LCJpYXQiOjE2NzY0MzgxMDh9.xXOpAIyhIp3pd7ki0PuzXcbjowOEVVkd5skntQ8ra6I";

		const viewer = new Cesium.Viewer("container");

		// 清空默认图层
		while (viewer.imageryLayers.length > 0) viewer.imageryLayers.remove(viewer.imageryLayers.get(0));
	</script>
</html>

二、添加纯色图层

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>添加纯色图层</title>
		<link rel="stylesheet" href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css" />
		<style>
			* {
				margin: 0;
				padding: 0;
				box-sizing: border-box;
			}

			html,
			body {
				width: 100%;
				height: 100%;
			}

			.container {
				width: 100%;
				height: 100%;
			}
		</style>
	</head>

	<body>
		<div id="container"></div>
	</body>

	<script src="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script>
	<script>
		Cesium.Ion.defaultAccessToken =
			"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2YmM3MTFjMC1mOTIyLTQ4MmItYWU0MC0wNWM5ODdjZWIzOGMiLCJpZCI6MTI0NzQ5LCJpYXQiOjE2NzY0MzgxMDh9.xXOpAIyhIp3pd7ki0PuzXcbjowOEVVkd5skntQ8ra6I";

		const viewer = new Cesium.Viewer("container");

		// 清空默认图层
		while (viewer.imageryLayers.length > 0) viewer.imageryLayers.remove(viewer.imageryLayers.get(0));

		// 创建一个画布(用于纯色纹理)
		const canvas = document.createElement("canvas");
		canvas.width = 256; // 纹理分辨率(可调整)
		canvas.height = 256;

		// 获取画布的 2D 渲染上下文
		const ctx = canvas.getContext("2d");

		// 用纯色填充画布
		ctx.fillStyle = "rgba(173, 216, 230, 0.5)";
		ctx.fillRect(0, 0, canvas.width, canvas.height);

		// 使用画布作为源创建一个图像提供器
		const colorImageryProvider = new Cesium.SingleTileImageryProvider({
			url: canvas.toDataURL(), // 画布的数据 URL
			rectangle: Cesium.Rectangle.MAX_VALUE, // 覆盖整个地球
			minimumLevel: 0, // 最小层级
			maximumLevel: 0, // 最大层级,确保图层不被分割或重复
		});

		viewer.imageryLayers.addImageryProvider(colorImageryProvider, {
			alphaBlending: true, // 允许透明度混合
		});
	</script>
</html>

三、创建圆点

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Entity - 创建圆点</title>
		<link rel="stylesheet" href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css" />
		<style>
			* {
				margin: 0;
				padding: 0;
				box-sizing: border-box;
			}

			html,
			body {
				width: 100%;
				height: 100%;
			}

			.container {
				width: 100%;
				height: 100%;
			}
		</style>
	</head>

	<body>
		<div id="container"></div>
	</body>

	<script src="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script>
	<script>
		Cesium.Ion.defaultAccessToken =
			"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2YmM3MTFjMC1mOTIyLTQ4MmItYWU0MC0wNWM5ODdjZWIzOGMiLCJpZCI6MTI0NzQ5LCJpYXQiOjE2NzY0MzgxMDh9.xXOpAIyhIp3pd7ki0PuzXcbjowOEVVkd5skntQ8ra6I";

		const viewer = new Cesium.Viewer("container");

		// 创建实体实例
		const entity = viewer.entities.add({
			position: Cesium.Cartesian3.fromDegrees(116.39, 39.91, 400),
			point: {
				pixelSize: 100,
				color: new Cesium.Color(0, 1, 0, 1),
			},
		});

		// 设置相机当前正在跟踪的实体实例
		viewer.trackedEntity = entity;
	</script>
</html>

四、创建矩形

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Entity - 创建矩形</title>
		<link rel="stylesheet" href="../js/Cesium-1.112/Build/Cesium/Widgets/widgets.css" />
		<style>
			* {
				margin: 0;
				padding: 0;
				box-sizing: border-box;
			}

			html,
			body {
				width: 100%;
				height: 100%;
			}

			.container {
				width: 100%;
				height: 100%;
			}
		</style>
	</head>

	<body>
		<div id="container"></div>
	</body>

	<script src="../js/Cesium-1.112/Build/Cesium/Cesium.js"></script>
	<script>
		Cesium.Ion.defaultAccessToken =
			"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2YmM3MTFjMC1mOTIyLTQ4MmItYWU0MC0wNWM5ODdjZWIzOGMiLCJpZCI6MTI0NzQ5LCJpYXQiOjE2NzY0MzgxMDh9.xXOpAIyhIp3pd7ki0PuzXcbjowOEVVkd5skntQ8ra6I";

		const viewer = new Cesium.Viewer("container");

		// 创建实体实例
		const entity = viewer.entities.add({
			rectangle: {
				coordinates: Cesium.Rectangle.fromDegrees(
					-120.0, // 西经
					20.0, // 南纬
					-60.0, // 东经
					40.0 // 北纬
				),
				material: Cesium.Color.BLUE.withAlpha(0.5), // 半透明的蓝色
			},
		});

		// 设置相机当前正在跟踪的实体实例
		viewer.trackedEntity = entity;
	</script>
</html>

http://www.kler.cn/a/353774.html

相关文章:

  • SpringBoot之核心配置
  • 【Ubuntu】 Ubuntu22.04搭建NFS服务
  • Python入门教程 —— 网络编程
  • 测试开发基础知识2
  • 如何在 Hive SQL 中处理复杂的数据类型?
  • 腾讯云AI代码助手编程挑战赛——贪吃蛇小游戏
  • C++之默认拷贝函数
  • 护眼台灯哪个牌子最好?当心劣质护眼灯三大缺陷
  • [Git] Git下载及使用 从入门到精通 详解(附下载链接)
  • React组件传值方法
  • gbase8s的事务、并发控制、锁机制、隔离级别
  • MD5 在数据库中的应用与安全性分析
  • leetcode-301. 删除无效的括号
  • GaussDB 主备版本8 -schema及操作
  • Windows server 2022 数据中心版本的安装
  • 链接伪类(:hover)CSS背景图片有闪动BUG的解决方法 vue3
  • 【1-1】STM32F407学习笔记之中断
  • error Replace `··` with `↹` react开发格式化问题
  • MybatisWebApp
  • vue综合指南(一)
  • 跨站脚本(XSS)攻击示例概念验证
  • [week1] newstar ctf ezAndroidStudy
  • SpringCloudAlibaba[Nacos]注册配置中心注册与发现服务
  • 【读书笔记-《30天自制操作系统》-30】Day31
  • 计算机网络基础(1)
  • Python单例模式(三种实现方式:覆写__new__方法、使用装饰器、使用元类)(单例模式之线程安全)(单例的懒汉模式与饿汉模式)