myTwiceMo.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. let time = -1
  2. let time2 = -1
  3. let time2Num = 0
  4. // 小人移位函数
  5. const renMoveFu = () => {
  6. // 底部左侧小人logo和上箭头的dom,拿到dom元素的时候在执行下面的代码
  7. const bottomClickDom = document.querySelector('.icon-pull-up')
  8. const bottomClickDom2 = document.querySelector('.g-parent')
  9. // console.log(bottomClickDom, '按钮')
  10. if (bottomClickDom) {
  11. // 展开导览列表和隐藏导览列表
  12. const isActiveDom = document.querySelector('.controls-bar')
  13. bottomClickDom.addEventListener('click', () => {
  14. // console.log(bottomClickDom, '按钮')
  15. const flag = isActiveDom.className.includes('active')
  16. console.log(bottomClickDom, 'isActiveDom', flag)
  17. const carListDomAll = document.querySelector('.carList')
  18. carListDomAll.style.bottom = flag ? '180px' : '64px'
  19. })
  20. bottomClickDom2.addEventListener('click', () => {
  21. // console.log(bottomClickDom, '按钮')
  22. const flag = isActiveDom.className.includes('active')
  23. console.log(bottomClickDom, 'isActiveDom', flag)
  24. const carListDomAll = document.querySelector('.carList')
  25. carListDomAll.style.bottom = flag ? '180px' : '64px'
  26. })
  27. clearInterval(time2)
  28. }
  29. }
  30. time = setInterval(() => {
  31. console.log('定时器执行,获取完所有dom,页面准备完毕');
  32. if (__sdk && __sdk.Camera && __sdk.Camera.getPose && __sdk.Camera.getPose() && __sdk.Camera.getPose().panoId) {
  33. clearInterval(time)
  34. // 整个的小人box
  35. const carListDomAll = document.querySelector('.carList')
  36. carListDomAll.style.display = 'block'
  37. renMoveFu()
  38. time2 = window.setInterval(() => {
  39. renMoveFu()
  40. time2Num++
  41. console.log('小人移位功能准备完毕,或者没有导览');
  42. if (time2Num >= 5) {
  43. clearInterval(time2)
  44. }
  45. }, 500);
  46. // 小人和列表的切换
  47. const carList1Dom = document.querySelector('.carList1')
  48. const carList2Dom = document.querySelector('.carList2')
  49. const carList1_2Dom = document.querySelector('.carList1_2')
  50. const carList2_2Dom = document.querySelector('.carList2_2')
  51. carList1_2Dom.onclick = () => {
  52. carList1Dom.style.display = 'none'
  53. carList2Dom.style.display = 'block'
  54. carList2_2Dom.scrollTop = 0
  55. }
  56. const carList2_2BackDom = document.querySelector('.carList2_2Back')
  57. carList2_2BackDom.onclick = () => {
  58. carList1Dom.style.display = 'flex'
  59. carList2Dom.style.display = 'none'
  60. }
  61. // 动态渲染列表
  62. let temp1 = ''
  63. myData.forEach(v1 => {
  64. let temp2 = ''
  65. v1.son.forEach(v2 => {
  66. temp2 += `<div class="c_boxTxt" id=${v2.panoId} _x=${v2.x} _y=${v2.y} _z=${v2.z} _w=${v2.w}>
  67. <p>
  68. ${v2.name}
  69. </p>
  70. </div>`
  71. })
  72. temp1 += `<div class="c_box"><div class="c_boxTit">${v1.name}</div>${temp2}</div>`
  73. })
  74. const carList2_2MainDom = document.querySelector('.carList2_2Main')
  75. carList2_2MainDom.innerHTML = temp1
  76. const c_boxTxtArr = document.querySelectorAll('.c_boxTxt')
  77. c_boxTxtArr.forEach(v => {
  78. v.onclick = () => {
  79. const id = v.attributes['id'].nodeValue
  80. const _x = v.attributes['_x'].nodeValue
  81. const _y = v.attributes['_y'].nodeValue
  82. const _z = v.attributes['_z'].nodeValue
  83. const _w = v.attributes['_w'].nodeValue
  84. const obj = {
  85. currentScale: 1,
  86. flying: false,
  87. mode: "panorama",
  88. modeTran: "panorama-panorama",
  89. panoId: id,
  90. quaternion: { isQuaternion: true, _x, _y, _z, _w }
  91. }
  92. // 移动到视角
  93. __sdk.Camera.setPose(obj)
  94. // 移动到点位
  95. __sdk.Camera.flyToPano(id)
  96. // 隐藏展示卡
  97. const carList1Dom = document.querySelector('.carList1')
  98. const carList2Dom = document.querySelector('.carList2')
  99. carList1Dom.style.display = 'flex'
  100. carList2Dom.style.display = 'none'
  101. }
  102. })
  103. __sdk.Camera.on('flying.started', (pano) => {
  104. classAddFu(pano.panoId)
  105. })
  106. // 初始判断点位id,来高亮
  107. const baseId = __sdk.Camera.getPose().panoId
  108. classAddFu(baseId)
  109. }
  110. }, 500);
  111. // 添加和删除class的方法
  112. const classAddFu = (oldId) => {
  113. const c_boxTxtArr = document.querySelectorAll('.c_boxTxt')
  114. c_boxTxtArr.forEach(v => {
  115. const id = v.attributes['id'].nodeValue
  116. if (oldId == id) v.classList.add('c_boxTxtAc')
  117. else v.classList.remove('c_boxTxtAc')
  118. })
  119. }