当前位置: 首页 > news >正文

Vue3+CesiumJS相机定位camera

new Cesium.Camera (scene)

摄像机由位置,方向和视锥台定义。

方向与视图形成正交基准,上和右=视图x上单位矢量。

视锥由6个平面定义。每个平面都由 Cartesian4 对象表示,其中x,y和z分量定义垂直于平面的单位矢量,w分量是从原点/相机位置开始的平面。

官方文档示例:(链接:Camera - Cesium Documentation)
// Create a camera looking down the negative z-axis, positioned at the origin,
// with a field of view of 60 degrees, and 1:1 aspect ratio.
var camera = new Cesium.Camera(scene);
camera.position = new Cesium.Cartesian3();
camera.direction = Cesium.Cartesian3.negate(Cesium.Cartesian3.UNIT_Z, new Cesium.Cartesian3());
camera.up = Cesium.Cartesian3.clone(Cesium.Cartesian3.UNIT_Y);
camera.frustum.fov = Cesium.Math.PI_OVER_THREE;
camera.frustum.near = 1.0;
camera.frustum.far = 2.0;
示例: 

        使用Vue 3 <script setup> 语法和CesiumJS库来创建一个3D地球视图的示例。CesiumJS是一个用于创建3D地球、2D地图和2.5D视图的开源JavaScript库,广泛用于地理信息系统(GIS)和地球科学可视化。(这里用到的cesium版本为1.99)

引入依赖(其中注意要将token换成自己的):
  • Cesium: 引入Cesium库,这是主要的地图渲染和交互功能提供者。

  • Cartographic: ,在下列代码中并没有直接使用Cartographic,Cesium的Cartographic类用于表示地理坐标(经度、纬度和高度),但在这个例子中,使用了Cesium.Cartesian3.fromDegrees来从经纬度创建笛卡尔坐标。

  • Viewer: 引入Cesium的Viewer类,这是创建和管理Cesium视图的主要接口。

vue组件:
  • <script setup>: Vue 3的Composition API的语法糖,允许你使用更简洁的语法来编写组件逻辑。

  • onMounted: Vue的生命周期钩子,用于在组件挂载到DOM后执行代码。这里,它用于初始化Cesium的Viewer。

<script setup>
import { onMounted } from 'vue'
import * as Cesium from 'cesium'
import Cartographic from 'cesium/Source/Core/Cartographic';
import Viewer from 'cesium/Source/Widgets/Viewer/Viewer';onMounted(() => {Cesium.Ion.defaultAccessToken = 'your token'// viewer是所有api的开始const viewer = new Cesium.Viewer('cesiumContainer', {});const position1 = Cesium.Cartesian3.fromDegrees(110,20,20000);
1.setView通过定义相机目的地,直接跳转到目的地

直接跳转到指定位置

viewer.camera.setView({destination: position1,//视角,默认是(0,-90,0)orientation: {heading: Cesium.Math.toRadians(0),pitch: Cesium.Math.toRadians(0),Roll: Cesium.Math.toRadians(0)}})
2.flyTo快速切换视角,带飞行动画,可以设置飞行时长

带有动画效果地飞到指定位置

viewer.camera.flyTo({destination: position1,//视角,默认是(0,-90,0)orientation: {heading: Cesium.Math.toRadians(0),pitch: Cesium.Math.toRadians(-90),Roll: Cesium.Math.toRadians(0)},//飞行时间,单位秒duration: 3,})
3.lookAt将视角固定在所设置的目的地点上,可以任意旋转视角,但是不会改变位置

使用viewer.camera.lookAt方法将相机视角对准指定的位置(position2),并设置了一个朝向(通过HeadingPitchRange对象指定)。这里,朝向设置为朝向正北(heading为0度),向下看(pitch为-90度),并保持距离地面20000米。

const position2 = Cesium.Cartesian3.fromDegrees(-117.16,32.71)viewer.camera.lookAt(position2, new Cesium.HeadingPitchRange(Cesium.Math.toRadians(0),Cesium.Math.toRadians(-90),20000,//中心点距离地面的距离// viewer.camera.lookAt(position1, new Cesium.Cartesian3(0.0, 0.0, 1000.0))));
整体代码展示:

1.直接在终端运行即可:npm run dev

<script setup>
import { onMounted } from 'vue'
import * as Cesium from 'cesium'
import Cartographic from 'cesium/Source/Core/Cartographic';
import Viewer from 'cesium/Source/Widgets/Viewer/Viewer';onMounted(() => {Cesium.Ion.defaultAccessToken = 'your token'// viewer是所有api的开始const viewer = new Cesium.Viewer('cesiumContainer', {});const position1 = Cesium.Cartesian3.fromDegrees(110,20,20000);// //setView通过定义相机目的地,直接跳转到目的地// viewer.camera.setView({//   destination: position1,//   //视角,默认是(0,-90,0)//   orientation: {//     heading: Cesium.Math.toRadians(0),//     pitch: Cesium.Math.toRadians(0),//     Roll: Cesium.Math.toRadians(0)//   }// })// //flyTo快速切换视角,带飞行动画,可以设置飞行时长// viewer.camera.flyTo({//   destination: position1,//   //视角,默认是(0,-90,0)//   orientation: {//      heading: Cesium.Math.toRadians(0),//      pitch: Cesium.Math.toRadians(-90),//      Roll: Cesium.Math.toRadians(0)//    },//    //飞行时间,单位秒//   duration: 3,// })//lookAt将视角固定在所设置的目的地点上,可以任意旋转视角,但是不会改变位置const position2 = Cesium.Cartesian3.fromDegrees(-117.16,32.71)viewer.camera.lookAt(position2, new Cesium.HeadingPitchRange(Cesium.Math.toRadians(0),Cesium.Math.toRadians(-90),20000,//中心点距离地面的距离// viewer.camera.lookAt(position1, new Cesium.Cartesian3(0.0, 0.0, 1000.0))));})</script><template><div id="cesiumContainer"></div>
</template><style scoped>
#cesiumContainer {width: 100vw;height: 100vh;overflow: hidden;
}
</style>

2.main.js:(element可以去掉,这里用不到) 

import { createApp } from 'vue'
// import './style.css'
import App from './App.vue'import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')

3.vite-config-js:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import cesium from 'vite-plugin-cesium'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),cesium()]
})
效果展示:
这里推荐一个cesium学习的博客:右弦GISercesium实战系列总目录(详细实用)(不断更新中,现120篇)_cesium实战目录-CSDN博客 

相关文章:

Vue3+CesiumJS相机定位camera

new Cesium.Camera (scene) 摄像机由位置&#xff0c;方向和视锥台定义。 方向与视图形成正交基准&#xff0c;上和右视图x上单位矢量。 视锥由6个平面定义。每个平面都由 Cartesian4 对象表示&#xff0c;其中x&#xff0c;y和z分量定义垂直于平面的单位矢量&#xff0c;w分量…...

turbo译码算法MAX, MAX_SCALE and MAX_STAR的比较

在Turbo码的译码算法中&#xff0c;MAX、MAX_SCALE和MAX_STAR是涉及对数似然比&#xff08;LLR&#xff09;计算时&#xff0c;对MAP&#xff08;最大后验概率&#xff09;算法或其变种Log-MAP算法中分支度量计算的几种不同处理方式。下面是对这三种方法的比较&#xff1a; 1.…...

关于HarmonyOS的学习

day31 购物车案例 一、加入购物车 1、点击按钮后&#xff0c;把当前这个列表的数据拿到&#xff0c;应该存储到一个数组里面 --- 数据结构&#xff0c;把数据存储进行数组2、假如已经把所有的数据添加数组完毕&#xff0c;最终应该存储进购物车里面&#xff0c;所谓的购物车说…...

【雅特力AT32】搭建模板工程及GPIO点灯操作

目录 AT32模板工程建立及点灯操作 建立AT32模板工程 AT32点灯操作 LED原理图GPIO寄存器LED源码分析 建立AT32模板工程 从0到编译运行详细搭建保姆教程&#xff1a; 【雅特力AT32】Keil 环境&#xff1a;搭建标准库模板工程、使用 AT-Link、Debug 里选择 CMSIS-DAP调试器 下面做…...

实战千问2大模型第三天——Qwen2-VL-7B(多模态)视频检测和批处理代码测试

画面描述:这个视频中,一位穿着蓝色西装的女性站在室内,背景中可以看到一些装饰品和植物。她双手交叉放在身前,面带微笑,似乎在进行一场演讲或主持活动。她的服装整洁,显得非常专业和自信。 一、简介 阿里通义千问开源新一代视觉语言模型Qwen2-VL。其中,Qwen2-VL-72B在大…...

数据库索引底层数据结构之B+树MySQL中的页索引分类【纯理论干货,面试必备】

目录 1、索引简介 1.1 什么是索引 1.2 使用索引的原因 2、索引中数据结构的设计 —— B树 2.1 哈希 2.2 二叉搜索树 2.3 B树 2.4 最终选择之——B树 2.4.1 B树与B树的对比(面向索引)【面试题】 3、MySQL中的页 3.1 页的使用原因 3.2 页的结构 3.2.1 页文件头和页文件…...

编译QT源码时的configure参数须知

文章目录 一、configure help原文二、configure help机译三、features 执行命令得到configure帮助文件 qtsrc/configure --help一、configure help原文 Usage: configure [options] [-- cmake-options]This is a convenience script for configuring Qt with CMake. Options…...

如何利用人工智能大模型来进行数字化营销?

这是一本关于如何利用人工智能大模型来进行数字化营销并驱动业绩增长的书。人工智能大模型是指那些具有超大规模的参数和数据的人工智能模型&#xff0c;它们能够在各种复杂的任务上表现出惊人的能力。 在本书中&#xff0c;你将学习到如何在电商、广告和用户增长等数字化营销业…...

【MRI基础】回波序列长度-echo train length ETL概念

回波序列长度 回波序列长度 (echo train length, ETL) 是磁共振成像 (MRI) 中的一个重要参数&#xff0c;它对图像采集时间和图像质量有显著影响。ETL 是指在单个激励脉冲之后的 MRI 序列中采集的回波数量。通过增加 ETL&#xff0c;可以在一个重复时间 (TR) 内收集多个回波&a…...

(179)时序收敛--->(29)时序收敛二九

1 目录 (a)FPGA简介 (b)Verilog简介 (c)时钟简介 (d)时序收敛二九 (e)结束 1 FPGA简介 (a)FPGA(Field Programmable Gate Array)是在PAL (可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域…...

[Visual Stuidio 2022使用技巧]2.配置及常用快捷键

使用vs2022开发WPF桌面程序时常用配置及快捷键。 语言&#xff1a;C# IDE&#xff1a;Microsoft Visual Studio Community 2022 框架&#xff1a;WPF&#xff0c;.net 8.0 一、配置 1.1 内联提示 未开启时&#xff1a; 开启后&#xff1a; 开启方法&#xff1a; 工具-选…...

每日奇难怪题(持续更新)

1.以下程序输出结果是() int main() {int a 1, b 2, c 2, t;while (a < b < c) {t a;a b;b t;c--;}printf("%d %d %d", a, b, c); } 解析:a1 b2 c2 a<b 成立 ,等于一个真值1 1<2 执行循环体 t被赋值为1 a被赋值2 b赋值1 c-- c变成1 a<b 不成立…...

江协科技STM32学习- P13 TIM定时器中断

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…...

git github仓库管理

原文链接&#xff1a;git github仓库管理 拉取镜像 github的仓库有两种下载方式,http和ssh,http是对外公开的,可以直接clone,ssh的一般是自己的或内部的仓库,仓库需要配置ssh-key才能使用git clone. 或者直接网页下载 #https git clone https://github.com/git/git.git #ssh…...

【JavaEE】线程安全性问题,线程不安全是怎么产生的,该如何应对

产生线程不安全的原因 在Java多线程编程中&#xff0c;线程不安全通常是由于多个线程同时访问共享资源而引发的竞争条件。以下是一些导致线程不安全的常见原因&#xff1a; 共享可变状态&#xff1a;当多个线程对共享的可变数据进行读写时&#xff0c;如果没有适当的同步机制&…...

低代码-赋能新能源汽车产业加速前行

在“双碳”战略目标的引领下&#xff0c;全球新能源汽车产业正经历着前所未有的发展和变革&#xff0c;新能源汽车整车制造成为绿色低碳转型的重要领域。在政府的大力扶持下&#xff0c;新能源整车制造领域蓬勃发展&#xff0c;已成为全球汽车产业不可逆转的重要趋势。新能源汽…...

基于UDP的简易网络通信程序

目录 0.前言 1.前置知识 网络通信的大致流程 IP地址 端口号&#xff08;port&#xff09; 客户端如何得知服务器端的IP地址和端口号&#xff1f; 服务器端如何得知客户端的IP地址和端口号&#xff1f; 2.实现代码 代码模块的设计 服务器端代码 成员说明 成员实现 U…...

AI大模型在知识管理平台上的应用:泛微·采知连实现自动采集.精准搜索.智能问答.主动推荐

AI技术的发展&#xff0c;正在推动组织知识管理模式发生变革。知识管理系统通过各种应用实现知识体系落地&#xff0c;当前聚焦于整合生成式AI技术&#xff0c;以提升业务效率。 组织在数字化进程中面临着知识增量增多、知识更新频率变快、知识与业务结合更紧密等挑战&#xff…...

JavaEE:文件内容操作(一)

文章目录 文件内容的读写---数据流字节流和字符流打开和关闭文件文件资源泄漏try with resources 文件内容的读写—数据流 文件内容的操作,读文件和写文件,都是操作系统本身提供了API,在Java中也进行了封装. Java中封装了操作文件的这些类,我们给它们起了个名字,叫做"文…...

无人机视角下落水救援检测数据集

无人机视角下落水救援检测数据集&#xff0c;利用无人机快速搜索落水者对增加受害者的生存机会至关重要&#xff0c;该数据集共收集12万帧视频图像&#xff0c;涵盖无人机高度从10m-60m高度&#xff0c;检测包括落水者&#xff08;11万标注量&#xff09;、流木&#xff08;900…...

Midjourney玩具相机风格从翻车到封神:1个--v 6.1专属参数组合+2个隐藏式胶片颗粒注入指令+1套曝光补偿校准表

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney玩具相机风格的视觉本质与审美悖论 失真即真实&#xff1a;玩具相机的光学哲学 玩具相机&#xff08;Toy Camera&#xff09;风格在 Midjourney 中并非简单模拟 Lomography 或 Holga 的物理…...

大模型涌现能力:从原理到工程实践的激发与评测方法

1. 项目概述&#xff1a;从“玄学”到“可操作”的涌现能力拆解最近和几个做模型训练和评测的朋友聊天&#xff0c;话题总绕不开“涌现能力”。这个词现在火得不行&#xff0c;但聊深了发现&#xff0c;大家对这个概念的理解其实挺割裂的。有人说它是大模型“开窍”的瞬间&…...

ARM架构TLB机制与TLBI指令详解

1. ARM TLB机制与TLBI指令概述在ARM架构中&#xff0c;TLB&#xff08;Translation Lookaside Buffer&#xff09;是内存管理单元&#xff08;MMU&#xff09;的核心组件&#xff0c;负责缓存虚拟地址到物理地址的转换结果。当CPU访问内存时&#xff0c;首先查询TLB获取地址转换…...

Noto Emoji终极指南:3种策略彻底解决跨平台表情符号显示难题

Noto Emoji终极指南&#xff1a;3种策略彻底解决跨平台表情符号显示难题 【免费下载链接】noto-emoji Noto Emoji fonts 项目地址: https://gitcode.com/gh_mirrors/no/noto-emoji Noto Emoji是Google开发的开源表情符号字体库&#xff0c;旨在为全球用户提供完整、一致…...

ORB-SLAM3地图保存新思路:手把手教你将.osa地图转成PCD点云(附完整代码)

ORB-SLAM3地图数据解放指南&#xff1a;从封闭格式到通用点云的全链路实践 当你在昏暗的实验室调试ORB-SLAM3运行整夜后&#xff0c;终于得到那个珍贵的.osa地图文件时&#xff0c;却发现无法用熟悉的点云工具打开分析——这种挫败感或许正是促使你阅读本文的原因。作为三维视觉…...

借助 Taotoken 多模型聚合能力为开源项目构建智能问答机器人

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 借助 Taotoken 多模型聚合能力为开源项目构建智能问答机器人 为开源项目添加一个智能问答助手&#xff0c;能显著提升社区体验&…...

从零到一:UniApp CLI 实战入门与避坑指南

1. 为什么需要UniApp CLI&#xff1f; 第一次接触UniApp的开发者可能会疑惑&#xff1a;明明有HBuilderX这样完善的图形化工具&#xff0c;为什么还要学习CLI&#xff1f;这个问题我也曾经纠结过。经过多个项目的实战验证&#xff0c;我发现CLI在以下场景中优势明显&#xff1a…...

OpenHarmony健康打卡应用开发:从状态管理到数据持久化实战

1. 项目概述&#xff1a;一个基于OpenHarmony的健康生活打卡应用最近在捣鼓OpenHarmony应用开发&#xff0c;想做个能督促自己养成好习惯的小工具。核心想法很简单&#xff1a;把“早起”、“喝水”这些日常小事变成可量化、可追踪的任务&#xff0c;每天打卡&#xff0c;看着进…...

3个思维转变:用Obsidian Homepage打造你的第二大脑控制中心

3个思维转变&#xff1a;用Obsidian Homepage打造你的第二大脑控制中心 【免费下载链接】obsidian-homepage Obsidian homepage - Minimal and aesthetic template (with my unique features) 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian-homepage 你是否曾…...

技能管理框架skill-mix:用YAML与声明式配置构建可量化技能体系

1. 项目概述与核心价值最近在梳理团队的知识库和技能树时&#xff0c;我又一次深刻体会到&#xff0c;一个清晰、可量化、可追踪的技能管理体系对个人成长和团队效能有多重要。无论是作为技术负责人评估团队战斗力&#xff0c;还是作为一线开发者规划自己的学习路径&#xff0c…...