import Vue from 'vue' let vue = new Vue() export default class Utils { constructor(){ } /** * 设置初始视角 */ setInitView(krpano,canvas) { let url = this.setInitAngleImg(canvas); var sceneName = krpano.get('xml.scene'); var hlookat = krpano.get("view.hlookat"); var vlookat = krpano.get("view.vlookat"); console.log(hlookat,vlookat); return { sceneName, hlookat, vlookat, url } } scaleCanvas (canvas, width, height) { let w = canvas.width let h = canvas.height; if (width == undefined) { width = w; } if (height == undefined) { height = h; } var retCanvas = document.createElement('canvas'); var retCtx = retCanvas.getContext('2d'); retCanvas.width = width; retCanvas.height = height; retCtx.drawImage(canvas, 0, 0, w, h, 0, 0, width, height); return retCanvas; } getDataURL (canvas, type, width, height) { let cas = this.scaleCanvas(canvas, width, height); return cas.toDataURL(type, 1); } setInitAngleImg(mycanvas){ var url = this.getDataURL(mycanvas,"image/jpeg",600,400); return url } radarRotate(){ // console.log(sceneName,hlookat); } /** * 编辑热点 */ edithotspot(krpano,param){ krpano.call(`editImgTextHotSpot( ${param.img}, ${param.name}, ${param.hotspotTitle}, ${param.ath}, ${param.atv}, ${true}, ${true}, ${param.link}, ${true}, ${param.visible}, ${param.size||1}, ${param.fontSize})`); } /** * 添加热点 */ addhotspot(krpano,param, type){ krpano.set("curscreen_x", $('#pano').width() / 2); krpano.set("curscreen_y", $('#pano').height() / 2); krpano.call("screentosphere(curscreen_x, curscreen_y, curscreen_ath, curscreen_atv);"); let ath = krpano.get("curscreen_ath"); let atv = krpano.get("curscreen_atv"); // 修改标签图片 krpano.call(`addImgTextHotSpot( static/panoassets/images/hotspot/icon/tab.svg, ${param.name}, ${param.hotspotTitle}, ${param.ath!=''?param.ath:ath}, ${param.atv!=''?param.atv:atv}, ${true}, ${type}, ${param.link}, ${true}, ${param.visible}, ${(100) || 1}, ${Number(param.fontSize)})`); // 设置热点图片默认的偏移值 let offset = '-130%' if (param.size < 1) { offset = '-200%' } if (param.size > 1) { offset = '-100%' } krpano.set('layer[tooltip_'+param.name+'].y',`${offset}`) } htmlEncode(str) { var s = ""; if (str.length == 0) return ""; s = str.replace(/\'/g, "'"); s = s.replace(/\"/g, """); s = s.replace(/\(/g, "("); s = s.replace(/\)/g, ")"); s = s.replace(/,/g, ","); return s; } /** * * @param {*} 定位热点 */ looktohotspot(krpano, hotspotName){ var curFov = krpano.get('view.fov'); krpano.call('looktohotspot('+hotspotName+','+curFov+')'); } /** * * @param {*} 定位热点 */ getHotspotHV(krpano, hotspotName){ var ath = krpano.get(`hotspot[${hotspotName}].ath`); var atv = krpano.get(`hotspot[${hotspotName}].atv`); return {ath,atv} } /** * 打开热点链接 */ linkopen(sceneCode, id){ // vue.$bus.emit('clickHotspot', id) vue.$msgCenter.publish('clickHotspot', id) } /** * 初始化 */ initHotspot(krpano,someData,type){ if (!someData) { return } let mysd = someData if (typeof someData == 'string') { mysd = JSON.parse(someData) } mysd.hotspots.forEach(item => { this.addhotspot(krpano,item,type) }); } /** * 显示隐藏热点 */ toggleHotspot(krpano,toggle){ try { krpano.call(`set_hotspot_visible(${toggle})`); } catch (e) { e } } /** * 显示隐藏热点 */ } // toggleHotspot(krpano,someData,toggle){ // if (!someData) { // return // } // let mysd = JSON.parse(someData) // mysd.hotspots.forEach(item => { // krpano.set(`hotspot[${item.name}].visible`,toggle); // }); // }