【Cesium学习笔记】一、加载Cesium并更换天地图底图


Ps:本教程所有代码于同一个工程中,运行npm run dev默认首页为App.vue,只需替换App.vue的内容即可切换不同页面。

一、加载Cesium

本项目使用nvm管理node版本,开发工具为VScode

名称版本
node21.7.2
nvm1.1.11
cesium1.116.0
vue3.4.21

1、利用vite来创建环境

npm create vite@latest

2、创建过程选择vue,js
在这里插入图片描述
3、Cd到创建好的文件夹中进行npm安装。

cd csdn-cesium
npm install

4、安装 Cesium 库以及 Vite 构建工具的 Cesium 插件。

npm i cesium vite-plugin-cesium

5、vite.config.js改写为

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import cesium from 'vite-plugin-cesium'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(),cesium()],
})

6、运行项目 npm run dev
7、在App.vue中修改script内容,并保存代码刷新页面

<script setup>
import * as Cesium from 'cesium'
console.log('以下为打印的cesium内容')
console.log(Cesium)
</script>

8、浏览器网页中F12查看控制台打印的结果,有类似下图内容则导入cesium成功。
在这里插入图片描述

二、用Viewer显示地球

修改App.vue中的内容为

<template>
  <div id="cesiumContainer"></div>
</template>

<script setup>
import { onMounted } from 'vue'
import * as Cesium from 'cesium'

onMounted(() => {
  Cesium.Ion.defaultAccessToken = '你的密钥'
  const viewer = new Cesium.Viewer('cesiumContainer')
})
</script>

<style scoped>
#cesiumContainer {
  width: 100vw; /* 设置容器宽度为视窗宽度的100% */
  height: 100vh; /* 设置容器高度为视窗高度的100% */
  margin: 0; /* 移除外边距 */
  padding: 0; /* 移除内边距 */
  overflow: hidden; /* 隐藏溢出内容 */
}
</style>

在这里cesiumcontainer外面会包裹着一个data-v-app的元素,css带有2的rem,有知道怎么处理的麻烦告知一下。

在这里插入图片描述
网页出现小地球就成功了

三、更换天地图底图

  1. cesium换天地图底图
  //配置并创建天地图Web瓦片服务影像提供者
  const tianditu = 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='+'你自己的密钥',
    layer: 'img_w',
    style: 'default',
    format: 'tiles',
    tileMatrixSetID: 'w',
    subdomains:['t0','t1','t2','t3','t4','t5','t6','t7'],
    maximumLevel: 18,
    credit: new Cesium.Credit('天地图'),
  })  

  // 将天地图层添加到观众实例的影像图层集合中
  viewer.imageryLayers.addImageryProvider(tianditu)

在这里插入图片描述
更换好了后小地球更蓝一些

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于地图服务加载Cesium底图并实现底图切换,你可以使用Cesium官方提供的`ImageryLayer`类来实现。 首先,你需要获取地图的影像图层服务地址,例如: ```javascript var tiandituUrl = 'http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&FORMAT=tiles&TILEMATRIXSET=w&'; var tiandituToken = 'tk=your_token'; ``` 然后,你可以使用`ImageryLayer`类来加载地图的影像图层,并将其添加到Cesium的场景中。代码如下: ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); var tiandituLayer = new Cesium.ImageryLayer( new Cesium.WebMapTileServiceImageryProvider({ url: tiandituUrl + tiandituToken, layer: 'img', style: 'default', format: 'tiles', tileMatrixSetID: 'w', maximumLevel: 18, credit: new Cesium.Credit('地图影像服务'), }) ); viewer.scene.imageryLayers.add(tiandituLayer); ``` 这样,你就可以在Cesium加载地图的影像图层了。如果你想切换底图,只需要移除当前的影像图层,然后添加新的影像图层即可。例如,以下代码实现了在点击按钮时切换底图: ```javascript var button = document.getElementById('switchButton'); var isTianditu = true; button.onclick = function() { if (isTianditu) { viewer.scene.imageryLayers.remove(tiandituLayer); var bingLayer = new Cesium.ImageryLayer( new Cesium.BingMapsImageryProvider({ url: 'https://dev.virtualearth.net', key: 'your_bing_maps_key', mapStyle: Cesium.BingMapsStyle.AERIAL_WITH_LABELS, }) ); viewer.scene.imageryLayers.add(bingLayer); isTianditu = false; } else { viewer.scene.imageryLayers.remove(bingLayer); viewer.scene.imageryLayers.add(tiandituLayer); isTianditu = true; } }; ``` 这里的代码实现了在点击按钮时切换底图,如果当前是地图,则切换到Bing Maps;如果当前是Bing Maps,则切换回地图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值