上一篇文章初步写了一下 vue 集成 cesium 方法和注意的地方。

最近因为项目中用到的地图资源并不是拿来就能用,需要调整显示的角度、缩放等设置。所以把 cesium 所有的相机(也就是视角)设置都体验了一遍,正好记录一下异同,分享出来。

笔者作为初探的小白,如有错漏还请看官指出加以改正。

Viewer.zoomTo(target, offset)

官方解释:
Asynchronously sets the camera to view the provided entity, entities, or data source. If the data source is still in the process of loading or the visualization is otherwise still loading, this method waits for the data to be ready before performing the zoom.
The offset is heading/pitch/range in the local east-north-up reference frame centered at the center of the bounding sphere. The heading and the pitch angles are defined in the local east-north-up reference frame. The heading is the angle from y axis and increasing towards the x axis. Pitch is the rotation from the xy-plane. Positive pitch angles are above the plane. Negative pitch angles are below the plane. The range is the distance from the center. If the range is zero, a range will be computed such that the whole bounding sphere is visible.

翻译成人话:
这个方法用来异步控制相机平面旋转、Z轴旋转和缩放(个人理解)。

首先说一下两个参数:
target:相机显示的焦点,可以是图像、实体等;
offset:就是上面说的旋转角度和缩放距离,这里接收一个 HeadingPitchRange 对象。

示例一:不做旋转设置

viewer.zoomTo(tileset, //通过 new Cesium3DTileset 创建的图像,使相机聚焦图像位置new Cesium.HeadingPitchRange(0,0,0) //旋转缩放配置,默认为0不做旋转缩放
);

示例二:沿Z轴旋转

可以看到初始的图像不适合展示使用,那么首先旋转地图以看到正面。

viewer.zoomTo(tileset,//通过 new Cesium3DTileset 创建的图像,使相机聚焦图像位置new Cesium.HeadingPitchRange( //旋转缩放配置,默认为0不做旋转缩放0,-0.5,//Z轴旋转角度0)
);

示例二:缩放设置

通过旋转图像可以看到地图的全景了,但是项目需求我们显示某个区域的图像,而不是现在这种满屏黑色背景。

所以需要设置缩放,这里缩放不同于高德百度那种设置缩放的级别,这里是通过设置相机的显示距离进行缩放。

viewer.zoomTo(tileset,//通过 new Cesium3DTileset 创建的图像,使相机聚焦图像位置new Cesium.HeadingPitchRange( //旋转缩放配置,默认为0不做旋转缩放0,-0.5,//Z轴旋转角度500//设置显示距离)
);

示例三:平面旋转(或Y轴旋转)

viewer.zoomTo(tileset,//通过 new Cesium3DTileset 创建的图像,使相机聚焦图像位置new Cesium.HeadingPitchRange( //旋转缩放配置,默认为0不做旋转缩放0.5,-0.5,//Z轴旋转角度500//设置显示距离)
);


可以看到相较于前面的视角,逆时针旋转。如果这里看的不明显,可以通过鼠标控制相机高度。可以对比示例二中图像的方向,就比较明显了。

Viewer.flyTo(target, options)

官方解释:
Flies the camera to the provided entity, entities, or data source. If the data source is still in the process of loading or the visualization is otherwise still loading, this method waits for the data to be ready before performing the flight.
The offset is heading/pitch/range in the local east-north-up reference frame centered at the center of the bounding sphere. The heading and the pitch angles are defined in the local east-north-up reference frame. The heading is the angle from y axis and increasing towards the x axis. Pitch is the rotation from the xy-plane. Positive pitch angles are above the plane. Negative pitch angles are below the plane. The range is the distance from the center. If the range is zero, a range will be computed such that the whole bounding sphere is visible.

感觉跟 zoomTo 方法的解释没有,太大区别。唯一的区别我感觉就是同步异步的问题,zoomTo 官方说明是异步设置相机角度,具体我们感受太出来,因为加载都挺慢的。

但是 flyTo 方法肯定是同步的没毛病,因为它的 options 有一个参数 duration ,是相机视角转移到指定图像的时间。并且实际开发中可以看出来视角转移的过程,是图像首先加载出来后,再转移相机视角。

option

配置项有三个:
duration:相机移动到指定的图像用时,默认3秒
maximumHeight:限制相机最大高度,不过我尝试了几种设置还没有说明效果,并没有影响图像显示
offset:接收一个 HeadingPitchRange 对象,同zoomTo方法的效果

示例一 无配置项


viewer.flyTo(tileset //通过 new Cesium3DTileset 创建的图像,使相机聚焦图像位置
)


可以看到方法自动设置了相机的旋转和缩放,不再是初始的图像。

示例二 配置旋转缩放

viewer.flyTo(tileset, //通过 new Cesium3DTileset 创建的图像,使相机聚焦图像位置{duration:1,maximumHeight:0.5,offset:new Cesium.HeadingPitchRange(0.5,-0.5,500)}
)


运行后的效果和 zoomTo 方法一致,处理有1秒的移动动画,其它没有区别。

所以 flyTo 和 zoomTo 两个方法看起来差别就在同步和异步上,各位根据自己需求取舍。

Vue集成Cesium之二 —— 相机(Camera)相关推荐

  1. vue集成cesium入门教程(1)环境搭建、初始化三维地球

    1.概述   这篇内容是<vue集成cesium入门教程>的第一篇,我将记录在vue中集成cesium并实现页面的初始化(显示三维地图页面)等学习内容.效果如下: 2.实现步骤   首先是 ...

  2. vue集成超图supermap-cesium实践

    一.使用vue-cli创建vue工程 1,cmd进入文件夹20200305,创建名为vuesupermap的工程. 命令为:vue init webpack vuesupermap 2,进入项目根目录 ...

  3. Camera开发系列之二 相机数据回调处理

    章节 Camera开发系列之一-显示摄像头实时画面 Camera开发系列之二-相机预览数据回调 Camera开发系列之三-相机数据硬编码为h264 Camera开发系列之四-使用MediaMuxer封 ...

  4. 从零开始vue使用cesium开发3d地形terrainProvider(二)

    从零开始vue使用cesium通过nginx发布3d地形数据并展示(续二)_yinzisang的博客-CSDN博客 基本上大型项目都得使用nginx来发布服务(切片数据太大),因为我们这是测试demo ...

  5. SpringBoot和Vue集成Markdown和多级评论——基于SpringBoot和Vue的后台管理系统项目系列博客(二十三)

    系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...

  6. cesium根据输入高度设置相机camera视角高度

    核心代码: camera.setView({destination: Cesium.Cartesian3.fromRadians(viewer.camera.positionCartographic. ...

  7. 第一章:Vue3.0+Openlayers+Cesium创建二三维联动项目

    Vue3.0+Openlayers+Cesium创建二三维联动项目 简介 Vue项目创建 安装依赖 框架结构 地图加载 显示效果 结语 简介 大家好!从今天开始,我将分享我在GIS开发的过程中如何利用 ...

  8. vue 使用 cesium 接入 gltf 模型

    vue 使用 cesium 接入 gltf 模型 这个其实说简单也简单,但是说复杂也不容易搞.尤其是转化成vue语法或者是在vue项目接入的时候会有些许的坑,我在接入的时候也是有很多问题,好在最后把模 ...

  9. 如何使用Vue集成其它UI组件?如何阅读UI官网?移动端组件Vant实例教程(熬夜干货)

    如何使用Vue集成其它UI组件 前言 一.Vant是什么? 二.基础环境准备 1.1 了解是根本 1.2 安装 1.3 引入组件 3.1 步骤一 3.2 步骤二 3.3 步骤三 二.事件绑定 2.1 ...

最新文章

  1. 浅谈MVC Form认证
  2. (转)数组指针和指针数组的区别
  3. POJ3080方法很多(暴力,KMP,后缀数组,DP)
  4. 网络编程懒人入门(三):快速理解TCP协议一篇就够
  5. css实现让页面的footer始终位于底部
  6. 日跑几十万作业,唯品会HDFS是如何优化的
  7. oracle11告警日志,oracle 11.2.0.4 告警日志里错误
  8. 【渝粤教育】国家开放大学2018年春季 3781-22T燃气燃烧技术与设备 参考试题
  9. 我们正处在“后开源”时代?
  10. Sphinx+MySQL5.1x+SphinxSE+mmseg
  11. 基于Go语言构建区块链:part5
  12. 2——类和对象的关系
  13. error: ‘nullptr’ was not declared in this scope
  14. Cadence Allegro针对Shape进行Vertex推挤拉伸操作方法图文教程
  15. GHost win7(2016.05)版本安装后,清除流氓软件的过程
  16. Signature Pad 使用
  17. html插入图片向下,HTML基础8--插入图片及嵌入
  18. Google 广告考试试题
  19. xsocks 64位平台下编译问题小记
  20. 关于ORACLE PLSQL读文件

热门文章

  1. Speak2Me:社会性线上英语交流系统
  2. 如何入门黑客?黑客入门书籍推荐?
  3. 基因组各种版本对应关系
  4. HTML5期末大作业:关于酒店主题网站设计——高级酒店公寓网页(4页) HTML+CSS+JavaScript...
  5. 职业选择心理测试软件,职业选择的心理测试题
  6. app发布到应用市场的有感
  7. CRM是什么意思?它能够做什么?
  8. tmm-jellyfin转移演员照片sftp版
  9. 千禧一代:中国00后群体研究报告-未来营销实验室.pdf
  10. ​大学生做微商,你觉得应该支持吗?