Selaa lähdekoodia

Merge branch 'master' of http://192.168.0.115:3000/bill/traffic-laser

xushiting 2 vuotta sitten
vanhempi
commit
d88627c3ef

+ 81 - 5
public/static/lib/potree/potree.js

@@ -81490,6 +81490,8 @@ void main()
 	                || !e.isAtDomElement && this.isNew//如果是刚添加时在其他dom点击, 不要响应
 	                ||  e.hoverViewport != viewer.mainViewport && this.unableDragAtMap //垂直的测量线不允许在地图上放点
 	                || this.isNew && !getDifferentPoint(this.points, this.points.length )   //不允许和之前的点相同, 但这句在点云稀疏时会导致难结束 
+	                || this.isNew && (Date.now() - this.beginAddTime) < Potree.config.clickMaxPressTime && e.pressDistance < Potree.config.clickMaxDragDis/* &&  e.pressTime<Potree.config.clickMaxPressTime */  //有的设备过于灵敏,点击一下就结束测量了,是因为滑动了被判断为拖拽。所以判断下如果滑动距离过近不时间过短就算单击
+	     
 	            ) 
 	        ){
 	            return this.continueDrag(null,e)    
@@ -82013,12 +82015,18 @@ void main()
 	            }
 	            return 
 	        }
+	        
 	         
+	        /* viewer.addEventListener('camera_changed',(e)=>{
+	            if(e.changeInfo.positionChanged){
+	                setLabelPos()
+	            } 
+	        }) */
 	         
 	         
 	        let setEdgeLabel = (label,p1,p2,distance)=>{//设置label位置和字
-	            let center = new Vector3().addVectors(p1,p2).multiplyScalar(0.5);  
-	            label.setPos(center); 
+	            this.setEdgeLabelPos(label,p1,p2);
+	 
 	            distance = distance == void 0 ? p1.distanceTo(p2) : distance; 
 	            var text = this.labelText || viewer.unitConvert.convert(distance, 'distance', Potree.settings.precision, this.unitSystem, 0.1 , true);//distance要传0.1 这个factor
 	            label.setText(text);
@@ -82043,10 +82051,10 @@ void main()
 	                let distance = this.labelText || point.distanceTo(nextPoint);
 	                edgeLabel.shouldVisi = this.labelText || (index < lastIndex || this.isRect || this.closed && !this.isNew ) && distance>0; 
 	                /* this.closed || */edgeLabel.setVisible(edgeLabel.shouldVisi);  
+	                edgeLabel.sprite.lineDir = new Vector3().subVectors(point,nextPoint).normalize(); //[point,nextPoint]
 	                if(edgeLabel.visible){
 	                    setEdgeLabel(edgeLabel,point,nextPoint,distance);
 	                }  
-	                edgeLabel.sprite.lineDir = new Vector3().subVectors(point,nextPoint).normalize(); //[point,nextPoint]
 	            }
 	        } 
 
@@ -82098,7 +82106,28 @@ void main()
 			
 		};
 
-	  
+
+
+	    setEdgeLabelPos(label,p1,p2){ //调整label的位置,使倾斜后看起来在线的中心,而不要挡住端点
+	        let center = new Vector3().addVectors(p1,p2).multiplyScalar(0.5);  
+	         
+	        if(!label.sprite.lineDir || viewer.mainViewport.camera.type == 'OrthographicCamera'){
+	            label.setPos(center);  
+	        }else { 
+	            let eyePos = viewer.mainViewport.camera.position;
+	            let dir = viewer.mainViewport.view.direction; //new THREE.Vector3().subVectors(center,eyePos).normalize()
+	            let vec = label.sprite.lineDir;
+	            let cos = dir.dot(vec);  
+	            
+	            let efficiency = 0.35; // 0-1  数值越高,r越容易接近1或-1,label越容易在倾斜后靠近近端点。 
+	            let r = 0.5*efficiency*cos + 0.5;
+	            //console.log(r,    cos )
+	            center = p1.clone().multiplyScalar(1-r).add(p2.clone().multiplyScalar(r)); //label在线上滑动,使尽量保持在视觉中心
+	            label.setPos(center);  
+	        } 
+	    }
+
+	    
 	      
 		addMarker (o={}) {
 	         
@@ -83295,6 +83324,16 @@ void main()
 	        
 	        viewer.addEventListener('resize',this.setSize.bind(this));
 	        
+	        
+	        
+	        
+	        
+	        
+	        
+	        
+	        
+	        
+	        
 		}
 
 		onSceneChange(e){
@@ -83325,7 +83364,41 @@ void main()
 	    }
 	    
 	    
-		update(){
+		update(){ 
+	        //add
+	        viewer.scene.measurements.forEach(measure=>{
+	            
+	            let lastIndex = measure.points.length - 1; 
+	            for (let index = 0; index <= lastIndex; index++) {
+	                
+	                let nextIndex = (index + 1 > lastIndex) ? 0 : index + 1;
+	                let previousIndex = (index === 0) ? lastIndex : index - 1;
+	                
+	                let point = measure.points[index];
+	                let nextPoint = measure.points[nextIndex];
+	                let previousPoint = measure.points[previousIndex];
+	 
+	                if(measure.showDistances || measure.labelText){ // edge labels
+	                    let edgeLabel = measure.edgeLabels[index];
+	                  
+	                    if(edgeLabel.visible){
+	                        measure.setEdgeLabelPos(edgeLabel, point, nextPoint  );
+	                    }  
+	                }
+	            } 
+	            
+	        });
+	        
+	        
+	        
+	        
+	        
+	        
+	        
+	        
+	        
+	        
+	        
 	        return;
 	        
 	        
@@ -83706,6 +83779,8 @@ void main()
 	            this.viewer.removeEventListener('global_touchstart', click );//add  importance
 	            measure.dispatchEvent('firstClick');
 	            
+	            
+	            measure.beginAddTime = Date.now();
 	            //console.log('measure clicked')
 	            e.consume && e.consume();
 	            
@@ -89507,6 +89582,7 @@ void main()
 	                    {
 	                        type: 'drop',
 	                        pressDistance, 
+	                        pressTime
 	                    }
 	                ));
 	                

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
public/static/lib/potree/potree.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
server/test/a0k4xu045_202305311600080410/attach/sceneStore


+ 0 - 1
src/graphic/History/Change.js

@@ -272,7 +272,6 @@ export default class Change {
     for (const key in texts) {
       const text = texts[key];
       const lastText = this.lastData.texts[key];
-
       // 不存在意味着增加
       if (!lastText) {
         const item = {

+ 9 - 1
src/graphic/History/HistoryUtil.js

@@ -78,7 +78,9 @@ export default class HistoryUtil {
     if (
       mathUtil.equalPoint(text1.center, text2.center) &&
       text1.value == text2.value &&
-      text1.angle == text2.angle
+      text1.angle == text2.angle && 
+      text1.fontSize == text2.fontSize && 
+      text1.color == text2.color 
     ) {
       return false;
     } else {
@@ -387,6 +389,8 @@ export default class HistoryUtil {
     textInfo.value = text2.value;
     textInfo.center = JSON.parse(JSON.stringify(text2.center));
     textInfo.angle = text2.angle;
+    textInfo.color = text2.color;
+    textInfo.fontSize = text2.fontSize;
     this.setTextInfo(textInfo);
   }
 
@@ -633,6 +637,8 @@ export default class HistoryUtil {
     data.center = {};
     mathUtil.clonePoint(data.center, text.center);
     data.value = text.value;
+    data.fontSize = text.fontSize 
+    data.color = text.color 
     return data;
   }
 
@@ -856,6 +862,8 @@ export default class HistoryUtil {
     text.center = JSON.parse(JSON.stringify(textInfo.center));
     text.value = textInfo.value;
     text.angle = textInfo.angle;
+    text.fontSize = textInfo.fontSize;
+    text.color = textInfo.color;
   }
 
   setMagnifierInfo(magnifierInfo) {