| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- 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);
- // });
- // }
|