xzw 4 روز پیش
والد
کامیت
9e6e23e40f
3فایلهای تغییر یافته به همراه39 افزوده شده و 6 حذف شده
  1. 16 0
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 22 5
      src/sdk/cover/index.js

+ 16 - 0
public/lib/potree/potree.js

@@ -5887,6 +5887,21 @@
 	    }
 	    n && i.normalize();
 	  },
+	  timeDifference(startStr, endStr) {
+	    //格式:'YEAR-MM-DD HH:MM:SS' 
+	    var start = new Date(startStr);
+	    var end = new Date(endStr);
+	    var dur = Math.abs(end - start);
+	    var o = [['天', 24 * 1000 * 60 * 60], ['时', 1000 * 60 * 60], ['分', 1000 * 60], ['秒', 1000]];
+	    var resultStr = '';
+	    for (var i = 0; i < o.length; i++) {
+	      if (dur >= o[i][1]) {
+	        resultStr += parseInt(dur / o[i][1]) + o[i][0];
+	        dur %= o[i][1]; //最后剩下一点给毫秒?
+	      }
+	    }
+	    return resultStr;
+	  },
 	  getFootPoint: function getFootPoint(oldPos, p1, p2, restricInline) {
 	    //找oldPos在线段p1, p2上的垂足
 	    /*  
@@ -23292,6 +23307,7 @@
 	      {
 	        var oldClone = model.clone;
 	        model.clone = () => {
+	          //SkinnedMesh的模型复制了有问题,不能移动
 	          var copyObj = oldClone.apply(model);
 	          copyObj.boundingBox = model.boundingBox.clone();
 	          copyObj.updateMatrixWorld();

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
public/lib/potree/potree.js.map


+ 22 - 5
src/sdk/cover/index.js

@@ -6,7 +6,8 @@ import libTransform from 'coordtransform';
 
 
  
-let aniPaths = [], pathDevices = [], pathHistorys = new Map, pathModels = [], modelList = {}, camFollowDevice,  modelDisToCam, maxDevicePathId=0
+let aniPathStartTime, recordStarted, aniPaths = [], pathDevices = [], pathHistorys = new Map, pathModels = [], modelList = {}, 
+    camFollowDevice,  modelDisToCam, maxDevicePathId=0
 let createAnimatePath = (token)=>{//实时路径  保存:generateAniPathData
     let caseId = Potree.browser.urlHasValue('caseId',true)  
     let count = 0
@@ -131,13 +132,14 @@ let createAnimatePath = (token)=>{//实时路径  保存:generateAniPathData
 
              
             //写入历史
-            
-            
+             
             let sameIndex = data.locationList.findIndex(e=>e.time == history[history.length - 1]?.time)
             if(sameIndex == -1) sameIndex = data.locationList.length - 1 //全部是新点
             let newPoints = points.filter(e=>e.index<sameIndex).map(e=>e.point).reverse() 
+            recordStarted || (history.length = 0) //没开始录制的话就只要最新的一条,用来在点击后立刻就有一条
             history.push(...newPoints)  
              
+             
             
         })
         
@@ -2681,22 +2683,34 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
             modelDisToCam = 4 //拉进
         },
         
-        generateAniPathData( ){//输出实时路径的数据保存
+        
+        startRecordPath(){//开始录制
+            console.log('startRecordPath')
+            recordStarted = true
+        },
+        generateAniPathData(){//输出实时路径的数据保存
             let startId = maxDevicePathId + 1
             let getTime = (str)=>{
                 return str.split('-').join('')
             }
             let dataAll = aniPaths.map((path,i)=>{
                 let points = pathHistorys.get(pathDevices[i].macId) 
-                let timeStart = points[0]?.time
+                let timeStart = points[0]?.time  
                 let timeEnd = points[points.length - 1]?.time
                 let name = pathDevices[i].deviceName || '' 
+                /* 
+                
                 if(timeStart && timeEnd){
                     if(timeStart == timeEnd)name += '('+getTime(timeStart)+')'
                     else name += '('+ getTime(timeStart) + ' - '+ getTime(timeEnd)+')'
                 }else{
                     if(timeStart)name += '('+getTime(timeStart)+')'
                     else if(timeEnd)name += '('+getTime(timeEnd)+')'
+                } */
+                if(timeStart){
+                    name += ' ' + timeStart + '('+Potree.math.timeDifference(timeStart, timeEnd)+')'
+                }else{
+                    name += '(无数据)'
                 }
                 points.forEach(e=>delete e.time)
                 
@@ -2721,7 +2735,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 return data
                 
             })
+            pathHistorys.clear()
+            recordStarted = false
             
+            console.log('generateAniPathData',dataAll)
             return dataAll
             
         }