vue项目引入cesium,创建3d地球,快速上手~

这篇具有很好参考价值的文章主要介绍了vue项目引入cesium,创建3d地球,快速上手~。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近开发的可视化项目中用到cesium库,准备把自己从中学习的功能,全部记录下来,完整项目demo预览地址:点击预览完整项目

引入ceium

网上有很多种引入,在此只介绍一种最简单的,也是本项目中使用的.
首先要先有一个cesium的库,这里我建议直接npm下载,自己也可以从github下载

npm install cesium@1.8

因为不同版本可能有所出入,本系列都将采用1.82版本,之后在项目node_modules文件下找到我们下载好的依赖.

vue引入cesium,cesium笔记,vue.js,3d,javascript
之后我们找到cesium>build下的文件,框起来的文件就是我们需要的,第一个是经过编译压缩的,第二个是完整未压缩的,我建议两个都拷贝走.开发的时候引入第一个,如果出现报错会有报错的详细,而压缩的则没有,生产的时候换成压缩的,体积小.之后复制到项目的public文件下

vue引入cesium,cesium笔记,vue.js,3d,javascript

然后在项目piblic下index.html引入该文件(以引入完整的为例)

      <!-- cesium导入 -->
      <script src="./Cesium2/Cesium.js"></script>
      <!-- cesium样式文件 -->
      <link rel="stylesheet" href="./Cesium2/Widgets/widgets.css" />

初始化地球

初始化准备工作,先准备一个标签

<template>
  <div>
    <div id="cesium-container"></div>
  </div>
</template>

注意这个标签要设置宽高,不然你看不见东西.

  mounted() {
    this.init()
  },
  methods: {
    // 初始化
    init() {
      //要提前准备一个token(这个没有也没关系,后面我们不用这个)
      //Cesium 官网注册的key https://ion.cesium.com/signin
      Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmNDZkMmIwZS01ZTFmLTRlYTEtOGRjNy05M2I0MzU4OTlhZTMiLCJpZCI6MTMzNDUwLCJpYXQiOjE2ODEzNTM3OTN9.6fKSEcApT4KcZE-iTJp4HrNKjTlc3mgDYZuF79cL0Ig'
      //如果没有上面的那个token,你生成的界面没有地球是正常的
      //第一个参数是标签的id,第二个参数是相关配置,我们先不写
      new Cesium.Viewer('cesium-container', {})
    },
  }

之后看见下面的效果,就证明前面的都没问题.

vue引入cesium,cesium笔记,vue.js,3d,javascript

文档api介绍

推荐一个中文文档,当然网上还有好多.
http://cesium.xin/cesium/cn/Documentation1.62/index.html
进入文档,搜索刚才我们初始化的方法

vue引入cesium,cesium笔记,vue.js,3d,javascript
写的很清楚,参数含义,使用方法.之后用不明白的可以查看文档.

之后我们根据文档的配置,去除我们不需要的功能,(我们只要一个地球)

    init() {
      //Cesium 官网注册的key https://ion.cesium.com/signin
      Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmNDZkMmIwZS01ZTFmLTRlYTEtOGRjNy05M2I0MzU4OTlhZTMiLCJpZCI6MTMzNDUwLCJpYXQiOjE2ODEzNTM3OTN9.6fKSEcApT4KcZE-iTJp4HrNKjTlc3mgDYZuF79cL0Ig'
      window.viewer = new Cesium.Viewer('cesium-container', {
        terrainProvider: Cesium.createWorldTerrain(),//创建全球范围内的地形数据集
        geocoder: false, // 是否显示搜索按钮
        homeButton: false, // 是否显示主页按钮
        animation: false, // 是否显示左下角的仪表盘
        baseLayerPicker: false, // 是否显示图层选择器按钮,右上角那个地图图标
        fullscreenButton: false, // 是否显示全屏按钮
        sceneModePicker: false, // 是否显示右上角的模式切换按钮
        selectionIndicator: false, // 是否显示选取指示器组件
        timeline: false, // 是否显示下边的时间轴
        navigationHelpButton: false, // 是否显示右上角的帮助按钮

        vrButton: false, // 是否显示VR按钮
        infoBox: false, // 是否显示提示信息
        navigationInstructionsInitiallyVisible: true, // 是不显示导航
        scene3DOnly: true, // 是否指定仅为三维模式,全部使用三维模式可节约 GPU 资源
      })
      viewer.cesiumWidget.creditContainer.style.display = "none";// 隐藏Logo,水印
    },

之后再刷新页面,就可以得到一个纯净的地球页面

vue引入cesium,cesium笔记,vue.js,3d,javascript
到此我们就完成了一个可视化的3d地球.

封装js

因为后面还有很多的功能,我们不可能每个组件内都写一堆cesium的代码,所以我们将所有有关cesium的东西都封装在一起,在需要的地方引入即可.
新建一个js文件,我们就叫Xcesium.js.之后将我们刚才初始化的方法加入到封装类.(如果你后续不需要那么多功能,你也可以不封装)

class XCesium {
  constructor() { }
  initData() {
    this.viewer = null
  }
  // 初始化
  init() {
    //Cesium 官网注册的key https://ion.cesium.com/signin
    Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmNDZkMmIwZS01ZTFmLTRlYTEtOGRjNy05M2I0MzU4OTlhZTMiLCJpZCI6MTMzNDUwLCJpYXQiOjE2ODEzNTM3OTN9.6fKSEcApT4KcZE-iTJp4HrNKjTlc3mgDYZuF79cL0Ig'
    this.viewer = new Cesium.Viewer('cesium-container', {
      terrainProvider: Cesium.createWorldTerrain(),//创建全球范围内的地形数据集
      geocoder: false, // 是否显示搜索按钮
      homeButton: false, // 是否显示主页按钮
      animation: false, // 是否显示左下角的仪表盘
      baseLayerPicker: false, // 是否显示图层选择器按钮,右上角那个地图图标
      fullscreenButton: false, // 是否显示全屏按钮
      sceneModePicker: false, // 是否显示右上角的模式切换按钮
      selectionIndicator: false, // 是否显示选取指示器组件
      timeline: false, // 是否显示下边的时间轴
      navigationHelpButton: false, // 是否显示右上角的帮助按钮

      vrButton: false, // 是否显示VR按钮
      infoBox: false, // 是否显示提示信息
      navigationInstructionsInitiallyVisible: true, // 是不显示导航
      scene3DOnly: true, // 是否指定仅为三维模式,全部使用三维模式可节约 GPU 资源
      requestRenderMode: true, // 启用请求渲染模式
      // https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer
      // imageryProvider: new Cesium.ArcGisMapServerImageryProvider({
      //   url: 'https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer'
      // })
    })
    this.viewer.cesiumWidget.creditContainer.style.display = "none";// 隐藏Logo,水印
    return this.viewer
  }
}
export default new XCesium()

之后在我们的组件引入

  • 我们把返回的实例挂载到window,不要用Viewer命名,容易混淆
  • 为什么挂载在window,因为vue.data对数据进行劫持,造成性能损耗
  • XViewer可以理解为我们创建的整个场景实例,可以直接.方法名调用官方的方法
  • XCesium是我们自己封的类,可以直接.方法名调用我们自己写的方法
import  XCesium  from '@/utils/Xcesium.js'
export default {
  mounted() {
    //初始化
    window.XViewer = XCesium.init()
    console.log('window.XViewer', window.XViewer);
    console.log('XCesium',XCesium);
  },
}

vue引入cesium,cesium笔记,vue.js,3d,javascript
可以看到两个输出结果,XViewer是一个Viwer类,可以在官方文档中搜索Viwer类方法使用,例如后面最常用的飞行flyTo聚焦zoomTo,而XCesium是我们自己封装的类,后续我们写的方法可以在此类下直接调用.

本文主要介绍如何引入cesium并生成3d地球,并在项目中封装自己的cesium.后续教程基于此封装继续延伸!文章来源地址https://www.toymoban.com/news/detail-537328.html

到了这里,关于vue项目引入cesium,创建3d地球,快速上手~的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在vite创建的vue3项目中使用Cesium加载czml路径信息和无人机模型

    用到的区域文件、地图标记文件、路径信息文件、模型文件 提取码:99jq 使用vite创建vue3项目 cd到创建的项目文件夹中 安装Cesium 配置 vite.config.js文件:添加Cesium并设置反向代理实现跨域。 style.css(可选):修改#app样式 代码 App.vue 解读 加载token 创建查看器viewer,加载世界街道地

    2024年02月16日
    浏览(46)
  • 03.Three.js的入门教程(二)如何创建一个3D地球?

    前言:通过上节课 02.Three.js的入门课程(一),我们了解了Three.js的最小案例DEMO,熟悉了几个重要组成部分。这节课带领大家编写一个3D地球。 一、通过纹理图渲染一个地球 1.1. 创建一个纹理加载器对象TextureLoader,可以加载图片作为纹理贴图; 1.2.完整代码结构 二、小球标

    2024年02月04日
    浏览(69)
  • vue3 vite直接创建项目 添加 element-ui 按需引入和全部引入

     创建home 工程 yran dev就可以看到一个网址 点进去就可以看到效果了 添加element-ui 之前的main.js 修改后的 element-plus 在vue3中的按需引入。要比2简介很多 。自动导入也是推荐的一种写法 我们注释掉全局引用  然后改为按需引入 源文件  修改后 首先安装两款插件 修改后

    2024年02月17日
    浏览(63)
  • 微信小程序引入高德地图Demo 快速上手

    本文参照官方文档进行编写 最后引入官方实例 最终效果 ` 注册账号 https://lbs.amap.com/?ref=http%3A%2F%2Flbs.amap.com%2Fdev%2F#/ 获取Key教程 https://lbs.amap.com/api/wx/guide/create-project/get-key/ 访问网址 https://github.com/amap-demo/wx-regeo-poiaround-weather 下载微信小程序实例 用微信开发者工具打开 打开

    2024年02月11日
    浏览(80)
  • Echarts 3d地球实现(Vue框架)

    最近迷上了echarts实现数据可视化了,也确实因为工作需要,目前公司需要我们来在自己的新厂房展厅把自己的产品展示出来,我所在研发部软件组,第一个想到的就是使用echarts来实现一个数据可视化的大屏了,下面就带着大家看看我这段时间使用Echarts来实现一个3D地球的过

    2024年04月25日
    浏览(26)
  • 【Go语言快速上手(四)】面向对象的三大特性引入

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Go语言专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多Go语言知识   🔝🔝 GO语言也支持面向对象编程,但是和传统的面向对象语言(如CPP)有明显的区别,GO并不是纯粹的面对对象编程语言.所以说GO是支持面向对

    2024年04月26日
    浏览(53)
  • 【案例】3D地球(vue+three.js)

    需要下载插件 有人找不到合适的地球平面图的话,可直接地球平面图

    2024年02月06日
    浏览(42)
  • Vue 中使用Echarts构建3D地球

    一:要用Echarts实现3D地球 除了 echarts还是远远不够的 ,除了echarts外 我们 还得引用 echarts-gl  jquery 也是需要的 不然会有多次报错 1.收首先在 main.js中分别引入所需的插件, 此外 除了在main.js中 在相应.vue 中也需要引用 使用echarts的3D功能 全局引入Echarts-gl 一般建议装最低版本

    2024年02月12日
    浏览(37)
  • Cesium引入vite + vue3

    卸载命令 使用 vite.config.js 组件使用 加载高德地图 高德地图的加载方便很多,并不需要申请key,可以直接加载到我们的Cesium中。 加载ArcGISMap地图

    2024年02月14日
    浏览(37)
  • vue3+echarts实现3D地球+飞线

    效果图 1、下载         指令 我的版本: 2、html容器 3、js代码 附加纹理图

    2024年02月04日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包