【WebGIS实例】(10)Cesium开场效果(场景、相机旋转,自定义图片底图)

这篇具有很好参考价值的文章主要介绍了【WebGIS实例】(10)Cesium开场效果(场景、相机旋转,自定义图片底图)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果

漫游效果视频:

【WebGIS实例】(10)Cesium开场效果(场景、相机

点击鼠标后将停止旋转并正常加载影像底图:
【WebGIS实例】(10)Cesium开场效果(场景、相机旋转,自定义图片底图),【WebGIS实例】,javascript,CesiumJS,GIS

代码

可以直接看代码,注释写得应该比较清楚了:

/*
 * @Date: 2023-07-28 16:21:53
 * @LastEditors: ReBeX  420659880@qq.com
 * @LastEditTime: 2023-07-28 18:18:34
 * @FilePath: \cesium-tyro-blog\src\utils\Visualization\roaming.js
 * @Description: 相机漫游效果
 */

import { viewer } from '@/utils/createCesium.js' // 引入地图对象
import * as Cesium from 'cesium'

import darkEarth from '@/assets/images/darkEarth.jpg'

function showAllImagery(boolean = true) {
  // 获取图像图层集合
  const imageryLayers = viewer.imageryLayers;

  // 遍历图像图层并隐藏它们
  let numLayers = imageryLayers.length;
  for (let i = 0; i < numLayers; i++) {
    const layer = imageryLayers.get(i); // 获取图像图层对象
    layer.show = boolean; // 设置图像图层隐藏
  }
}

function roaming() {
  let isRoaming = true; // 漫游标志位
  const DEFAULT_LIGHTING = viewer.scene.globe.enableLighting; // 默认光照状态
  const DEFAULT_SKY_ATMOSPHERE = viewer.scene.skyAtmosphere.show; // 默认光照状态
  let bgImglayer; // 地球底图

  showAllImagery(false); // 隐藏所有图层
  viewer.clock.multiplier = -2000.0;  // 时间加速!

  const provider = await Cesium.SingleTileImageryProvider.fromUrl('/src/assets/images/darkEarth.jpg')
  bgImglayer = viewer.imageryLayers.addImageryProvider(provider); // 加载背景底图

  if (!DEFAULT_LIGHTING) {
    viewer.scene.globe.enableLighting = true; // 开启光照
  }
  if (!DEFAULT_SKY_ATMOSPHERE) {
    viewer.scene.skyAtmosphere.show = true; // 开启天空大气,能在一定程度上降低地球轮廓锯齿
  }

  // 添加鼠标事件,触发后停止漫游效果
  const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); // 交互句柄
  handler.setInputAction((event) => {
    isRoaming = false // 停止旋转
    showAllImagery(true) // 显示图层
    if (!DEFAULT_LIGHTING) {
      viewer.scene.globe.enableLighting = false; // 关闭光照
    }
    if (!DEFAULT_SKY_ATMOSPHERE) {
      viewer.scene.skyAtmosphere.show = false; // 关闭光照
    }
    viewer.imageryLayers.remove(bgImglayer, true); // 移除图层
    viewer.clock.multiplier = 1;  // 正常时间流速

    handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); // 移除鼠标事件监听
  }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

  (function roamingEvent() {
    if (isRoaming) {
      // 控制相机围绕 Z 轴旋转
      viewer.camera.rotate(Cesium.Cartesian3.UNIT_Z, Cesium.Math.toRadians(0.1));
      requestAnimationFrame(roamingEvent);
    }
  })()
}


export {
  roaming
}

调用:

import {roaming} from '@/utils/Visualization/roaming.js'

roaming()

其他

刚进入时就是直接加载这种图片作为SingleTileImageryProvider的,因为这样能够很快得加载出完整效果,而且不会像瓦片底图那样一张一张的加载。
【WebGIS实例】(10)Cesium开场效果(场景、相机旋转,自定义图片底图),【WebGIS实例】,javascript,CesiumJS,GIS文章来源地址https://www.toymoban.com/news/detail-652575.html

到了这里,关于【WebGIS实例】(10)Cesium开场效果(场景、相机旋转,自定义图片底图)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • CesiumJS使用详细,在vue中使用Cesium.js(WebGIS中的Cesium地图可视化应用)

    简述:Cesium是一种基于WebGL开源的虚拟地球技术,可以用于构建高性能、跨平台的三维地球应用程序,它支持多种数据格式和地图服务,可以实现地球表面的高精度渲染、地形分析、数据可视化等功能。Cesium还提供了丰富的API和插件,方便开发者进行二次开发和定制化,且可

    2024年02月10日
    浏览(47)
  • 迈向三维:vue3+Cesium.js三维WebGIS项目实战

    写在前面:随着市场对数字孪生的需求日益增多,对于前端从业者的能力从对框架vue、react的要求,逐步扩展到2D、3D空间的交互,为用户提供更紧密的立体交互。近年来前端对GIS的需求日益增多。本文将记录WebGIS的学习之旅,从实战项目入门,挖掘Cesium.js API,并逐步丰富项目

    2024年04月24日
    浏览(69)
  • 106.(cesium篇)cesium椎体旋转

    地图之家总目录(订阅之前建议先查看该博客) 下面献上完整代码,代码重要位置会做相应解释

    2024年02月03日
    浏览(52)
  • cesium视椎体的移动旋转

    前面我讲过视椎体的创建,今天讲一下椎体的旋转移动了。 首先有个方法就是确定两个点,就比如电灯一样从一点望向另一点, 第二种方法可以直接通过计算两个点的方向 然后去设置一些自己需要的角度去旋转 上面就是可以直接输入一个想要的角度就可以去旋转了,如果要

    2024年02月15日
    浏览(40)
  • cesium 3DTileset的平移、旋转、缩放

    加载模型 平移和修改高度 方法一:

    2024年02月12日
    浏览(41)
  • 【网安AIGC专题10.19】5 ChatRepair:ChatGPT+漏洞定位+补丁生成+补丁验证+APR方法+ChatRepair+不同修复场景+修复效果(韦恩图展示)

    本文为 邹德清教授的《网络安全专题》课堂笔记系列 的文章,本次专题主题为大模型。 Keep the Conversation Going: Fixing 162 out of 337 bugs for $0.42 each using ChatGPT arXiv 2023.4.1 https://arxiv.org/pdf/2304.00385.pdf Chunqiu Steven Xia, University of Illinois Urbana-Champaign Lingming Zhang, University of Illinois Urbana-

    2024年02月03日
    浏览(50)
  • 069:cesium围绕一个固定点自动左右旋转

    第069个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置一个固定点为中心点,通过lookAtTransform来固化点,通过监听clock,来设置自动旋转。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 示例效果

    2024年02月08日
    浏览(45)
  • cesium多颗卫星绕着不同的轨道旋转示例

    本示例的目的是介绍演示如何在vue+satellite项目中模拟多颗卫星的运行轨迹和覆盖状态。 直接复制下面的 vue+satellite源示例代码,操作2分钟即可运行实现效果 示例效果 配置方式 1)查看基础设置:https://xiaozhuanlan.com/topic/5180746392 2)将上述的源代码,粘贴到 src/views/Home.vue 中,

    2024年02月11日
    浏览(49)
  • Cesium相机理解

    关于cesium相机,包括里面内部原理网上有很多人讲的都很清楚了,我感觉这两个人写的都挺好得: 相机 Camera | Cesium 入门教程 (syzdev.cn) Cesium中的相机—setViewlookAtTransform_cesium setview_云上飞47636962的博客-CSDN博客上面这两篇文章讲的还是挺全面得,但是我感觉对于第一次接触三维

    2024年02月13日
    浏览(37)
  • cesium学习(相机)

    如果你知道位置的经纬度和高度,你可以使用相机的flyTo功能直接飞到CesiumJS中的那个位置。 flyTo要在完成后更改相机的方向,请添加一个orientation选项: 如果您知道要飞往的地点的名称但不确定该地点的坐标是什么,您可以使用pickPosition来查找。 以下代码片段将在点击时打

    2024年02月10日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包