vueでphoto-sphere-viewerを使用する

Use Photo Sphere Viewer Vue

公式サイト: フォトスフィアビューアー

  • photo-sphere-viewerの依存関係をインストールします
npm install photo-sphere-viewer --save-dev
  • 使用する必要のあるページにファイルをインポートする
import PhotoSphereViewer from 'photo-sphere-viewer' import 'photo-sphere-viewer/dist/photo-sphere-viewer.css'

そうすれば普通に使えます



<div :id='photosphere' class='photosphere'></div> import PhotoSphereViewer from 'photo-sphere-viewer' import 'photo-sphere-viewer/dist/photo-sphere-viewer.css' data() { return { panoramadata: null, nextPano: {}, loading_img: require('../../static/pano/assets/photosphere-logo.gif'), photosphere: 'photosphere', imageLoaded: false, } },

表示

showPhoto() { let that = this this.displayPanoramadata = true // this.panoramadata this.panoramadata = PhotoSphereViewer({ container: this.photosphere, panorama: this.nextPano.url, caption: this.nextPano.desc, //description loading_img: this.loading_img, // The default value is null, the path of the picture displayed during loading. // longitude_range: [-7 * Math.PI / 8, 7 * Math.PI / 8], // Optional, the longitude value passed by each pixel when moving. latitude_range: [-3 * Math.PI / 4, 3 * Math.PI / 4], // Optional, the latitude value passed by each pixel when moving. anim_speed: '-2rpm', autoload: true, // Optional, the default value is true, true is to automatically call the panorama, false is to load the panorama later (via the .load () method) fisheye: true, move_speed: 1.1, time_anim: false, // How many milliseconds to play automatically size: { width: '100%', height: '100%', }, navbar: false, // The following navigation bar is not displayed // navbar: [ // 'autorotate', 'zoom', 'download', 'markers', // ], markers: (function() { let a = that.nextPano.nodes return a }()) }) },

パノラマでマーカーを選択します。

this.panoramadata.on('select-marker', function(marker, dblclick) { //marker })

IOSでのハンドオーバーの失敗を防ぐため

swichPhoto(url) { let that = this let photosphere = document.getElementById('photosphere') if (this.panoramadata) { photosphere.style.opacity = 0 this.imageLoaded = false this.panoramadata.setCaption(this.nextPano.desc) this.panoramadata.setPanorama(url, true, true).then(() => { this.imageLoaded = true photosphere.style.opacity = 1 console.log('------- Complete replacement picture --------') }) } else { this.showPhoto() } },

削除マーカーを追加

if(this.panoramadata.hud.markers) { // Determine whether the current panorama has a mark: this.panoramadata.hud.clearMarkers() } for(let i = 0 i < this.nextPano.nodes.length i+=1) { let node = this.nextPano.nodes[i] this.panoramadata.addMarker(node) }