photo-sphere-viewer 加载全景图

<template>

  <div id="viewer"></div>

</template>

<script>

import { Viewer } from "photo-sphere-viewer";

import { MarkersPlugin } from "photo-sphere-viewer/dist/plugins/markers"; //Markers插件

import "photo-sphere-viewer/dist/photo-sphere-viewer.css";

import "photo-sphere-viewer/dist/plugins/markers.css"; //Markers插件

export default {

  data () {

    return {

      viewer: "",

      imgurl1: require("../assets/666.jpeg"),

      imgurl2: require("../assets/bscj.jpg"),

      imgurl3: require("../assets/123.png"),

      imgurl4: require("../assets/bscj.jpg"),

      markers: [

        {

          id: "circle1", //标记的唯一标识符

          tooltip: "circle1", //提示的内容

          // circle: 30, //直径

          svgStyle: {

            fill: "rgba(255,255,0,0.3)",

            stroke: "#ccc",

            strokeWidth: "2px", //边框

          },

          "html": "<div><i class=\"el-icon-bottom\"></i><p class=\"bgc\">天空</p></div>",

          visible: true, //标记的初始可见性。默认true

          longitude: 5.75, //位置

          latitude: -0.37, //位置

          anchor: "center right",

          // content: "9999999999", //点击标记后侧边列表框显示的内容

          // image: 'assets/123.png',

          // defaultZoomLvl:-30

        },

        {

          id: "circle2", //标记的唯一标识符

          tooltip: "circle2", //提示的内容

          circle: 30, //直径

          svgStyle: {

            fill: "rgba(255,255,0,0.3)",

            stroke: "red",

            strokeWidth: "2px", //边框

          },

          longitude: -1.6, //位置

          latitude: -0.28, //位置

          anchor: "center right",

          visible: false, //标记的初始可见性。默认true

          // image: this.imgurl3,

        },

        {

          id: "circle3",

          tooltip: "circle3", //提示的内容

          longitude: -1.9, //位置

          latitude: -0.28, //位置

          rect: { width: 100, height: 100 }, //矩形宽高

          svgStyle: {

            fill: "rgba(194,29,18,1)",

            cursor: "help",

          },

          visible: false,

        },

        {

          id: "circle4",

          tooltip: "circle4", //提示的内容

          x: 2058,

          y: 1069,

          html: "HTML <b>marker</b> &hearts;",

          anchor: "bottom right",

          scale: [0.5, 1.5],

          style: {

            maxWidth: "100px",

            color: "white",

            fontSize: "20px",

            fontFamily: "Helvetica, sans-serif",

            textAlign: "center",

          },

          visible: false,

        },

      ],

    }

  },

  mounted () {

    this.viewer = new Viewer({

      container: document.querySelector("#viewer"), // 全景图的容器

      panorama: this.imgurl1, // 全景图的地址

      size: { // 全景图的大小

        width: "90vw",

        height: "90vh",

      },

      // minFov: 30,  // 最小视野(对应于最大缩放),介于 1 和 179 之间。

      // maxFov: 150, // 最大视野(对应于最小缩放),介于 1 和 179 之间

      // autorotateLat: 0,// 执行自动旋转的纬度

      // autorotateSpeed: 0.20943951023931962,//自动旋转速度

      // autorotateDelay: 1,//1毫秒后启动自动旋转

      // defaultZoomLvl: 0,//默认缩放 初始缩放级别,介于 0(对于 maxFov)和 100(对于 minfov)之间。

      // fisheye: true, // 使用 true 启用鱼眼效果或指定效果强度 (true = 1.0)

      // defaultLong: 0.0027446609001040845,//经度

      // defaultLat: 0.015220228499811306,//维度

      // loadingImg: '', //显示在加载圆圈中心的图像的路径,也就是loading图

      // loadingTxt: '', //加载圈中心显示的文本,仅在未提供loadingImg时使用

      plugins: [ // 插件

        [

          MarkersPlugin,

          { markers: this.markers }

        ],

      ],

    });

    // 初始化之后,可以使用getPlugin方法获得插件实例,从而允许在插件上调用方法并订阅事件

    const markersPlugin = this.viewer.getPlugin(MarkersPlugin);

    // 点击事件监听

    this.viewer.on('click', (e, data) => {

      console.log(`${data.rightclick ? 'right clicked' : 'clicked'} at longitude: ${data.longitude} latitude: ${data.latitude}`);

    });

    // 监听点击marker

    markersPlugin.on("select-marker", (e, marker) => {

      console.log(marker.id);

      const markerid = marker.id;

      this.viewer

        // 动画

        .animate({

          longitude: marker.config.longitude,

          latitude: marker.config.latitude,

          zoom: 100,

          speed: "-5rpm",

        })

        .then(() => {

          // markersPlugin.clearMarkers()//移除所有markers

          // this.viewer.rotate({x: 1500,y: 600,});//改变摄像机的位置

          markersPlugin.hideMarker(marker.id);//隐藏点击的marker

          // this.viewer.defaultZoomLvl=0

          if (markerid == "circle1") {

            // setPanorama参数:图片地址、下一个场景的初始经纬度、transition 默认(false)

            this.viewer.setPanorama(this.imgurl2, { longitude: 6.232589417434965, latitude: 0.07016253709436304 }, true).then(() => {

              markersPlugin.showMarker("circle2")//显示你需要显示的marker

            }

            );

            console.log(this.viewer.defaultZoomLvl)

          }

          if (markerid == "circle2") {

            this.viewer

              .setPanorama(this.imgurl3, { longitude: 6.113027338614143, latitude: -2.914362084993627e-9 }, true)

              .then(() => markersPlugin.showMarker("circle3"));

          }

          if (markerid == "circle3") {

            this.viewer

              .setPanorama(this.imgurl4)

              .then(() => markersPlugin.showMarker("circle4"));

          }

          if (markerid == "circle4") {

            this.viewer.setPanorama(this.imgurl1)

              .then(() => markersPlugin.showMarker("circle1"));

          }

          this.viewer.zoom(0)//改变缩放

        });

    });

  },

};

</script>

<style >

.bgc {

  padding: 5px 10px;

  border-radius: 8px;

  background-color: rgba(0, 0, 0, 0.5);

  color: antiquewhite;

}

</style>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值