首页 > 其他分享 >【Cesium】二、vite+vue3+cesium 使用,项目中使用cesium 地图,具体步骤。快速搭建Cesium三维地图应用项目

【Cesium】二、vite+vue3+cesium 使用,项目中使用cesium 地图,具体步骤。快速搭建Cesium三维地图应用项目

时间:2025-01-02 21:28:49浏览次数:3  
标签:false 100% 地图 Cesium cesium const vite

文章目录

一、准备项目

这里我已经创建好vite+vue3 项目模板了,需要可以直接克隆下来,进行下面步骤。

vite-commit:点击跳转GitHub

二、安装

下载依赖

yarn add  cesium vite-plugin-cesium vite -D

或者用npm

npm i cesium vite-plugin-cesium vite -D

修改vite.config.js

引入:import cesium from 'vite-plugin-cesium'

并在plugins中添加。

修改完后配置如图

在这里插入图片描述

三、修改App.vue

这里做的是演示,直接复制粘贴就好

<template>
  <div id="cesiumContainer"></div>
</template>
<script setup>
import { onMounted } from "vue";
import * as Cesium from "cesium";
onMounted(() => {
    const viewer =new Cesium.Viewer("cesiumContainer")
})
</script>
<style>
#app {
  width: 100%;
  height: 100%;
  font-family: sans-serif;
  text-align: center;
}

html,
body,
#cesiumContainer {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
}
</style>

四、启动项目

通过命令启动项目,访问页面就得到了下图

在这里插入图片描述
注意:这里打开控制台发现有个报错

参考文章:cesium(一)vite环境搭建

hook-exec.js:1 Blocked script execution in 'about:blank' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.

这个错误提示是沙箱iframe不允许使用js,这里禁用禁用infobox信息面板。

解决: 修改App.vue 代码

const viewer = new Cesium.Viewer("cesiumContainer", {
  infoBox: false,
});

刷新页面发现报错没有了。

五、消除控件

在这里插入图片描述

可以看到初始界面有许多控件,下面我们来隐藏这些控件:

参考文章:
使用Vite快速搭建Cesium三维地图应用项目
cesium(一)vite环境搭建
Cesium在vue3中的安装、使用
在这里插入图片描述
每个属性具体作用参考表格。

修改完后的App.vue代码

<template>
  <div id="cesiumContainer"></div>
</template>
<script setup>
import { onMounted } from "vue";
import * as Cesium from "cesium";

const initalize = async () => {
  const viewer = new Cesium.Viewer("cesiumContainer", {
    infoBox: false,
    geocoder: false,
    homeButton: false,
    sceneModePicker: false,
    baseLayerPicker: false,
    navigationHelpButton: false,
    animation: false,
    timeline: false,
    fullscreenButton: false,
    vrButton: false,
  });
  viewer._cesiumWidget._creditContainer.style.display = "none"; //取消版权信息
};
onMounted(() => {
  initalize();
});
</script>
<style>
#app {
  width: 100%;
  height: 100%;
  font-family: sans-serif;
  text-align: center;
}

html,
body,
#cesiumContainer {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
}
</style>

修改完后得到一个干净的页面

在这里插入图片描述

六、修改底图

我们来改一下底图,这里默认是bing地图,但我个人还是比较喜欢国产的天地图:

天地图服务cesium中有两种API可以调用: WebMapTileServiceImageryProviderUrlTemplateImageryProvider

改写App.vue方法:

完整代码

<template>
  <div id="cesiumContainer"></div>
</template>
<script setup>
import { onMounted } from "vue";
import * as Cesium from "cesium";

const initalize = async () => {
  const viewer = new Cesium.Viewer("cesiumContainer", {
    infoBox: false,
    geocoder: false,
    homeButton: false,
    sceneModePicker: false,
    baseLayerPicker: false,
    navigationHelpButton: false,
    animation: false,
    timeline: false,
    fullscreenButton: false,
    vrButton: false,
  });
  viewer._cesiumWidget._creditContainer.style.display = "none"; //取消版权信息
  const imageLayers = viewer.scene.imageryLayers;
  imageLayers.remove(imageLayers.get(0)); //移除默认影像图层
  const TDTTK = ""; //填入你自己的天地图Key
  // 天地图影像
  const tdtLayer = new Cesium.WebMapTileServiceImageryProvider({
    url: `http://t0.tianditu.com/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}&tk=${TDTTK}`,
    layer: "tdt",
    style: "default",
    format: "image/jpeg",
    tileMatrixSetID: "w",
    maximumLevel: 18,
    show: false,
  });
  viewer.imageryLayers.addImageryProvider(tdtLayer);
  // 天地图注记
  const tdtAnnotionLayer = new Cesium.WebMapTileServiceImageryProvider({
    url: `http://t0.tianditu.com/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}&tk=${TDTTK}`,
    layer: "tdtAnno",
    style: "default",
    format: "image/jpeg",
    tileMatrixSetID: "w",
    maximumLevel: 18,
    show: false,
  });
  viewer.imageryLayers.addImageryProvider(tdtAnnotionLayer);
};

onMounted(() => {
  initalize();
});
</script>
<style>
#app {
  width: 100%;
  height: 100%;
  font-family: sans-serif;
  text-align: center;
}

html,
body,
#cesiumContainer {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
}
</style>

代码中提到的天地图key要去官网申请,网址:点击跳转天地图

申请完后将key粘贴进去,刷新页面得到一个中文地图

在这里插入图片描述

ok,一个基本的cesium项目就创建好了,后面我还会更新更多关于cesium知识,敬请关注。

标签:false,100%,地图,Cesium,cesium,const,vite
From: https://blog.csdn.net/qq_46123200/article/details/144844496

相关文章

  • 基于高德地图API在Python中实现地图功能的方法
      本文介绍在高德开放平台中,申请、获取地图API的Key的方法;同时通过简单的Python代码,调取API信息,对所得Key的可用性加以验证。  首先,我们进入高德开放平台的官方网站。如果大家是第一次使用高德地图开放平台,那么需要点击右上角注册一个开发者账号。  注册完毕后,登录这一账......
  • 微信小程序/个人简历/地图/api 首页是个人简历的信息还包括一些功能/背景音乐(删除,更改
    微信小程序/个人简历/地图/api首页是个人简历的信息还包括一些功能/背景音乐(删除,更改)/个人视频介绍(删除,更改)/地图搜素/导航/直线距离/今日新闻本项目需要两个api需要自己申请添加腾讯地图api极速数据的新闻api申请之后到相应的js里面修改即可本项目功能非常多大家可以自......
  • cesium小知识:ScreenSpaceEventHandler 详解示例
    ScreenSpaceEventHandler是Cesium中用于处理屏幕空间事件的工具,它允许开发者响应用户的交互操作,如鼠标点击、拖动、滚轮滚动等。通过ScreenSpaceEventHandler,你可以轻松地为3D场景中的对象添加交互功能,例如选择实体、显示信息提示、控制相机移动等。详细说明1.概念......
  • cesium小知识: 处理动画的5种方式
    在Cesium中处理动画可以通过多种方式实现,具体取决于你想要创建的动画类型。Cesium提供了丰富的API来支持不同种类的动画,包括但不限于物体的移动、旋转、缩放、属性变化等。以下是几种常见的动画处理方法:1.使用Entity和SampledProperty对于动态数据或随时间变化的......
  • Cesium-(Primitive)-(RectangleOutlineGeometry)
    RectangleOutlineGeometry以下是RectangleOutlineGeometry类的构造函数属性,以表格形式展示:属性名类型默认值描述rectangleRectangle具有北、南、东、西属性的地理矩形,单位为弧度。ellipsoidEllipsoidEllipsoid.default可选的,矩形所在的椭球体。g......
  • Cesium中级开发教程之二十八:Entity和Primitive对比
    教程示例网站:https://thomaz529.github.io 采用相同的电脑配置和谷歌浏览器,分别用Entity和Primitive绘制50400个实体,Entity的帧率是20,Primitive的帧率是59,在性能优化上,Primitive比Entity有着巨大的优势!1、EntityEntity是Cesium中用于描述具有坐标位置的实际对象的高级概念......
  • Cesium初级开发教程之二十八:线性插值
    教程示例网站:https://thomaz529.github.io 一、效果图二、代码Cesium提供了线性插值的方法Cesium.Math.lerp,不仅仅可以为经纬度进行插值,也可以对颜色,等高线等进行插值计算。constlength=100;conststartLon=100constendLon=120constlat=34......
  • 解决在 Cesium 中加载 QGIS 瓦片地图错乱的问题
    作为一个GIS研究生,平时接触到很多地理信息系统(GIS)相关的技术,今天想分享一下我的经验,尤其是如何解决在Cesium中加载QGIS导出的瓦片地图时出现的地图错乱问题。问题背景最近我在做一个与地理信息相关的项目,目的是将QGIS中下载的瓦片地图放入Cesium中进行三维渲染。正常......
  • 应用Cesium+Echarts的结果可视化(绘制点要素+柱状图)
    注:以下仅为可视化示例,适合初学者学习或有相关功能需求的小白借鉴。Cesium绘制几何实体以及Echarts绘制图表的功能非常强大,大家可以根据需要自行调整:Cesium官方API文档https://www.vvpstk.com/public/Cesium/Documentation/ApacheECharts官方使用手册https://echarts.apache.o......
  • CesiumJS
    0x01概述(1)简介CesiumJS官网链接:https://cesium.com/platform/cesiumjs/Cesium官网链接:https://cesium.com/CesiumJS是基于JavaScript与WebGL的地图引擎特点:支持2D、2.5D、3D形式的地图展示可以自绘图形、高亮区域支持跨端应用(2)注册访问https://ion.......