xzw 1 year ago
parent
commit
370d5398ab

+ 8 - 4
src/custom/objects/tool/MeasuringTool.js

@@ -351,7 +351,7 @@ export class MeasuringTool extends THREE.EventDispatcher{
         measure.editStateChange(true)
         
         let timer;
-
+        
  
 
 		let endDragFun = (e) => {  
@@ -414,7 +414,7 @@ export class MeasuringTool extends THREE.EventDispatcher{
             }
             
             
-            
+            let lastMarker = measure.markers[measure.markers.length-1]
             
             if (/* !e.finish&& */ measure.markers.length > args.minMarkers) {
                 measure.removeMarker(measure.points.length - 1); 
@@ -422,8 +422,12 @@ export class MeasuringTool extends THREE.EventDispatcher{
                 measure.markers[0].removeEventListener('mouseleave', mouseleave);
                 measure.markers[0].removeEventListener('click'/* 'mousedown' */,Exit) 
                 
-                if(e.byClickMarker && measure.markers.length > args.minMarkers){//通过点击第一个marker而结束的话,会多一个marker
-                    measure.removeMarker(measure.points.length - 1); 
+                if(e.byClickMarker && measure.markers.length > args.minMarkers ){//通过点击第一个marker而结束的话,会多一个marker。但点击marker后可能会因为和它坐标一致而没有添加成功,就不删,根据添加的时间来判断。
+                    let delta = Date.now() - lastMarker.createTime 
+                    //console.log('delta',delta)
+                    if(delta < 10){//刚生成的,说明点击后新增了一个marker
+                        measure.removeMarker(measure.points.length - 1); 
+                    }
                 }
             }
             measure.isNew = false

+ 1 - 1
src/custom/objects/tool/ctrlPolygon.js

@@ -112,7 +112,7 @@ export class ctrlPolygon extends THREE.Object3D {
             this.updateMarker(o.marker, o.point)
             o.marker.addEventListener('drag', this.dragMarker.bind(this));
             o.marker.addEventListener('drop', this.dropMarker.bind(this));
-            
+            o.marker.createTime = Date.now()
             
             let addHoverEvent = (e)=>{
                 let mouseover = (e) => { 

+ 15 - 4
src/custom/start.js

@@ -114,10 +114,21 @@ export function start(dom, mapDom, number ){ //t-Zvd3w0m
                     
                     let pano = viewer.images360.findNearestPano(center)
                      
-                    pano && viewer.images360.flyToPano({
-                        pano,  duration:0,
-                        target : viewer.images360.bound.center.setZ(pano.position.z)    //平视中心区域(但也不能保证这个方向一定能看到点云密集区,如果在边缘的话)  
-                    }) 
+                    if(pano){
+                        viewer.images360.flyToPano({
+                            pano,  duration:0,
+                            target : viewer.images360.bound.center.setZ(pano.position.z)    //平视中心区域(但也不能保证这个方向一定能看到点云密集区,如果在边缘的话)  
+                        }) 
+                    }else{//SG-t-DXmdymgZ2sX 无漫游点
+                        //从bounding的外部看向中心 
+                        let bound = viewer.bound.boundingBox.clone()  
+                        let hopeSize = new THREE.Vector3(30,30,20).min(viewer.bound.boundSize)//希望看到的范围 
+                        bound.expandByVector(new THREE.Vector3().subVectors(hopeSize,viewer.bound.boundSize).multiplyScalar(0.5))
+                        bound.min.z = viewer.bound.boundingBox.min.z+0.5//z集中于地面
+                        bound.max.z = bound.min.z+hopeSize.z 
+                        viewer.focusOnObject({boundingBox:bound},'boundingBox',0,{dontChangeCamDir:true})
+                        
+                    }
                 } 
             }