vue3使用panolens.js实现全景,带有上一个下一个,全屏功能

ops/2024/11/15 0:51:06/

panolens官方文档Home - Panolens

1.加载核心js库 (文件在untils里面)

import '@/utils/panolens/three.min.js';

import '@/utils/panolens/panolens.min.js';

/项目中 /railway/modalIframe/playPanorama/player/js/panolens-ht.js 为修改后版本 可以获取在全景点击获取坐标

//<script src="js/panolens-ht.js"></script>

2.创建全景容器 

 <div id="newqj" :style="{ display: tabBcnclick == 1 ? 'block' : 'none' }"style="width: 60%;height: 422px;margin: 0 auto;margin-top: 30px;position: relative;overflow: hidden;"><div style="" class="leftArr"><el-icon style="font-size: 24px !important;cursor: pointer;" @click.stop="leftArrowFnc"><ArrowLeft /></el-icon></div><div class="rightArr" style=""><el-icon style="font-size: 24px !important;cursor: pointer;"@click.stop="rightArrowFnc"><ArrowRight /></el-icon></div></div>

3,加载函数和默认值

const currentIndex = ref(0);

const imgUrl = ref('')

const panorama = ref('')

const viewer = ref('')

panoramaFilesList为后端返回的数组,包含file_path

function panoramaFnc() {imgUrl.value = formData.value.panoramaFilesList[currentIndex.value].file_path;panorama.value = new PANOLENS.ImagePanorama(imgUrl.value);//将全景鱼眼图片生成全景// 加载图片数据viewer.value = new PANOLENS.Viewer({container: document.getElementById('newqj'),//选中容器承载视图autoHideInfospot: false,//点击非热点区域 自动隐藏信息点 true:触发,false:不触发 默认值为truecontrolButtons: ['fullscreen'],//全景底部按钮 默认值 ['fullscreen', 'setting', 'video'] fullscreen设置全屏 setting添加设置按钮});viewer.value.add(panorama.value);//生成的全景必须放入viewer视图中才能显示
}

4.上一个下一个方法

function leftArrowFnc(e) {if (currentIndex.value > 0) {currentIndex.value--;panorama.value.load(formData.value.panoramaFilesList[currentIndex.value].file_path)} else {return }}
function rightArrowFnc() {if (currentIndex.value < formData.value.panoramaFilesList.length - 1) {currentIndex.value++;panorama.value.load(formData.value.panoramaFilesList[currentIndex.value].file_path)} else {return}
}

5.切换到360全景方法

function tabBtnClickFnc(item) {tabBcnclick.value = item.valueconsole.log(tabBcnclick.value);nextTick(() => {panoramaFnc()// panorama.value.load(formData.value.panoramaFilesList[currentIndex.value].file_path)})}

效果图:


http://www.ppmy.cn/ops/111683.html

相关文章

C#中的委托

Action委托 Action 委托是 C# 中预定义的委托类型之一&#xff0c;它是泛型委托 Action<T...> 的非泛型形式&#xff0c;用于表示不接受返回值的方法。Action 委托通常用于需要执行操作但不需要返回结果的场景&#xff0c;比如事件处理、异步编程或回调函数。 Action 委…

item_get京东获取商品详情SKU数据接口||关于京东商品采集接口

jd.item_get 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cacheString否[yes,no]默…

pdf转jpg工具分享,4款搞定90%的PDF转格式

PDF转换真的是要学会的技能&#xff0c;我最近遇到了一个难题&#xff1a;我需要将一些PDF文件转换成JPG格式&#xff0c;以便在不同的设备上查看和编辑。我尝试了几个不同的工具&#xff0c;今天&#xff0c;我就来和大家分享一下我的使用体验&#xff0c;希望能帮到和我一样在…

matlab while (~feof(fid))语句解释

这行 MATLAB 代码是一个 while 循环&#xff0c;结合 feof 函数用于读取文件直到文件结束。 解释 while 循环 while 是一个循环语句&#xff0c;表示当条件为真时&#xff0c;循环内的代码会反复执行。在这个例子中&#xff0c;循环将持续执行&#xff0c;直到 feof(fid) 返回…

求n至少为多大时,n个1组成的整数能被2013整除

题目&#xff1a;编写程序&#xff0c;求n至少为多大时&#xff0c;n个1组成的整数能被2013整除 #include<iostream> using namespace std; int main(){int n1;int m1;while(m%2013!0){m(m%2013)*101;n;}cout<<n<<endl;return 0; } 思路&#xff1a;直接用n…

Java面试题——第七篇(Java Web)

1.forward和redirect区别 forward和redirect代表了两种请求转发方式&#xff1a;直接转发和间接转发 直接转发方式&#xff08;forward&#xff09;&#xff1a;客户端和浏览器只发出一次请求&#xff0c;服务器在处理这个请求的过程中&#xff0c;将请求转发给另一个资源或组件…

关于less的基本使用

1、介绍及概述 1.1、解释 less 是方便开发人员书写CSS的一门预处理语言。浏览器只认识html /css /js格式的文件&#xff0c;所以直接引入.less文件&#xff0c;没有任何的效果&#xff0c;需要把less文件转换成css文件 1.2、概述 CSS弊端&#xff1a; 没有逻辑性、变量、函…

C++中string类的使用

目录 1.auto和范围for 1.1auto关键字 1.2范围for 2.string类常用接口说明 2.1默认成员函数 2.1.1构造函数(constructor) 2.1.2赋值运算符重载(operator()) 2.2string类对象的访问及遍历操作(Iterators and Element access) 2.3string类对象的容量操作(Capacity) 2.3.1…