cesium相机视角跳转和缩放至entity方法汇总

       下面汇总的相机视角跳转方法有很多种,都是根据某一个经纬度高程坐标[x,y,z],Entity实体或者矩形四至范围[west , south , east , north]作为视图跳转到目标范围的中心,然后在该位置上设置相机相对的偏移量,这个偏移量主要是设置相机的偏航角、航向角和翻滚角或者椭球范围,请大家根据实际情况选择合适的相机视角跳转方法 。
import * as Cesium from "cesium";/*** 相机移动到某一个坐标或者矩形范围内* @param {Object} viewer -地图对象* @param {Object} option -参数对象* @param {Number} option.duration -视图跳转时间(单位/s)* @param {String} option.type -跳转目标类型方式,‘point’:相机移动到某一个坐标;‘rectangle’:相机移动到矩形范围内* @param {Array} option.xyz -跳转目标类型方式:‘point’,则xyz为[x,y,z]* @param {Array} option.wsen -跳转目标类型方式:‘rectangle’,则wsen为[west , south , east , north],(单位/度)* @param {Number} option.heading -相机航向角* @param {Number} option.pitch -相机俯仰角* @param {Number} option.roll -相机翻滚角*/
export function cameraFlyTo(viewer, option) {let destination;if ((option.type = "point")) {destination = Cesium.Cartesian3.fromDegrees(...option.xyz);} else if ((option.type = "rectangle")) {destination = Cesium.Cartesian3.fromDegrees(...option.ewsn);}viewer.camera.flyTo({duration: option.duration,destination,orientation: {heading: Cesium.Math.toRadians(option.heading),pitch: Cesium.Math.toRadians(option.pitch),roll: option.roll,},});
}/*** 相机移动到某一个坐标范围内* @param {Object} viewer -地图对象* @param {Object} option -参数对象* @param {Array} option.xyz -跳转椭球体中心坐标数组[x,y,z]* @param {Number} option.heading -相机航向角* @param {Number} option.pitch -相机俯仰角* @param {Number} option.range -以椭球体中心坐标为中心的的范围大小(单位/m)*/
export function cameraLookAt(viewer, option) {viewer.camera.flyTo({target: Cesium.Cartesian3.fromDegrees(...option.xyz),offset: {heading: Cesium.Math.toRadians(option.heading),pitch: Cesium.Math.toRadians(option.pitch),range: option.range,},});
}/*** 相机移动到某一坐标范围内* @param {Object} viewer -地图对象* @param {Object} option -参数对象* @param {Array} option.xyz -跳转椭球体中心坐标数组[x,y,z]* @param {Number} option.duration -视图跳转时间(单位/s)* @param {Number} option.heading -相机航向角* @param {Number} option.pitch -相机俯仰角* @param {Number} option.roll -相机翻滚角*/
export function cameraSetView(viewer, option) {viewer.camera.setView({destination: Cesium.Cartesian3.fromDegrees(...option.xyz),orientation: {heading: Cesium.Math.toRadians(90.0), // east, default value is 0.0 (north)pitch: Cesium.Math.toRadians(-90), // default value (looking down)roll: 0.0, // default value},});
}/*** 相机移动到移到某一个坐标范围内* @param {Object} viewer -地图对象* @param {Object} option -参数对象* @param {Array} option.xyz -跳转椭球体中心坐标数组[x,y,z]* @param {Number} option.radius -跳转椭球体半径(单位/m)* @param {Number} option.duration -视图跳转时间(单位/s)* @param {Number} option.heading -相机航向角* @param {Number} option.pitch -相机俯仰角* @param {Number} option.range -以跳转坐标为中心的的范围大小(单位/m)*/
export function cameraflyToBoundingSphere(viewer, option) {viewer.camera.flyToBoundingSphere(new Cesium.BoundingSphere(Cesium.Cartesian3.fromDegrees(...option.xyz),option.radius),{duration: option.duration,offset: {heading: Cesium.Math.toRadians(option.heading),pitch: Cesium.Math.toRadians(option.pitch),range: option.range,},complete: function () {console.log("飞行完成!");},cancel: function () {console.log("飞行取消!");},});
}/*** 相机移动到某一entity实体上 === viewer.zoomTo(entity)===viewer.trackedEntity =entity* @param {Object} viewer -地图对象* @param {Object} option -参数对象* @param {Object} option.entity -entity对象* @param {Number} option.duration -视图跳转时间(单位/s)* @param {Number} option.heading -相机航向角* @param {Number} option.pitch -相机俯仰角* @param {Number} option.range -以entity为中心的的范围大小(单位/m)*/
export function viewerFlyTo(viewer, option) {viewer.flyTo(option.entity, {duration: option.duration,offset: {heading: Cesium.Math.toRadians(option.heading),pitch: Cesium.Math.toRadians(option.pitch),range: option.range,},// 视角跳转最大高度(一般不用)// maximumHeight: 20000,});
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

36.云原生之SpringCloud+k8s实践

云原生专栏大纲 文章目录 SpringCloudk8s介绍spring-cloud-kubernetes服务发现配置管理负载均衡选主 spring-cloud-bookinfo案例构建项目环境配置namespace部署与验证productpagegatewaybookinfo-admindetailsratingsreviewsreviews-v1reviews-v2 总结 SpringCloudk8s介绍 ht…

vue-router4 (六) 路由嵌套

应用场景: ①比如京东页面的首页、购物车、我的按钮,可以点击切换到对应的页面; ② 比如 Ant Design左侧这些按钮点击就会切到对应的页面,此时可以把左侧按钮放在父路由中,右侧的子路由 1.路由配置,子路由…

将法律条文很美观的复制到word上

前言 目前很多法律条款都没有现成的PDF或者word格式的供大家下载,这个时候呢,领导又要求你帮他搞定,这就很。。。。 步骤 复制全部条款到word中使用wps的排版功能,将空格和空段落全部移除 3. 设置好你需要的格式 标题&#xff…

常用对象的遍历方法

var obj [{name: 1111,account: {01: { name: 1.1 },02: { name: 1.2 },03: { name: 1.3 },04: { name: 1.4 },05: { name: 1.5 },}} ]var nowObj obj[0].account;1、for…in 任意顺序遍历对象所有的可枚举属性(包括对象自身的和继承的可枚举属性,不含…

影像仪激光扫描功能,无缝连接2D/3D混合测量

在现代工业生产领域,影像仪用于质量控制和产品检测,是一个不可或缺的工具。它通过高精度的成像和图像处理技术,可以及时发现产品的缺陷和异常,以保证产品质量的稳定性和一致性。 影像仪的重要性及其面临的挑战 在工业生产方面&a…

视频生成模型(猜测sora)demo

import numpy as np import paddle import paddle.nn as nn import paddle.nn.functional as Fclass FeedForward(nn.Layer):def __init__(self, hidden_dim)

代码随想录算法训练营第42天|● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零

文章目录 1049.最后一块石头的重量II思路:动归五部曲代码: ● 494. 目标和思路五部曲1.确定dp数组五部曲2.确定dp公式3.dp初始化4.遍历顺序 代码: ● 474.一和零思路动归五部曲 代码: 1049.最后一块石头的重量II 思路:…

go test用法(获取单元测试覆盖率)

go test用法(获取ut覆盖率) 为了提升系统的稳定性,一般公司都会对代码的单元测试覆盖率有一定要求。下面针对golang自带的测试命令go test做讲解。 1 命令 1.1 go test ./… (运行当前目录及所有子目录下的测试用例) …

ubuntu——解决复制粘贴问题

执行以下四步: ①更新源 sudo apt update ②使用APT(高级包管理工具)来自动移除系统中未使用的依赖包,并且将open-vm-tools软件包及其相关的未使用的依赖包一并移除。 sudo apt-get autoremove open-vm-tools 注:…

【virtual Box】功能速通:安装 Windows 和 Ubuntu

文章目录 一、虚拟机1.1 概述1.2 virtual box概述 二、新建虚拟机、删除、注册三、虚拟机内部设置3.1 安装增强功能驱动3.2 分辨率问题3.3 网络链接方式 一、虚拟机 1.1 概述 虚拟机(Virtual Machine,VM)是一种软件实现的计算机系统&#x…

【Nginx笔记02】通过Nginx服务器转发客户端的WebSocket接口到后端服务

这篇文章,主要介绍如何通过Nginx服务器转发客户端的WebSocket接口到后端服务【知识星球】。 目录 一、Nginx配置WebSocket 1.1、Nginx配置内容 1.2、客户端请求地址 1.3、创建WebSocket测试工程 1.4、启动测试 1.5、WebSocket超时问题 1.5.1、设置超时时间 …

纪念创作百日——感悟与展望

时光荏苒,仿佛眨眼之间,我已在CSDN这个充满智慧与激情的平台上创作了七十多篇文章。回首这段百日创作之旅,我不禁感慨万千,同时也更加深刻地体会到了写作的魅力所在。 在这个数字化、信息化的时代,写作成为了一种独特…

计算机网络——IPV4数字报

1. IPv4数据报的结构 本结构遵循的是RFC 791规范,介绍了一个IPv4数据包头部的不同字段。 1.1 IPv4头部 a. 版本(Version):指明了IP协议的版本,IPv4表示为4。 b. 头部长度(IHL, Internet Header Length&…

图论基础(一)

一、图论 图论是数学的一个分支,它以图为研究对象。图论中的图是若干给定的点(顶点)以及连接两点的线(边)构成的图像,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物&#xff0c…

python笔记_注释和代码规范

注释 是什么 注释是用于注解,说明程序的文字 为什么 1,提高可读性 2,注释后的文字不会被执行,所以编程时可以用来梳理思绪 分类 单行注释##print("吃了吗")多行注释三个单引号或"""三个双引号"…

TPS54302 DCDC稳压电路设计与测试

原理图和PCB布局布线参考官方应用手册设计。 输入22V,输出5V-1A时电感发热,如果大于此输出功率建议更换大封装电感。 纹波测试 输出5V-1A情况下,输入电压在8-23V区间时纹波都在 20-40mv之间。当输入电压达到24V时纹波会变得很大&#xff0c…

DAY12_VUE基本用法详细版

目录 0 HBuilderX酷黑主题修改注释颜色1 VUE1.1 VUE介绍1.2 Vue优点1.3 VUE入门案例1.3.1 导入JS文件1.3.2 VUE入门案例 1.4 VUE基本用法1.4.1 v-cloak属性1.4.2 v-text指令1.4.3 v-html指令1.4.4 v-pre指令1.4.5 v-once指令1.4.6 v-model指令1.4.7 MVVM思想 1.5 事件绑定1.5.1…

架构设计:生产消费模型

1. 引言 在现代软件系统中,处理大量数据和消息是一项重要的任务。生产消费模型作为一种经典的并发模式,在解决数据生产和消费之间的关系上发挥着关键作用。该模型通过有效地管理生产者和消费者之间的通信和数据流动,实现了系统组件之间的解耦…

Mycat核心教程--Mycat 监控工具【四】

Mycat核心教程--Mycat 监控工具 九、Mycat 监控工具9.1.Mycat-web 简介9.2.Mycat-web 配置使用9.2.1.ZooKeeper 安装【上面有】9.2.2.Mycat-web 安装9.2.2.1.下载安装包9.2.2.2.安装包拷贝到Linux系统/opt目录下,并解压9.2.2.3.拷贝mycat-web文件夹到/usr/local目录…

[足式机器人]Part2 Dr. CAN学习笔记-Ch00-2 - 数学知识基础

本文仅供学习使用 本文参考: B站:DR_CAN 《控制之美(卷1)》 王天威 《控制之美(卷2)》 王天威 Dr. CAN学习笔记-Ch00 - 数学知识基础 Part2 4. Ch0-4 线性时不变系统中的冲激响应与卷积4.1 LIT System:Linear Time Invariant4.2 卷积 Convolution4.3 单位冲激 Unit Impulse—…