xzw 1 月之前
父节点
当前提交
294c58d814
共有 3 个文件被更改,包括 78 次插入72 次删除
  1. 45 31
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 32 40
      src/sdk/cover/index.js

+ 45 - 31
public/lib/potree/potree.js

@@ -42659,6 +42659,12 @@
 	      this.add(o.edge);
 	      this.edges = [...this.edges.slice(0, index), o.edge, ...this.edges.slice(index, this.edges.length)];
 	    }
+	    var event = {
+	      type: 'marker_added',
+	      marker: o.marker,
+	      index
+	    };
+	    this.dispatchEvent(event);
 	  }
 	  dragMarker(e) {
 	    var I, atMap;
@@ -43349,19 +43355,20 @@
 	    if (result.length == count || count == void 0) return result;
 	  }
 	  getTotalDistance() {
-	    if (this.points.length === 0) {
+	    var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.points;
+	    if (points.length === 0) {
 	      return 0;
 	    }
 	    var distance = 0;
-	    for (var i = 1; i < this.points.length; i++) {
-	      var prev = this.points[i - 1];
-	      var curr = this.points[i];
+	    for (var i = 1; i < points.length; i++) {
+	      var prev = points[i - 1];
+	      var curr = points[i];
 	      var d = prev.distanceTo(curr);
 	      distance += d;
 	    }
-	    if (this.closed && this.points.length > 1) {
-	      var first = this.points[0];
-	      var last = this.points[this.points.length - 1];
+	    if (this.closed && points.length > 1) {
+	      var first = points[0];
+	      var last = points[points.length - 1];
 	      var _d = last.distanceTo(first);
 	      distance += _d;
 	    }
@@ -44058,12 +44065,14 @@
 	      coordinateLabel.setVisible(false);
 	      this.coordinateLabels.push(coordinateLabel);
 	    }
-	    var event = {
-	      type: 'marker_added',
-	      measurement: this,
-	      marker: marker
+
+	    /* let event = {
+	    	type: 'marker_added',
+	    	measurement: this,
+	    	marker: marker
 	    };
-	    this.dispatchEvent(event);
+	    this.dispatchEvent(event); */
+
 	    this.expands.forEach(e => e.addMarker(o));
 	    //this.setMarker(this.points.length - 1, point);
 	    this.update({
@@ -45328,13 +45337,14 @@
 	    }
 	  }
 	  getPosByIntersect(e, type) {
+	    var points = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.points;
 	    //intersect落在线上的位置,以及在哪两个点之间
 	    var modelMatrixInvert = this.edge.matrixWorld.clone().invert();
 	    if (!Potree.settings.pathSmooth) {
 	      var prevIndex = Math.floor(e.hoveredElement.faceIndex / 2); //端点1(可能是最后一个)
 	      var nextIndex = this.getIndex(prevIndex, 1); //端点2(可能是第一个)
 	      var index = prevIndex + 1; //新点在端点1后
-	      var point = math.getFootPoint(e.hoveredElement.point, this.points[prevIndex], this.points[nextIndex]);
+	      var point = math.getFootPoint(e.hoveredElement.point, points[prevIndex], points[nextIndex]);
 	      return {
 	        index,
 	        prevIndex,
@@ -45355,7 +45365,7 @@
 	        };
 	      }
 	      var _prevIndex, _nextIndex;
-	      var count = this.points.length - 1;
+	      var count = points.length - 1;
 	      for (var i = 0; i < count; i++) {
 	        if (_prevIndex == void 0 && i / count <= this.UtoTMapArr[prevIndex0] && (i + 1) / count > this.UtoTMapArr[prevIndex0]) {
 	          _prevIndex = i; //该片段端点1在原先points中哪个点之后(可包含)
@@ -45382,7 +45392,7 @@
 	        var searchIndex;
 	        while (j <= _nextIndex) {
 	          //根据APlen长度算区间
-	          var len = AB.clone().normalize().dot(new Vector3().subVectors(this.points[j + 1], A)); //在AB的投影长度
+	          var len = AB.clone().normalize().dot(new Vector3().subVectors(points[j + 1], A)); //在AB的投影长度
 	          if (len > APlen) {
 	            searchIndex = j;
 	            break;
@@ -45697,21 +45707,14 @@
 	        this.removePoint(this.markers.indexOf(marker));
 	      } else {
 	        //点击选中点
-	        this.dispatchEvent({
-	          type: 'markerSelect',
-	          marker
+	        this.markers.forEach(marker_ => {
+	          marker_ != marker && this.setMarkerSelected(marker_, 'unclick');
 	        });
 	        this.setMarkerSelected(marker, 'click');
 	        setTimeout(() => {
 	          viewer.addEventListener('global_click', e => {
-	            var _e$clickElement;
 	            //点击空白处取消全部
-	            if (((_e$clickElement = e.clickElement) === null || _e$clickElement === void 0 ? void 0 : _e$clickElement.oriObject) == marker) return;
-	            this.dispatchEvent({
-	              type: 'markerSelect',
-	              marker,
-	              cancel: true
-	            });
+	            //if(e.clickElement?.oriObject == marker)return
 	            this.setMarkerSelected(marker, 'unclick');
 	          }, {
 	            once: true
@@ -45721,7 +45724,7 @@
 	      e.consume();
 	    });
 	    marker.addEventListener('startDragging', e => {
-	      this.isNew || this.setMarkerSelected(marker, 'click'); //选中
+	      this.isNew || this.setMarkerSelected(marker, 'drag'); //选中
 	      this.isNew || viewer.measuringTool.history.beforeChange(this);
 	      this.arrows && Potree.Utils.updateVisible(this.arrows, 'dragging', false);
 	      //Potree.Common.waitTool.cancel('pathUpdateArrowDelay')
@@ -45743,7 +45746,7 @@
 	      });
 	      this.lastDropTime = Date.now();
 	      this.isNew || viewer.measuringTool.history.afterChange(this);
-	      this.setMarkerSelected(marker, 'unclick');
+	      this.setMarkerSelected(marker, 'undrag');
 	    });
 	    var label = this.createMarkerLabel('');
 	    this.markerLabels = [...this.markerLabels.slice(0, index), label, ...this.markerLabels.slice(index, this.points.length)];
@@ -45757,7 +45760,9 @@
 	    return marker;
 	  }
 	  updateEndCaps() {
-	    var len = this.points.length;
+	    var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.points;
+	    //更新端点  (这把points提到参数里是因为有个隐藏点的项目)
+	    var len = points.length;
 	    var pts = this.geoPoints.length > 0 ? this.geoPoints : this.points;
 	    var len2 = pts.length;
 	    this.endCaps.forEach((e, i) => {
@@ -45870,9 +45875,18 @@
 	  setMarkerSelected(marker, state) {
 	    state == 'hover' && (marker.markerSelectStates.hover = true);
 	    state == 'unhover' && (marker.markerSelectStates.hover = false);
-	    state == 'click' && (marker.markerSelectStates.click = true); //click or drag
-	    state == 'unclick' && (marker.markerSelectStates.click = false);
-	    if (marker.markerSelectStates.click) {
+	    state == 'click' && (marker.markerSelectStates.click = true, this.dispatchEvent({
+	      type: 'markerSelect',
+	      marker
+	    })); //click or drag
+	    state == 'unclick' && (marker.markerSelectStates.click = false, this.dispatchEvent({
+	      type: 'markerSelect',
+	      marker,
+	      cancel: true
+	    }));
+	    state == 'drag' && (marker.markerSelectStates.drag = true); //click or drag
+	    state == 'undrag' && (marker.markerSelectStates.drag = false);
+	    if (marker.markerSelectStates.click || marker.markerSelectStates.drag) {
 	      marker.material = getMarkerMat('drag');
 	      marker.renderOrder = marker.pickOrder = Potree.config.renderOrders.path.marker + 1;
 	    } else if (marker.markerSelectStates.hover) {

文件差异内容过多而无法显示
+ 1 - 1
public/lib/potree/potree.js.map


+ 32 - 40
src/sdk/cover/index.js

@@ -153,38 +153,28 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
     }
     
     {
+        Potree.Path.prototype.getVisiPoints = function(points=this.points){ 
+            return points.filter((e,i)=>{return !this.pointHideList[i]})
+        }
+        
         let oldfun = Potree.Path.prototype.getDifferentPoint
         Potree.Path.prototype.getDifferentPoint = function(points){ 
             return oldfun.call(this, this.getVisiPoints(points) )
+        }  
+        let oldfun2 = Potree.Path.prototype.updateEndCaps
+        Potree.Path.prototype.updateEndCaps = function(points){
+            return oldfun2.call(this, this.getVisiPoints(points) ) 
         } 
-        
-        Potree.Path.prototype.getVisiPoints = function(points=this.points){ 
-            return points.filter((e,i)=>{return !this.pointHideList[i]})
-        }
-        Potree.Path.prototype.updateEndCaps = function(){
-            let points = this.getVisiPoints() //这里points改了!!!
-            let len = points.length
-            let pts = this.geoPoints.length>0 ? this.geoPoints : this.points
-            let len2 = pts.length
-            
-            
-            this.endCaps.forEach((e,i)=>{
-                Potree.Utils.updateVisible(e, 'hasPoints', len>0)
-                if(len){  
-                    if(len>1){
-                        let dir = i==0 ? new THREE.Vector3().subVectors(pts[1], pts[0]) 
-                                  : new THREE.Vector3().subVectors(pts[len2-2], pts[len2-1]) 
-                        e.quaternion.copy(this.getMeshQuaInPath(dir))
-                    }else{
-                        i==0 ? e.quaternion.set(0,0,0,1) : e.quaternion.set(0,0,1,0)   
-                    } 
-                    e.position.copy(points[i==0 ? 0 : len-1])
-                    let s = this.halfPathWidth * 2.15
-                    e.scale.set(s,s,s)
-                } 
-           })
+        let oldfun3 = Potree.Path.prototype.getPosByIntersect
+        Potree.Path.prototype.getPosByIntersect = function(e, type, points ){
+            return oldfun3.call(this, e, type, this.getVisiPoints(points) ) 
         } 
-        
+        let oldfun4 = Potree.Path.prototype.getTotalDistance
+        Potree.Path.prototype.getTotalDistance = function(points){
+            return oldfun4.call(this, this.getVisiPoints(points) ) 
+        }
+            
+            
     }
     
    
@@ -469,7 +459,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                         position: (p || measure.points[i]).clone(), 
                         modelId: measure.points_datasets[i] == void 0 ? Id_noIntersect : measure.points_datasets[i], 
                         name: measure.markerLabels[i].originText,
-                        hide: false,
+                        hide: measure.pointHideList[i],
                     }}))
                     updatePathFakeLines(measure)
                 }else{
@@ -1936,7 +1926,15 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
         
             let path
             let info = {type : 'Path', minMarkers : 2, title:props.name, lineHeight : props.line.altitudeAboveGround }
-            let createFromData = ()=>{
+           
+            if(props.points.length == 0){
+                path = viewer.measuringTool.startInsertion( info, () => { 
+                    bus.emit("drawed" ); //完成   
+                })
+                path.pointHideList = []
+                path.fakeLines = []
+                viewer.dispatchEvent({ type: 'cancel_insertions', dontRemove: true, measure:path }) //要等进入编辑才能继续编辑
+            }else{  
                 let originPointCount = props.points.length
                  
                 
@@ -1963,16 +1961,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                     path.dispatchEvent('createDone')
                     //console.log('path点因模型被删减少', info.title, originPointCount,'->',props.points.length)
                 } 
-            }
-            if(props.points.length == 0){
-                path = viewer.measuringTool.startInsertion( info, () => { 
-                    bus.emit("drawed" ); //完成   
-                })
-                path.pointHideList = []
-                path.fakeLines = []
-                viewer.dispatchEvent({ type: 'cancel_insertions', dontRemove: true, measure:path }) //要等进入编辑才能继续编辑
-            }else{  
-                createFromData()
+                updatePathFakeLines(path)
             }
             {
                 let curSelectMarker 
@@ -2006,7 +1995,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 path.addEventListener('updated',(e)=>{ 
                     updatePathFakeLines(path)
                 })
-                  
+                path.addEventListener('marker_added',(e)=>{ 
+                    console.log('marker_added')
+                     
+                })  
                  
             }
             let funs = getMeasureFunction(path, bus)