vue3引入Cesium 与 地图初始化

1. 下载cesium

下载之前,我们肯定是已经创建vue3的项目了,并且已经申请了cesium的token。申请token很简单,去官网用邮箱注册账号,直接就能申请
官网:https://cesium.com/downloads/

# 直接下载默认版本的
 npm install cesium
# 也可以指定版本
npm install cesium@1.99 vite-plugin-cesium

2. 引入cesium

只需要再vite.config.js文件中加入两句代码

// 第一句
import cesium from 'vite-plugin-cesium'

export default defineConfig({
  plugins: [
    cesium()  // 第二句
  ],
})

3. 使用地图 与 初始化

  • 首选需要再 html 写一个标签,用来当容器,然后在script标签中引入 cesium。
  • 必须在页面挂在前调用 cesium创建方法。
  • 在cesium 中 用的都是 笛卡尔坐标 ,所以需要经纬度转笛卡尔坐标。
  • 要取消地图左下角的 logo 图标,可以直接在控制台中选择到那个标签的类名,在css中将他隐藏,这个css可以写在公共css文件中,也可以写在 app.vue中。
<template>
  <div id="cesiumContainer">
    
  </div>
</template>

<script setup>
import { ref ,onMounted} from 'vue'
// 引入cesium
import * as Cesium from 'cesium'
// onMounted 函数中调用
onMounted(()=>{
  // Cesium Token
  Cesium.Ion.defaultAccessToken = "这里就写自己申请的token"
  // ArcGIS影像图层 对浏览器会有压力
  const esri = new Cesium.ArcGisMapServerImageryProvider({
    url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
    enablePickFeatures:false
  })

// 这是页面上的控件显示与否(初始化)
  const Viewer = new Cesium.Viewer('cesiumContainer',{
    timeline:false, // 时间轴控件
    animation:false, // 动画控件
    geocoder:false, // 搜索控件
    homeButton:false, // 主页控件
    sceneModePicker:false, // 投影方式控件
    baseLayerPicker:false, // 图层选择控件
    navigationHelpButton:false, // 帮助控件
    fullscreenButton:false, //全屏控件
    imageryProvider:esri ,// 自定义影像图层 ,默认是谷歌的影像图层
    terrainProvider:Cesium.createWorldTerrain({
      requestWaterMask:true, // 水面特效 对浏览器会有压力
    })
  });

  // 经纬度 转 笛卡尔坐标 返回的是 笛卡尔坐标 ( Z != "高度" )
  const Carteaian1 =  Cesium.Cartesian3.fromDegrees(110,20,20)
  const Carteaian2 =  Cesium.Cartesian3.fromDegrees(110,20,30)
  console.log(Carteaian1,Carteaian2);

  // 笛卡尔 转 弧度坐标
  let cartographic = Cesium.Cartographic.fromCartesian(Carteaian1)
  // 弧度坐标 转 角度坐标(经纬度)
  let lon = Cesium.Math.toDegrees(cartographic.longitude)
  let lat = Cesium.Math.toDegrees(cartographic.latitude)

  console.log(lon,lat,cartographic.height); // 转换后的经纬度坐标
 
})

</script>

<style scoped>

#cesiumContainer {
  position:absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
}
</style>


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容