xzw 2 jaren geleden
bovenliggende
commit
b09d978c6d
3 gewijzigde bestanden met toevoegingen van 168 en 134 verwijderingen
  1. 130 116
      public/static/lib/potree/potree.js
  2. 1 1
      public/static/lib/potree/potree.js.map
  3. 37 17
      src/sdk/laser/core/enter.js

+ 130 - 116
public/static/lib/potree/potree.js

@@ -53134,7 +53134,7 @@
 	    funcs: [],
 	    counter: 0,
 	    uniqueID: 0,
-	    start: function(func, duration, done, delay, ease, name, id, cancelFun, ignoreFirstFrame=true) {
+	    start: function(func, duration, done, delay, ease, name, id, cancelFun, ignoreFirstFrame=true, forbitCancel) {
 	        return delay = delay || 0,
 	        this.funcs.push({
 	            func: func,
@@ -53151,6 +53151,7 @@
 				cancelFun : cancelFun,   //取消时执行的函数
 	            updateCount:0,
 	            ignoreFirstFrame,
+	            forbitCancel,
 	        }),
 	        func(0, 16),
 	        this.counter += 1,
@@ -53250,7 +53251,7 @@
 	        var t = void 0 === e ? 0 : e;
 			let cancels = [];
 	        this.funcs = this.funcs.filter(function(e) {
-				var is = e.id == t;
+				var is = e.id == t && !e.forbitCancel;
 				
 				if(is && dealCancelFun){
 	                e.cancelFun && cancels.push(e.cancelFun);
@@ -54069,6 +54070,11 @@
 	    setView( info = {}){
 	        // position, target, duration = 0, callback = null, onUpdate = null, Easing='', cancelFun
 	        this.cancelFlying();
+	        if(this.isFlying()){
+	            if(info.cancelFun)info.cancelFun();
+	            return ;//取消失败
+	        }
+	        
 	        let posWaitDone,  rotWaitDone , dir;
 	        
 	        let posDone = ()=>{
@@ -54160,7 +54166,7 @@
 	                    } 
 	                    posWaitDone = false; 
 	                    info.cancelFun && info.cancelFun();
-	                }, info.ignoreFirstFrame);  
+	                }, info.ignoreFirstFrame,info.forbitCancel);  
 	            } 
 	            
 	            if(endQuaternion || endYaw != void 0){
@@ -54182,26 +54188,13 @@
 	                    //中途取消
 	                    rotWaitDone = false;
 	                    info.cancelFun && info.cancelFun();
-	                }, info.ignoreFirstFrame); 
+	                }, info.ignoreFirstFrame, info.forbitCancel); 
 	                  
 	            }      
 	         
 	            
 	            
-	           /*  transitions.start(lerp.vector(this.position, endPosition, (pos, progress)=>{
-					let t = progress 
-	 
-	                if(endQuaternion){  
-	                    let quaternion = (new THREE.Quaternion()).copy(startQuaternion) 
-	                    lerp.quaternion(quaternion, endQuaternion)(progress),
-	                    this.rotation = new THREE.Euler().setFromQuaternion(quaternion)
-	                }
-	                this.restrictPos()
-	                //console.log('setView flying')             
-	 
-	                info.onUpdate && info.onUpdate(t)//add
-	            }), info.duration, done, 0, info.Easing ? easing[info.Easing] : easing.easeInOutSine  ,null, this.LookTransition, info.cancelFun); //easeInOutQuad
-	            */
+	           
 
 	        } 
 
@@ -54322,17 +54315,17 @@
 	        };
 	        
 	        let callback = info.callback;
-	        info.callback = ()=>{ 
+	        info.callback = info.cancelFun = ()=>{ 
 	            viewport.camera = info.endCamera;  
 	            viewer.scene.measurements.forEach((e)=>{ 
 	                Potree.Utils.updateVisible(e, 'tranCamera', true); 
 	            }); 
 	            viewer.dispatchEvent({type:'camera_changed', viewport:viewer.mainViewport, changeInfo:{}});//update sprite
-	       
+	            
 	            
 	            callback && callback();
 	        }; 
-	        
+	        info.forbitCancel = true; 
 	        
 	        viewer.scene.measurements.forEach((e)=>{
 	            Potree.Utils.updateVisible(e, 'tranCamera', false); //含sprite且实时更新size的都要隐藏
@@ -71278,6 +71271,7 @@ void main()
 			this.textColor = options.textColor || {r: 0, g: 0, b: 0, a: 1.0};
 	        this.borderColor = options.borderColor || { r: 0, g: 0, b: 0, a: 0.0 };
 			this.borderRadius = options.borderRadius || 6;
+	        this.margin = options.margin;
 	        if(options.text != void 0)this.setText(options.text);
 	        this.name = options.name; 
 	         
@@ -71333,21 +71327,29 @@ void main()
 	        //context["font-weight"] = 100; //语法与 CSS font 属性相同。
 			// get size data (height depends only on font size)
 	        
-	        //this.text = '啊啊啊啊啊啊fag'
+	        //this.text = 'f 啊啊啊 jg'
 	        
 			let metrics = context.measureText(this.text );
 			let textWidth = metrics.width;
-			let margin = new Vector2(this.fontsize, Math.max(  this.fontsize*0.4, 10)  );
+			let margin = this.margin || new Vector2(this.fontsize, Math.max(  this.fontsize*0.4, 10)  );
 			let spriteWidth = 2 * margin.x + textWidth + 2 * this.rectBorderThick;
 			let spriteHeight = 2 * margin.y + this.fontsize + 2 * this.rectBorderThick; 
 			context.canvas.width = spriteWidth;
 			context.canvas.height = spriteHeight;
 			context.font = this.fontWeight + ' ' + this.fontsize + 'px ' + this.fontface; 
 
+	 
+	        let expand = Math.max(1, Math.pow(this.fontsize / 16, 1.3)); // 针对英文大部分在baseLine之上所以降低一点,或者可以识别当不包含jgqp时才加这个值  
 	         
-	        let diff = 2;//针对英文大部分在baseLine之上所以降低一点(metrics.fontBoundingBoxAscent - metrics.fontBoundingBoxDescent) / 2
-
-	        context.textBaseline = "middle";
+	        //canvas原点在左上角
+	        context.textBaseline = 'alphabetic'; //  "middle"  //设置文字基线。当起点y设置为0时,只有该线以下的部分被绘制出来。middle时文字显示一半(但是对该字体所有字的一半,有的字是不一定显示一半的,尤其汉字),alphabetic时是英文字母的那条基线。
+	        
+	        let actualHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent; // 当前文本字符串在这个字体下用的实际高度
+	        
+	        //文字y向距离从textBaseline向上算
+	        let y = metrics.actualBoundingBoxAscent + margin.y + expand; 
+	        //console.log(this.text, 'y' , y, 'actualBoundingBoxAscent', metrics.actualBoundingBoxAscent,'expand',expand )
+	        
 	        
 	        // border color
 	        context.strokeStyle = 'rgba(' + this.borderColor.r + ',' + this.borderColor.g + ',' +
@@ -71365,12 +71367,12 @@ void main()
 	            context.strokeStyle = 'rgba(' + this.textBorderColor.r + ',' + this.textBorderColor.g + ',' +
 	                this.textBorderColor.b + ',' + this.textBorderColor.a + ')';
 	            context.lineWidth = this.textBorderThick;
-	            context.strokeText(this.text , this.rectBorderThick + margin.x,spriteHeight/2  + diff );
+	            context.strokeText(this.text , this.rectBorderThick + margin.x, y /* spriteHeight/2  + expand */ );
 	        }
 	        
 			context.fillStyle = 'rgba(' + this.textColor.r + ',' + this.textColor.g + ',' +
 				this.textColor.b + ',' + this.textColor.a + ')';
-			context.fillText(this.text , this.rectBorderThick + margin.x, spriteHeight/2  + diff );//x,y
+			context.fillText(this.text , this.rectBorderThick + margin.x, y  /* spriteHeight/2  + expand  */);//x,y
 
 			let texture = new Texture(canvas);
 			texture.minFilter = LinearFilter;
@@ -75273,7 +75275,7 @@ void main()
 	        color:'#00C8AF',
 	        default:{
 	            color:"#2F8FFF",//"#00c7b2",
-	            opacity:0.7
+	            opacity:0.8
 	        },
 	        highlight:{
 	            color:"#2F8FFF",//"#00c7b2",
@@ -75286,7 +75288,7 @@ void main()
 	        ,   
 	        backColor:'#333333',
 	         
-	        lineWidth: 4,
+	        lineWidth: 3,
 	       
 	        textColor: "#FFFFFF"
 	        
@@ -81734,18 +81736,21 @@ void main()
 	const markerSizeInfo = {
 	    minSize : 25 ,  maxSize : 65,   nearBound : 0.2, farBound : 4,
 	};
-	const labelSizeInfo = {width2d:200};
+	const labelSizeInfo = {width2d:190};
 	const mainLabelProp = { 
 	    backgroundColor: {r: defaultColor$1.r*255, g: defaultColor$1.g*255, b: defaultColor$1.b*255, a:config$1.measure.default.opacity},
 	    textColor: {r: textColor.r*255, g: textColor.g*255, b: textColor.b*255, a: 1.0},
-	    fontsize:16, 
-	    useDepth : true ,
+	    fontsize: 14, 
+	    useDepth : true , borderRadius : 12, margin:{x:20,y:4},
 	    renderOrder : 5, pickOrder:5, 
 	};
+	  
+	 
+
 	const subLabelProp = { 
-	    backgroundColor: {r: 255, g: 255, b: 255, a:1},
-	    textColor: {r: 0, g: 0, b:0, a: 1.0},
-	    fontsize:14, 
+	    backgroundColor: {r: 255, g: 255, b: 255, a:config$1.measure.default.opacity},
+	    textColor: {r: 0.3, g: 0.3, b:0.3, a: 1.0},
+	    fontsize:12, borderRadius : 12,  margin:{x:20,y:4},
 	    renderOrder : 4, pickOrder:4,
 	};
 
@@ -81929,9 +81934,9 @@ void main()
 	            let center = new Vector3().addVectors(p1,p2).multiplyScalar(0.5);  
 	            label.setPos(center); 
 	            distance = distance == void 0 ? p1.distanceTo(p2) : distance; 
-	            var text = viewer.unitConvert.convert(distance, 'distance', Potree.settings.precision, this.unitSystem, 0.1 , true);//distance要传0.1 这个factor
+	            var text = this.labelText || viewer.unitConvert.convert(distance, 'distance', Potree.settings.precision, this.unitSystem, 0.1 , true);//distance要传0.1 这个factor
 	            label.setText(text);
-	            return distance
+	          
 	        };
 	         
 	         
@@ -81947,10 +81952,10 @@ void main()
 	            let previousPoint = this.points[previousIndex];
 
 	          
-	            if(this.showDistances){ // edge labels
+	            if(this.showDistances || this.labelText){ // edge labels
 	                let edgeLabel = this.edgeLabels[index];
-	                let distance = point.distanceTo(nextPoint);
-	                edgeLabel.shouldVisi = (index < lastIndex || this.isRect || this.closed && !this.isNew ) && distance>0; 
+	                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);  
 	                if(edgeLabel.visible){
 	                    setEdgeLabel(edgeLabel,point,nextPoint,distance);
@@ -82173,8 +82178,8 @@ void main()
 	            //this.closed || this.edgeLabels.forEach(e=>e.elem.addClass('highLight')  )
 	            this.setEdgesDisplay(true, hoverObject=="screenshot");
 	            
-	            this.areaLabel && setLabelHightState(this.areaLabel, true); 
-	            this.closed || this.edgeLabels.forEach(e=>setLabelHightState(e, true)  );
+	            this.areaLabel && this.setLabelHightState(this.areaLabel, true); 
+	            this.closed || this.edgeLabels.forEach(e=>this.setLabelHightState(e, true)  );
 	              
 	        }else {
 	            this.markers.forEach(e=>this.setMarkerSelected(e, 'unhover', 'selectAll' ));
@@ -82183,8 +82188,8 @@ void main()
 	            this.setEdgesDisplay(false, hoverObject=="screenshot");
 	            //this.areaLabel && this.areaLabel.elem.removeClass('highLight')
 	            //this.closed || this.edgeLabels.forEach(e=>e.elem.removeClass('highLight')  )
-	            this.areaLabel && setLabelHightState(this.areaLabel, false); 
-	            this.closed || this.edgeLabels.forEach(e=>setLabelHightState(e, false)  );
+	            this.areaLabel && this.setLabelHightState(this.areaLabel, false); 
+	            this.closed || this.edgeLabels.forEach(e=>this.setLabelHightState(e, false)  );
 	            
 	        }
 	           
@@ -82199,6 +82204,32 @@ void main()
 	        viewer.mapViewer && viewer.mapViewer.dispatchEvent('content_changed');
 	    }
 	    
+	    
+	    
+	    
+	    setLabelHightState(label, state){ 
+	        if(state){  
+	            label.backgroundColor = {r:255, g:255, b:255, a:config$1.measure.highlight.opacity},
+	            //label.backgroundColor.a = config.measure.highlight.opacity
+	            label.sprite.material.useDepth = false;
+	            label.textColor = {r: this.color.r*255, g:  this.color.g*255, b:  this.color.b*255, a: 1}; 
+	        }else {
+	            label.backgroundColor = {r: this.color.r*255, g:  this.color.g*255, b:  this.color.b*255, a:config$1.measure.default.opacity};
+	            //label.backgroundColor.a = config.measure.default.opacity
+	            label.sprite.material.useDepth = true;
+	            label.textColor = {r: 255, g: 255, b: 255, a: 1}; 
+	            
+	        }  
+	        label.updateTexture();  
+	    }
+
+	    
+	    
+	    
+	    
+	    
+	    
+	    
 		removeMarker(index ){  
 	        super.removeMarker(index);
 	        
@@ -82448,7 +82479,7 @@ void main()
 	                transparent: !0,
 	                opacity: 1,
 	                map: texLoader$2.load(Potree.resourcePath+'/textures/pic_point32.png' ), 
-	                useDepth:true ,
+	                //useDepth:true ,
 	                replaceColor:this.color,
 	                beReplacedRed: 0.184,   //0.18431372
 	                mapColorReplace:true
@@ -82469,7 +82500,7 @@ void main()
 	                dashSize: 0.1, 
 	                gapSize: 0.02,
 	                dashed: true,
-	                lineWidth: config$1.measure.lineWidth  
+	                lineWidth: 2 
 	            })      
 	        };
 	    
@@ -82593,7 +82624,12 @@ void main()
 	            prop.maxMarkers = 2,
 	            prop.minMarkers = 2,
 	            prop.faceDirection = "horizontal";  
-	                   
+	        }else if(prop.measureType == "Hor LINE with Text"){ //add 
+	            prop.showEdges = true,
+	            prop.maxMarkers = 2,
+	            prop.minMarkers = 2,
+	            prop.faceDirection = "horizontal";  
+	                 
 	        }else if(prop.measureType == 'Area'){
 	            prop.showDistances = true,  
 	            prop.atPlane = true,                
@@ -82777,37 +82813,6 @@ void main()
 
 
 
-	function setLabelHightState(label, state){
-	    /* if(state){ 
-	        label.backgroundColor =  {r: highlightColor.r*255, g: highlightColor.g*255, b: highlightColor.b*255, a:config.measure.highlight.opacity},
-	        label.backgroundColor.a = config.measure.highlight.opacity
-	        label.sprite.material.useDepth = false;
-	        
-	    }else{
-	        label.backgroundColor = mainLabelProp.backgroundColor
-	        label.backgroundColor.a = config.measure.default.opacity
-	        label.sprite.material.useDepth = true
-	        
-	    }  */
-	    
-	    if(state){  
-	        //label.backgroundColor =  {r: this.color[0]*255, g:  this.color[1]*255, b:  this.color[2]*255, a:config.measure.highlight.opacity},
-	        label.backgroundColor.a = config$1.measure.highlight.opacity;
-	        label.sprite.material.useDepth = false;
-	        
-	    }else {
-	        //label.backgroundColor = {r: this.color[0]*255, g:  this.color[1]*255, b:  this.color[2]*255
-	        label.backgroundColor.a = config$1.measure.default.opacity;
-	        label.sprite.material.useDepth = true;
-	        
-	    } 
-	    
-	    
-	    label.updateTexture(); 
-	    //label.sprite.material.needsUpdate = true 
-	}
-
-
 
 	function createCircleRadiusLabel$1(){
 		const circleRadiusLabel = new TextSprite$2("");
@@ -89654,7 +89659,7 @@ void main()
 	        
 	        
 	        
-	        let canUseDepthTex = (Potree.settings.displayMode == 'showPanos' || useDepthTex)
+	        let canUseDepthTex = !Potree.settings.unableUseDepTexPick && (Potree.settings.displayMode == 'showPanos' || useDepthTex)
 	            && viewer.images360.currentPano.pointcloud.hasDepthTex && viewport == viewer.mainViewport && !usePointcloud; 
 	        
 	        
@@ -89799,11 +89804,9 @@ void main()
 	        
 	            let dontIntersect =  this.drag && viewport.alignment || isFlying; /* viewer.images360.flying */ // flying 时可能卡顿
 	            //console.log('dontIntersectPointcloud',dontIntersectPointcloud)
-	              
-	            /* if(e.onlyGetIntersect )   */intersect = this.getIntersect(viewport,  e.onlyGetIntersect, e.pickWindowSize, !!dontIntersect, e.whichPointcloud); //数据集多的时候卡顿
-	            /* else  Potree.Common.intervalTool.isWaiting('getIntersect', ()=>{  
-	                 this.intersect = this.getIntersect(viewport,  e.onlyGetIntersect, e.pickWindowSize, !!dontIntersect, e.whichPointcloud) //数据集多的时候卡顿
-	            }, 156); */
+	               
+	            intersect = this.getIntersect(viewport,  e.onlyGetIntersect, e.pickWindowSize, !!dontIntersect, e.whichPointcloud || e.usePointcloud || this.drag); //深度图不准,尽量用点云
+	             
 		                 
 	            //console.log('intersectPoint', intersectPoint)
 	        } 
@@ -91535,41 +91538,34 @@ void main()
 	                
 	                //不过平板无hover事件
 	                faceMesh.addEventListener('mouseover', (e)=>{
-	                    if(navCubeViewer.changingView)return
+	                    if(viewer.mainViewport.view.isFlying())return
 	                    faceMesh.material.uniforms.faceColor.value.set(Colors.blue);
 	                    //console.log('变', name)
 	                    navCubeViewer.dispatchEvent('content_changed');
 	                });
 	                faceMesh.addEventListener('mouseleave', (e)=>{
-	                    if(navCubeViewer.changingView)return
+	                    if(viewer.mainViewport.view.isFlying())return
 	                    faceMesh.material.uniforms.faceColor.value.set(Colors.black);
 	                    //console.log('回', name)
 	                    navCubeViewer.dispatchEvent('content_changed');
 	                });
 	                
 	                faceMesh.addEventListener('click', (e)=>{  
-	                    if(navCubeViewer.switchView('ortho', directions[name] ,   ()=>{ 
-	                        faceMesh.material.uniforms.faceColor.value.set(Colors.black);
+	                    /* if(navCubeViewer.switchView('ortho', directions[name] ,   ()=>{ 
+	                        faceMesh.material.uniforms.faceColor.value.set(Colors.black)
 	                    }) ){
-	                        faceMesh.material.uniforms.faceColor.value.set(Colors.blue); 
-	                    }
-	                }); 
-	                 
-	                if(name == 'Top'){
-	                    navCubeViewer.addEventListener('enterTopView',()=>{ 
-	                        faceMesh.dispatchEvent('click');  
-	                        
-	                    }); 
-	                    navCubeViewer.addEventListener('leaveTopView',()=>{ 
-	                        if(navCubeViewer.lastView){
-	                            navCubeViewer.switchView2(navCubeViewer.lastView); 
-	                        }
-	                    });
+	                        faceMesh.material.uniforms.faceColor.value.set(Colors.blue) 
+	                    } */
 	                    
 	                    
-	                }
-	                 
+	                    if(viewer.mainViewport.view.isFlying())return
+	                    navCubeViewer.switchView('ortho', directions[name] ,   ()=>{ 
+	                        faceMesh.material.uniforms.faceColor.value.set(Colors.black);
+	                    }); 
+	                    faceMesh.material.uniforms.faceColor.value.set(Colors.blue); 
+	                }); 
 	            });
+	            
 	        };  
 	        
 	         
@@ -91692,6 +91688,24 @@ void main()
 	                });
 	                
 	            }); 
+	            
+	            
+	            //外部传消息,使进入俯视 
+	            this.addEventListener('enterTopView',()=>{  
+	                let baseLine = viewer.scene.measurements.find(e=>e.isBaseLine);  //使基准线在俯视图中水平
+	                let yaw = baseLine ? new Vector2().subVectors(baseLine.points[0], baseLine.points[1]).angle() : 0; 
+	                this.switchView('ortho', {dir: new Vector3(0,0,-1),yaw,pitch: -1.5707963267948966}); 
+	            }); 
+	            this.addEventListener('leaveTopView',()=>{ 
+	                if(this.lastView){
+	                    this.switchView2(this.lastView); 
+	                }
+	            });
+	            
+	                
+	                 
+	            
+	            
 	        });
 	        
 	      
@@ -91785,7 +91799,7 @@ void main()
 	        }
 	    } */
 	    switchView(type, {yaw, pitch, dir}={}, done){
-	        if(this.changingView)return
+	        if(viewer.mainViewport.view.isFlying())return
 	        let view = viewer.mainViewport.view;
 	        this.lastView = view.clone();
 	        if(viewer.mainViewport.camera.type == 'OrthographicCamera'){
@@ -91823,11 +91837,11 @@ void main()
 	                endPitch: pitch, endYaw: yaw , dir,  startCamera, endCamera
 	            }).promise.done(()=>{  
 	                //viewer.dispatchEvent('reachTopView')
-	                this.changingView = false;
+	                 
 	                done && done();
 	                navCubeViewer.dispatchEvent('content_changed');
 	            });
-	            this.changingView = true;
+	             
 	        }else {
 	            
 	            if(viewer.mainViewport.camera == viewer.scene.cameraO){
@@ -91853,14 +91867,14 @@ void main()
 	                view.tranCamera(viewer.mainViewport,  { position ,   
 	                    callback:()=>{ 
 	                        done && done();
-	                        this.changingView = false;
+	                         
 	                    }, startCamera:viewer.scene.cameraO, endCamera:viewer.scene.cameraP, midCamera:viewer.scene.cameraBasic
 	                }, 500);
-	                this.changingView = true;
+	                 
 	                
 	            } 
 	        }
-	        return this.changingView
+	         
 	    } 
 	    
 	    
@@ -91868,10 +91882,10 @@ void main()
 	    
 	    
 	    switchView2(viewInfo){ //直接输入view改变
-	        if(this.changingView)return
+	        
 	        let view = viewer.mainViewport.view;
 	        let startCamera, endCamera; 
-	        this.changingView = true;
+	     
 	    
 	        if(viewInfo.isOrtho){
 	            if(viewer.mainViewport.camera != viewer.scene.cameraO){ 
@@ -91883,7 +91897,7 @@ void main()
 	                view.moveOrthoCamera(viewer.mainViewport,  {endPosition:viewInfo.position,
 	                    endPitch: viewInfo.pitch, endYaw: viewInfo.yaw ,  zoom: viewInfo.zoom, 
 	                    callback:()=>{ 
-	                        this.changingView = false;
+	                        
 	                    }, 
 	                }, 500);
 	            }
@@ -91897,7 +91911,7 @@ void main()
 	                    endPitch: viewInfo.pitch, endYaw: viewInfo.yaw ,   
 	                    startCamera,  endCamera,            
 	                    callback:()=>{ 
-	                        this.changingView = false;
+	                       
 	                    }, 
 	                }, 500);
 	            }
@@ -91910,7 +91924,7 @@ void main()
 	                endPitch: viewInfo.pitch, endYaw: viewInfo.yaw ,   
 	                startCamera,   endCamera,   midCamera:viewer.scene.cameraBasic ,            
 	                callback:()=>{ 
-	                    this.changingView = false;
+	                   
 	                }, 
 	            }, 500);
 	        } 

File diff suppressed because it is too large
+ 1 - 1
public/static/lib/potree/potree.js.map


+ 37 - 17
src/sdk/laser/core/enter.js

@@ -161,7 +161,17 @@ var enter = ({
     };
     let getMeasureType = function (type, unit) {
         switch (type) {
-        case "LINE":
+
+
+        case 'BASE_LINE':
+            info = {
+                measureType: "Hor LINE with Text", //带有文字label的线
+                labelText : '基准线',
+                isBaseLine : true,      //暂时只有基准线是这种measureType
+            };
+            break;
+
+        case "LINE": 
             info = {
                 measureType: "Distance"
             };
@@ -405,6 +415,7 @@ var enter = ({
                         pos2d.clientY = pos2d.y;
                         pos2d.onlyGetIntersect = true;
                         pos2d.whichPointcloud = !Potree.settings.depTexLocBindDataset;
+                        pos2d.usePointcloud = true // 深度图不准
                         intersect = Handler.onMouseMove(pos2d);
                     }
                 } else {
@@ -421,7 +432,7 @@ var enter = ({
                         }); */
                 } else
                     return null;
-                //console.log(position, datasetId, dataset_location)
+                //console.log('getPointByScreen',position )
                 return {
                     position,
                     /* datasetId,
@@ -489,12 +500,12 @@ var enter = ({
              * 开始测量
              */
             startMeasure(type, unit, color) {
-                const bus = mitt();
+                const bus = mitt(); 
                 let info = getMeasureType(type, unit);
                 //info.bus = bus
-                info.color = color
-                let measure = viewer.measuringTool.startInsertion(
-                        info,
+                info.color = color 
+                
+                let measure = viewer.measuringTool.startInsertion( info,
                         () => {
                         //done:
                         bus.emit("end", ret); //完成
@@ -503,11 +514,14 @@ var enter = ({
                         //cancel
                         bus.emit("quit", ret); //删除
                     });
+                 
                 Potree.Log("startMeasure: " + measure.id, {
                     font: {
                         color: "#00c7b2"
                     },
                 });
+
+
                 viewer.setPointStandardMat(true);
                 const ret = {
                     bus,
@@ -543,6 +557,13 @@ var enter = ({
                 points_datasets,
                 sid, color) {
                 const bus = mitt();
+                
+                if(!viewer.scene.measurements.find(e=>e.isBaseLine)){
+                    type = 'BASE_LINE'
+                }
+                
+                
+                
                 let info = getMeasureType(type, unit);
                 info.points = points;
                 //info.datasetId = datasetId;
@@ -573,6 +594,7 @@ var enter = ({
 
             // 开启放大镜
             openMagnifier() {
+                console.error('开启放大镜')
                 viewer.magnifier.dispatchEvent({
                     type: "setEnable",
                     value: true
@@ -580,6 +602,7 @@ var enter = ({
             },
             // 关闭放大镜
             closeMagnifier() {
+                console.error('关闭放大镜')
                 viewer.magnifier.dispatchEvent({
                     type: "setEnable",
                     value: false
@@ -759,33 +782,30 @@ var enter = ({
             },
             
             
-            /* 
-            添加一个方法  单击场景某个位置 返回当前三维坐标,   调用时场景不能漫游与选择直到获取完成
-            sdk.scene.trackScenePos()
-            返回
-            {
-              promise: Promise<Pos3D>,   //获取的promise, 获取到了返回三维坐标,没获取到返回null
-              quit: function()  //取消获取 
-            }志彬5月15日 14:46 */
+           
   
-            trackScenePos(){
+            trackScenePos(){// 单击场景某个位置 返回当前三维坐标,   调用时场景不能漫游与选择直到获取完成
                 let deferred = $.Deferred();
                 let quit = ()=>{ //取消获取 
                     viewer.removeEventListener('global_click',gotIntersect)
                     Potree.settings.unableNavigate = false 
-                    viewer.controls.setEnable(true) 
+                    Potree.settings.unableUseDepTexPick = false
+                    viewer.controls.setEnable(true)  
                 }
                 
                 let gotIntersect = (e)=>{
                     if(e.intersect && e.intersect.location){ 
                         console.log('quit', e.intersect.location)
                         quit()
-                        deferred.resolve(e.intersect.location)
+                        deferred.resolve(e.intersect.location) 
                     } 
                 }
                 
                 viewer.addEventListener('global_click',gotIntersect) 
                 Potree.settings.unableNavigate = true
+                Potree.settings.unableUseDepTexPick = true 
+
+
                 viewer.controls.setEnable(false)
                 
                 return {