Преглед на файлове

fix: 修复slam场景无漫游点导致的bug

xzw преди 1 година
родител
ревизия
d7a5a1b6b3
променени са 3 файла, в които са добавени 32 реда и са изтрити 11 реда
  1. 20 3
      src/components/header/index.vue
  2. 10 6
      src/utils/ConvertViews.js
  3. 2 2
      src/utils/sync.js

+ 20 - 3
src/components/header/index.vue

@@ -104,18 +104,35 @@ const creatAvatar = head => {
 }
 const getCurPosInfo = () => {
     let app = sync.sourceInst
-    let pos1
+    let pos1, id
     if (app.sceneType == 'laser') {
         pos1 = app.viewer.images360.position
+        id = app.viewer.images360.currentPano?.id
     } else {
         pos1 = app.app.core.get('Player').currentPano.position
+        id = app.app.core.get('Player').currentPano.id
     }
     let info = sync.targetInst.viewer.getCameraStatus()
     let pos2 = info.position
-    return { pos1, pos2 }
+    let data = { pos1, pos2 }
+    if(id != void 0)data.id = id
+    return data
 }
+
+//旧数据由id和position构成,新数据由pos1,pos2和id(可能无)构成。 position相当于pos2,是bim的坐标
+//可能p1 p2有一个新一个旧 orz。   
 const ifSame = (p1,p2)=>{
-    return p1 && p2 && (math.closeTo(p1.pos1, p2.pos1, 0.1) || math.closeTo(p1.pos2, p2.pos2, 0.1));
+     
+    if(!p1 || !p2)return false
+    if(p1.id != void 0 && p1.id == p2.id) return true
+
+    let p1Pos1 = p1.pos1,
+        p1Pos2 = p1.position || p1.pos2,
+        p2Pos1 = p2.pos1,
+        p2Pos2 = p2.position || p2.pos2
+    if(p1Pos1 && p2Pos1 && math.closeTo(p1Pos1, p2Pos1, 0.1) ) return true     
+    if(p1Pos2 && p2Pos2 && math.closeTo(p1Pos2, p2Pos2, 0.1) ) return true     
+ 
 }
 
 const onSetP1 = () => {

+ 10 - 6
src/utils/ConvertViews.js

@@ -32,7 +32,7 @@ export default class ConvertViews extends THREE.EventDispatcher{
         
         //this.syncPosRot(sourceFakeApp.viewInfo, targetApp , convertInfo) //修改好位置朝向 这个4dkk的会报错但上一版是用这句
         if(sourceApp.sceneType == 'kankan' || sourceFakeApp.viewInfo.isAtPano){
-            this.flyToPano(targetApp, sourceFakeApp.viewInfo.currentPano,{duration:0, zoomLevel:sourceFakeApp.viewInfo.zoomLevel})
+            this.flyToPano(targetApp, sourceFakeApp.viewInfo.currentPano?.id, null, {duration:0, zoomLevel:sourceFakeApp.viewInfo.zoomLevel})
         }
          this.syncView(sourceApp, targetApp, convertInfo)//这个不记得有什么bug了
         
@@ -261,7 +261,7 @@ export default class ConvertViews extends THREE.EventDispatcher{
                 prop.lookAtPoint = new THREE.Vector3().addVectors(panos2[0].position, dir)
 
             } 
-            this.flyToPano(targetApp, panos2[0].id, prop)     
+            this.flyToPano(targetApp, panos2[0].id, null, prop)     
             
             
         } 
@@ -978,12 +978,16 @@ export default class ConvertViews extends THREE.EventDispatcher{
         
     }
     
-    flyToPano(app, panoId, o={}){
+    flyToPano(app, panoId, position, o={}){
         if(app.sceneType == 'laser'){ 
             this.laserCancelFly(app)//app.viewer.images360.cancelFlyToPano() 
-            app.viewer.images360.flyToPano(Object.assign({},{ 
-                pano: app.viewer.images360.getPano(panoId)
-            },o)) 
+            if(app.viewer.images360.panos.length == 0){//slam
+                app.viewer.mainViewport.view.setView({position, duration:1000})
+            }else{
+                app.viewer.images360.flyToPano(Object.assign({},{ 
+                    pano: app.viewer.images360.getPano(panoId)
+                },o)) 
+            } 
         }else{
             let player = app.app.core.get('Player')
             player.flyToPano(Object.assign({},{ 

+ 2 - 2
src/utils/sync.js

@@ -18,10 +18,10 @@ export function setPanoWithBim(data){
 }
 export function flyToP1P2(data){
     //left
-    views.flyToPano(sourceApp, data.id,  {duration : views.settings.durations.flyToPano}) 
+    views.flyToPano(sourceApp, data.id, data.pos1, {duration : views.settings.durations.flyToPano}) 
     
     //right
-    views.bimFlyTo({position:data.position,  duration : views.settings.durations.flyToPano}) 
+    views.bimFlyTo({position: data.pos2 || data.position,  duration : views.settings.durations.flyToPano}) 
 }