photo-sphere-viewer实现虚拟漫游功能开发

一、依赖安装

1、photo-sphere-viewer依赖于threejs开发的所以要安装threejs

bash 复制代码
    pnpm add @photo-sphere-viewer/core
    pnpm add threejs

@photo-sphere-viewer/core 为核心模块,其他功能需要以插件形式使用。

其他功能插件官网查看 Introduction to plugins | Photo Sphere Viewer

二、初始化使用

html 复制代码
    <div ref="container"></div>
javascript 复制代码
   const viewer = new Viewer({
        container: document.querySelector('#container'), // 容器(必填) 支持传入dom/容器id:'container'
        panorama: '/img.jpg', // 默认加载的全景图路径,
        plugins: [MarkersPlugin] // 启用插件列表
    })

事件绑定

javascript 复制代码
    // ready 初始化完成
    viewer.addEventListener('ready', () => {})
    // click 点击事件
    viewer.addEventListener('click', () => {})

三、添加标记插件

通过viewer.getPlugin(MarkersPlugin)获取初始化时加载的插件

javascript 复制代码
    const markersPlugin = viewer.getPlugin(MarkersPlugin)
    markersPlugin.setMarkers(markers)
    markersPlugin.addEventListener('select-marker',({marker}) => {
        // 进行标记点击处理 切换全景图操作等...
        const markerData = marker.data
    })

marker数据格式:

javascript 复制代码
    // 单个标记数据格式 个人推荐使用html,可以很方便的自定义想要的标记样式
   const marker = {
        id: 'marker-1',
        html: `<div class="custom-marker"></div>`,
        position: {
          yaw: 5.796742238036393,
          pitch: -0.07873119086209468
        },
        data: {
          type: 'link',
          linkNodeId: 'scene-2'
        }
      }

四、删除标记

markersPlugin.clearMarkers()

五、更换全景图

javascript 复制代码
    viewer.setPanorama(linkNode.panorama).then(() => {
        // 更换完成的回调
    })
相关推荐
广州华水科技5 分钟前
单北斗GNSS变形监测在基础设施安全中的应用与维护
前端
星栈13 分钟前
Rust 全栈项目里,我写了一个不再重复造轮子的泛型表格组件
前端·前端框架·开源
008爬虫实战录13 分钟前
【码上爬】 题九:webpack调试 堆栈分析
前端·webpack·node.js
Maimai108081 小时前
React 多步骤表单工程化落地:从 Zod Schema、React Hook Form 到 Zustand 持久化
前端·javascript·react.js·前端框架·状态模式
程序员码歌1 小时前
我是怎么部署开源 AI 编程助手 OpenCode,并在两个真实场景使用起来的
前端·人工智能·后端
Maimai108081 小时前
React Query + Zustand 正确结合方式:不要把接口数据复制进 Store
前端·javascript·react.js·前端框架·web3·状态模式
天才熊猫君1 小时前
层叠上下文 z-index 的简单理解
前端
i220818 Faiz Ul1 小时前
智慧养老平台|基于SprinBoot+vue的智慧养老平台系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·智慧养老平台
AI砖家1 小时前
每日一个skill:web-artifacts-builder,构建复杂 Claude.ai HTML Artifact 的生产力工具包
java·前端·人工智能·python
icc_tips1 小时前
Flutter runAppAsync() 详解:干净的异步应用启动
前端·flutter