photo-sphere-viewer

本文介绍了如何在Vue项目中使用photo-sphere-viewer库来创建和展示全景图片,包括安装、引入、基本使用、图片切换以及使用MarkersPlugin插件添加和管理标记。同时,提到了全景图的参数设置和交互功能。
摘要由CSDN通过智能技术生成

photo-sphere-viewer

一、 安装依赖
npm install  photo-sphere-viewer --save-dev
二、 引入
   import {Viewer} from 'photo-sphere-viewer'
   import 'photo-sphere-viewer/dist/photo-sphere-viewer.css'
三、 使用
<template>
  <div id="viewer"></div>
</template>
<script>
    import {Viewer} from 'photo-sphere-viewer'
    import 'photo-sphere-viewer/dist/photo-sphere-viewer.css'
    export default {
        data(){
            return{
                 viewer: "", //
                 imgurl: [
                         require("../assets/1.jpeg"),
                         require("../assets/2.jpg"),
                         require("../assets/sphere.jpg"),
                         ],
                 imgIndex: 0,
            }
        },
        mounted() {
          this.init(this.imgurl[this.imgIndex]); //渲染
        },
        methods: {
         init(img) {
            this.viewer = new Viewer({
                 container: document.querySelector("#viewer"), //HTMLElement | string 包含全景图或元素标识符的HTML元素
        panorama: img, //_this.imgurl[_this.imgIndex], // 切换图片的数组 全景图像的路径
        // navbar: ["autorotate", "zoom", "caption", "fullscreen"], // 自带的功能如:自动旋转、下载、放大、缩小等
        // caption: '1111', // 导航栏显示文本
        // 设置图片展示的大小
        size: {
          width: "100%",
          height: "100%",
        },
        touchmoveTwoFingers: true,
        mousewheelCtrlKey: false,
        // 自定义按钮
        // navbar: [
        //   {
        //     id: "my-button", //按钮的唯一标识符,在使用该navbar.getButton()方法时很有用
        //     content: "Custom", //必需的,按钮内容
        //     title: "Hello world", //鼠标悬停在按钮上时显示工具提示
        //     className: "custom-button", //CSS类已添加到按钮
        //     onClick: () => {

        //       alert("Hello from custom button"); //必需的,单击按钮时调用的函数
        //     },
        //     // disabled:false,//最初禁用该按钮
        //     // hidden:false,//最初隐藏按钮
        //   },
        // ],
            });
        }
       }
    }
</script>

四、切换图片

<div class="toggle_icon">
      <i @click="toggleImg('reduce')"><</i>
      <i @click="toggleImg('add')">></i>
 </div>

async toggleImg(e) {
      const _this = this;

      if (e == "add") {
        if (_this.imgIndex < _this.imgurl.length - 1) {
          _this.imgIndex++;
        }
      } else {
        _this.imgIndex ? _this.imgIndex-- : _this.imgIndex;
      }
      await _this.viewer.destroy();
      _this.init(_this.imgurl[_this.imgIndex]);
    }, 
五、标记

引入

import { MarkersPlugin } from 'photo-sphere-viewer/dist/plugins/markers'
import 'photo-sphere-viewer/dist/plugins/markers.css'

页面

// 所有插件均包含一个JavaScript类,该类必须提供给plugins数组。一些插件还将采用嵌套数组中提供的配置对象
this.viewer = new Viewer({
    container:document.querySelector('#viewer'),
    panorama:this.imgurl,
    size:{
        width: '100vw',
        height: '50vh',
    },
    plugins: [
        [MarkersPlugin, {
            markers: [
                {
                    id:'circle',
                    tooltip:'A circle of radius 30',
                    circle:30,
                    svgStyle : {
                        fill:'rgba(255,255,0,0.3)',
                        stroke:'yellow',
                        strokeWidth:'2px',
                    },
                    longitude: -1.5,
                    latitude: -0.28,
                    anchor: 'center right',
                }
            ],
        }],
    ],
});
// 初始化之后,可以使用getPlugin方法获得插件实例,从而允许在插件上调用方法并订阅事件。
 this.markersPlugin = _this.viewer.getPlugin(MarkersPlugin);
 this.markersPlugin.on("select-marker", (e, marker) => {
       // 点击选中标注
        console.log("select-marker e:", e);
        console.log("marker:", marker.id);
      });

// 点击添加标注
this.viewer.on("click", (e, data) => {
        // 添加标注
        const num = 1 + Math.round(Math.random() * 2);
        this.markersPlugin.addMarker({
          id: `mark${Math.random() * 10}`,
          position: { yaw: data.yaw, pitch: data.pitch },
          tooltip: `房间
                <p>1111</p>
            `,
          html: `
              <p class="remark">这里是标记</p>
              `,
          longitude: data.longitude,
          latitude: data.latitude,
          anchor: "center center",
          note: num,
        });
      });
// 删除当前tag 参数穿id
this.markersPlugin.removeMarker(Id);
中文文档可以看 http://www.cbww.cn/news/32642.shtml 文档不全只展示了一部分标记的参数事件方法
官方文档  https://photo-sphere-viewer.js.org/plugins/autorotate.html#usage
六、信息调查

1、photo-sphere-viewer 是开源使用的
2、全景图片应该没什么要求 这里有一些可设置全景图的参数

pano_data: {//在此示例中,4000x2000图像用作6000x3000全景图的一部分,剩余空间将呈现为黑色。
full_width: 6000,
full_height: 3000,
cropped_width: 4000,
cropped_height: 2000,
cropped_x: 1000,
cropped_y: 500}

3、标记如果让后端存储 应该有哪些字段
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值