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

Cesium 快速入门(二)底图更换

Cesium 快速入门(二)底图更换

看过的知识不等于学会。唯有用心总结、系统记录,并通过温故知新反复实践,才能真正掌握一二
作为一名摸爬滚打三年的前端开发,开源社区给了我饭碗,我也将所学的知识体系回馈给大家,助你少走弯路!
OpenLayers、Leaflet 快速入门 ,每周保持更新 2 个案例
Cesium 快速入门,每周保持更新 4 个案例

Cesium 快速入门(一)快速搭建项目
Cesium 快速入门(二)底图更换
Cesium 快速入门(三)Viewer:三维场景的“外壳”
Cesium 快速入门(四)相机控制完全指南
Cesium 快速入门(五)坐标系
Cesium 快速入门(六)实体类型介绍
Cesium 快速入门(七)材质详解
Cesium 快速入门(八)Primitive(图元)系统深度解析
Cesium 快速入门(九)Appearance(外观)系统深度解析
Cesium 快速入门(十) JulianDate(儒略日期)详解
Cesium 快速入门(十一)3D Tiles 大规模三维地理空间数据
Cesium 快速入门(十二)数据加载详解
Cesium 快速入门(十三)事件系统

底图更换

Cesium 默认使用 Bing Maps 作为地图源,但由于 Bing Maps 在国内可能存在访问限制,开发者常需替换为更适合国内使用的地图服务,以下以天地图为例来更换底图

底图类型与选择建议

瓦片类型协议标准优点缺点适用场景
WMTSOGC 标准支持严格地理参考,多级比例尺URL 复杂,配置项多天地图、国家地理信息公共服务平台
XYZ非标准但通用配置简单,URL 直观部分服务有访问限制高德、谷歌、OSM 等主流地图
Single Tile单张图片适合自定义背景图,离线场景精度低,不支持缩放简化地图、专题图背景

天地图 WMTS 服务(推荐国内使用)

WebMapTileServiceImageryProvider添加 WMTS 影像,下面为天地图加载

  1. 需要将viewer配置项中baseLayerbaseLayerPicker设置为false,否则 Cesium 同时会加载 Bing Maps
  2. 这里添加了天地图影像和地理标注,后添加的会覆盖前面的
  3. 后续案例中会使用天地图作为默认底图

前置工作

  • 需要申请天地图的 key,代码中提供了我自己的 key,方便大家调试,实际使用时请替换为自己的 key
<template><div ref="cesiumContainer" class="container"></div>
</template><script setup>
import { ref, onMounted } from "vue";
import * as Cesium from "cesium";
const cesiumContainer = ref(null);
let viewer = null;// 天地图TOKEN
const token = "05be06461004055923091de7f3e51aa6";onMounted(() => {// 初始化Viewerviewer = new Cesium.Viewer(cesiumContainer.value, {baseLayer: false, // 关闭默认地图baseLayerPicker: false, // 关闭底图选择器});initMap();
});// 加载天地图
const initMap = () => {// 以下为天地图及天地图标注加载const tiandituProvider = new Cesium.WebMapTileServiceImageryProvider({url:"http://{s}.tianditu.gov.cn/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=" +token,layer: "img",style: "default",format: "tiles",tileMatrixSetID: "w", // 天地图使用 Web 墨卡托投影(EPSG:3857),需确保 tileMatrixSetID: "w"subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"], // 子域名maximumLevel: 18,credit: new Cesium.Credit("天地图影像"),});// 添加地理标注const labelProvider = new Cesium.WebMapTileServiceImageryProvider({url:"http://{s}.tianditu.gov.cn/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&tileMatrix={TileMatrix}&tileRow={TileRow}&tileCol={TileCol}&style=default&format=tiles&tk=" +token,layer: "img",style: "default",format: "tiles",tileMatrixSetID: "w",subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"], // 子域名轮询maximumLevel: 18,credit: new Cesium.Credit("天地图影像"),});// 天地图影像添加到viewer实例的影像图层集合中viewer.imageryLayers.addImageryProvider(tiandituProvider);// 天地图地理标注(后添加的会覆盖前面的)viewer.imageryLayers.addImageryProvider(labelProvider);
};
</script>
<style scoped>
.container {width: 100vw;height: 100vh;
}
</style>

在这里插入图片描述

关键参数说明

参数取值范围说明
tileMatrixSetID“w” | “c”“w”=Web 墨卡托投影(EPSG:3857),“c”=经纬度投影(EPSG:4326)
subdomains数组天地图提供 8 个子域名,用于分散请求压力
maximumLevel1-1818 级为最高精度(约 0.5 米/像素)

高德地图 XYZ 影像瓦片

UrlTemplateImageryProvider添加 XYZ 影像,下面为高德地图瓦片加载

<template><div ref="cesiumContainer" class="container"></div>
</template><script setup>
import { ref, onMounted } from "vue";
import * as Cesium from "cesium";
const cesiumContainer = ref(null);
let viewer = null;onMounted(() => {// 初始化Viewerviewer = new Cesium.Viewer(cesiumContainer.value, {baseLayer: false, // 关闭默认地图baseLayerPicker: false, // 关闭底图选择器});initMap();
});// 加载高德地图
const initMap = () => {const gaodeProvider = new Cesium.UrlTemplateImageryProvider({url: "https://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",subdomains: ["1", "2", "3", "4"],});viewer.imageryLayers.addImageryProvider(gaodeProvider);
};
</script>
<style scoped>
.container {width: 100vw;height: 100vh;
}
</style>

添加顶级影像瓦片

SingleTileImageryProvider添加顶级影像瓦片,下面为单张图片加载

<template><div ref="cesiumContainer" class="container"></div>
</template><script setup>
import { ref, onMounted } from "vue";
import * as Cesium from "cesium";
const cesiumContainer = ref(null);
let viewer = null;onMounted(() => {// 初始化Viewerviewer = new Cesium.Viewer(cesiumContainer.value, {baseLayer: false, // 关闭默认地图baseLayerPicker: false, // 关闭底图选择器});initMap();
});// 加载单图像图层
const initMap = () => {const singleTileLayer = Cesium.ImageryLayer.fromProviderAsync(Cesium.SingleTileImageryProvider.fromUrl("/src/assets/earthbump1k.jpg", {rectangle: Cesium.Rectangle.fromDegrees(-180.0, -90.0, 180.0, 90.0),}));// singleTileLayer.alpha = 0.8; // 设置透明度viewer.imageryLayers.add(singleTileLayer);
};
</script>
<style scoped>
.container {width: 100vw;height: 100vh;
}
</style>

img 图片:
在这里插入图片描述

添加后效果图,可通过alpha属性设置透明度
在这里插入图片描述

http://www.dtcms.com/a/307679.html

相关文章:

  • Spring Cloud『学习笔记』
  • 前端项目如何同时导入一个库的不同版本
  • SpringMVC的核心架构与请求处理流程
  • React中的this绑定
  • 网关 + MDC 过滤器方案,5分钟集成 日志 traceid
  • Java学习-----SpringBoot的常用注解(下)
  • 嵌入式硬件中瓷片电容的基本原理与详解
  • WebRTC 多媒体 SDP 示例与解析
  • 嵌入式硬件学习(十)—— LED驱动+杂项设备驱动
  • 2025电商CPS分销与推客系统小程序开发:趋势、架构与实战解析
  • SpringBoot3.x引入Quartz,持久化到MySQL数据库
  • npm 设置国内镜像源
  • 中宇联:以“智云融合+AI”赋能全栈云MSP服务,深化阿里云生态合作
  • 【YOLOv1】
  • 多云场景实战:华为手机 QR 码绑定与 AWS云服务器终端登录全解
  • 全球SPAD技术发展全景:工艺节点、产能布局与中国突破
  • 科研快报 |无人机+AI:广东防控基孔热背后的技术革命
  • 无人机传感器系统架构解析
  • 了解SQL
  • HttpServletRequest详细解释
  • HttpServletRequest 和 HttpServletResponse核心接口区别
  • UDP_千兆光通信(四)Tri Mode Ethernet MAC ip核
  • 力扣 hot100 Day61
  • Mockito:Java单元测试Mock框架
  • Mac 系统下安装 nvm
  • 工业园区泵房物联网能耗优化解决方案:打造绿色低碳厂区
  • 组播 | 不同 VLAN 间数据转发实现逻辑 / 实验
  • 深入解读OpenTelemetry分布式链路追踪:原理与实践指南
  • tlias智能学习辅助系统--SpringAOP-基础-核心概念
  • Cesium 快速入门(一)快速搭建项目