前言
缺少前置学习使用资料,请自行查阅:[https://blog.csdn.net/weixin_44402694/article/details/123110136](https://blog.csdn.net/weixin_44402694/article/details/123110136)
以下示例使用到的公共静态资料,不建议下载,建议官网自行下载超图Build资源,示例所涉及图片会在示例使用到时提供出来。如有需要可下载:[https://download.csdn.net/download/weixin_44402694/82180350](https://download.csdn.net/download/weixin_44402694/82180350)。
通过viewer.imageryLayers.remove实现底图切换,以bingmap、天地图为例。
使用
-
效果
-
完整代码
<!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>实现底图切换 - 通过remove</title>
<link href="./public/Build/Cesium/Widgets/widgets.css" rel="stylesheet" />
<script
type="text/javascript"
src="./public/Build/Cesium/Cesium.js"
></script>
<style>
* {
margin: 0;
padding: 0;
}
html,
body,
#cesium-container {
width: 100%;
height: 100%;
}
.panel {
position: fixed;
left: 10px;
top: 10px;
z-index: 1;
background-color: #fff;
}
.panel .btn {
cursor: pointer;
}
</style>
</head>
<body>
<div id="cesium-container" />
<div class="panel">
<p class="btn">天地图</p>
<p class="btn">bingmap</p>
</div>
<script>
let viewer
window.onload = function () {
viewer = new Cesium.Viewer('cesium-container', {
sceneModePicker: true,
navigation: false,
})
const baseLayer = viewer.imageryLayers.get(0) // 初始默认的cesium的图片服务
// baseLayer.show = false // 可通过show做显隐
baseLayer.alpha = 0 // 可通过透明度做显隐
// viewer.imageryLayers.remove(baseLayer) // 可通过remove删除
initBindDrawEventHandler()
}
// 初始化绑定按钮的绘制事件
function initBindDrawEventHandler() {
const btns = document.querySelectorAll('.panel .btn')
btns[0].addEventListener('click', () => {
activeCurrentClickBtnHandler(0)
if (viewer.imageryLayers.get(1)) { // 如果已经加载了bingmap
viewer.imageryLayers.remove(viewer.imageryLayers.get(1))
}
setMapStyleByTDTHandler()
})
btns[1].addEventListener('click', () => {
activeCurrentClickBtnHandler(1)
if (viewer.imageryLayers.get(1)) { // 如果已经加载了天地图
viewer.imageryLayers.remove(viewer.imageryLayers.get(1)) // 矢量地图
viewer.imageryLayers.remove(viewer.imageryLayers.get(1)) // 中文注记
}
setMapStyleByBingMapHandler()
})
}
// 高亮当前点击的按钮
function activeCurrentClickBtnHandler(idx) {
const btns = document.querySelectorAll('.panel .btn')
Array.from(btns).forEach((btn, index) => {
btn.style.color = index === idx ? 'red' : '#000'
})
}
// 加载天地图
function setMapStyleByTDTHandler() {
viewer.imageryLayers.addImageryProvider(
new Cesium.TiandituImageryProvider({
mapStyle: Cesium.TiandituMapsStyle.VEC_C, //天地图全球中文注记服务
token: 'bc3b5d509e380ae4308cc4ace4385ddc', //由天地图官网申请的密钥
})
)
viewer.imageryLayers.addImageryProvider(
new Cesium.TiandituImageryProvider({
mapStyle: Cesium.TiandituMapsStyle.CIA_C, //天地图全球中文注记服务
token: 'bc3b5d509e380ae4308cc4ace4385ddc', //由天地图官网申请的密钥
})
)
}
// 加载bingmap
function setMapStyleByBingMapHandler() {
viewer.imageryLayers.addImageryProvider(
new Cesium.BingMapsImageryProvider({
url: 'https://dev.virtualearth.net',
mapStyle: Cesium.BingMapsStyle.AERIAL,
key: 'AhrJDRCi6VfUJWMk-_eZNGTfDSddoQfoUGRaf1PJg3KPejm6W3H0kjdhJFgIV948', //由BingMap官网申请的密钥
})
)
}
</script>
</body>
</html>