utils.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. import Vue from 'vue'
  2. let vue = new Vue()
  3. export default class Utils {
  4. constructor(){
  5. }
  6. /**
  7. * 设置初始视角
  8. */
  9. setInitView(krpano,canvas) {
  10. let url = this.setInitAngleImg(canvas);
  11. var sceneName = krpano.get('xml.scene');
  12. var hlookat = krpano.get("view.hlookat");
  13. var vlookat = krpano.get("view.vlookat");
  14. console.log(hlookat,vlookat);
  15. return {
  16. sceneName,
  17. hlookat,
  18. vlookat,
  19. url
  20. }
  21. }
  22. scaleCanvas (canvas, width, height) {
  23. let w = canvas.width
  24. let h = canvas.height;
  25. if (width == undefined) {
  26. width = w;
  27. }
  28. if (height == undefined) {
  29. height = h;
  30. }
  31. var retCanvas = document.createElement('canvas');
  32. var retCtx = retCanvas.getContext('2d');
  33. retCanvas.width = width;
  34. retCanvas.height = height;
  35. retCtx.drawImage(canvas, 0, 0, w, h, 0, 0, width, height);
  36. return retCanvas;
  37. }
  38. getDataURL (canvas, type, width, height) {
  39. let cas = this.scaleCanvas(canvas, width, height);
  40. return cas.toDataURL(type, 1);
  41. }
  42. setInitAngleImg(mycanvas){
  43. var url = this.getDataURL(mycanvas,"image/jpeg",600,400);
  44. return url
  45. }
  46. radarRotate(){
  47. // console.log(sceneName,hlookat);
  48. }
  49. /**
  50. * 编辑热点
  51. */
  52. edithotspot(krpano,param){
  53. krpano.call(`editImgTextHotSpot(
  54. ${param.img},
  55. ${param.name},
  56. ${param.hotspotTitle},
  57. ${param.ath},
  58. ${param.atv},
  59. ${true},
  60. ${true},
  61. ${param.link},
  62. ${true},
  63. ${param.visible},
  64. ${param.size||1},
  65. ${param.fontSize})`);
  66. }
  67. /**
  68. * 添加热点
  69. */
  70. addhotspot(krpano,param, type){
  71. krpano.set("curscreen_x", $('#pano').width() / 2);
  72. krpano.set("curscreen_y", $('#pano').height() / 2);
  73. krpano.call("screentosphere(curscreen_x, curscreen_y, curscreen_ath, curscreen_atv);");
  74. let ath = krpano.get("curscreen_ath");
  75. let atv = krpano.get("curscreen_atv");
  76. // 修改标签图片
  77. krpano.call(`addImgTextHotSpot(
  78. static/panoassets/images/hotspot/icon/tab.svg,
  79. ${param.name},
  80. ${param.hotspotTitle},
  81. ${param.ath!=''?param.ath:ath},
  82. ${param.atv!=''?param.atv:atv},
  83. ${true},
  84. ${type},
  85. ${param.link},
  86. ${true},
  87. ${param.visible},
  88. ${(100) || 1},
  89. ${Number(param.fontSize)})`);
  90. // 设置热点图片默认的偏移值
  91. let offset = '-130%'
  92. if (param.size < 1) {
  93. offset = '-200%'
  94. }
  95. if (param.size > 1) {
  96. offset = '-100%'
  97. }
  98. krpano.set('layer[tooltip_'+param.name+'].y',`${offset}`)
  99. }
  100. htmlEncode(str) {
  101. var s = "";
  102. if (str.length == 0) return "";
  103. s = str.replace(/\'/g, "&#39;");
  104. s = s.replace(/\"/g, "&quot;");
  105. s = s.replace(/\(/g, "(");
  106. s = s.replace(/\)/g, ")");
  107. s = s.replace(/,/g, ",");
  108. return s;
  109. }
  110. /**
  111. *
  112. * @param {*} 定位热点
  113. */
  114. looktohotspot(krpano, hotspotName){
  115. var curFov = krpano.get('view.fov');
  116. krpano.call('looktohotspot('+hotspotName+','+curFov+')');
  117. }
  118. /**
  119. *
  120. * @param {*} 定位热点
  121. */
  122. getHotspotHV(krpano, hotspotName){
  123. var ath = krpano.get(`hotspot[${hotspotName}].ath`);
  124. var atv = krpano.get(`hotspot[${hotspotName}].atv`);
  125. return {ath,atv}
  126. }
  127. /**
  128. * 打开热点链接
  129. */
  130. linkopen(sceneCode, id){
  131. // vue.$bus.emit('clickHotspot', id)
  132. vue.$msgCenter.publish('clickHotspot', id)
  133. }
  134. /**
  135. * 初始化
  136. */
  137. initHotspot(krpano,someData,type){
  138. if (!someData) {
  139. return
  140. }
  141. let mysd = someData
  142. if (typeof someData == 'string') {
  143. mysd = JSON.parse(someData)
  144. }
  145. mysd.hotspots.forEach(item => {
  146. this.addhotspot(krpano,item,type)
  147. });
  148. }
  149. /**
  150. * 显示隐藏热点
  151. */
  152. toggleHotspot(krpano,toggle){
  153. try {
  154. krpano.call(`set_hotspot_visible(${toggle})`);
  155. } catch (e) {
  156. e
  157. }
  158. }
  159. /**
  160. * 显示隐藏热点
  161. */
  162. }
  163. // toggleHotspot(krpano,someData,toggle){
  164. // if (!someData) {
  165. // return
  166. // }
  167. // let mysd = JSON.parse(someData)
  168. // mysd.hotspots.forEach(item => {
  169. // krpano.set(`hotspot[${item.name}].visible`,toggle);
  170. // });
  171. // }