Переглянути джерело

Merge branch 'master' of http://192.168.0.115:3000/4dkankan/laser_v1

jinx 4 роки тому
батько
коміт
fdc4abe7ce

+ 1 - 0
IndoorViewerAPI.js

@@ -191627,6 +191627,7 @@ and limitations under the License.
         return r(e, t),
         e.prototype.getTileUrl = function(t, e, n) {
             var i = (this.tiledMapEntity.filePath + "/" + this.tiledMapEntity.fileName).replace(/\$DEPTH/g, t.toString(10)).replace(/\$X/g, e.toString(10)).replace(/\$Y/g, n.toString(10));
+            i+='&t='+new Date().getTime();
             return this.RestService.addAuthorizationQueryParameter(i)
         }
         ,

+ 1 - 0
index.html

@@ -23,6 +23,7 @@
     const ossPrefix = 'https://laser.4dkankan.com/data/';
     const ossPrefixDep = 'https://laser.4dkankan.com/public/';
     const sceneNum = '@replace';
+    //const sceneNum = 't-gcKxRmU';
 </script>
 <script src="IndoorViewerAPI.js"></script>
 <script type="text/javascript" src="js/OBJExporter.js"></script>

+ 8 - 0
locat/addDataSet.html

@@ -220,6 +220,7 @@
     <script src="./js/vue.js"></script>
     <script src="./js/axios.min.js"></script>
     <script src="./js/proj4.js"></script>
+    <script src="./js/three.js"></script>
     <script src="./components/image-transform/index.js"></script>
     <script type="text/javascript">
         //输入经纬度就可以定位
@@ -229,6 +230,8 @@
         //坐标转换定义  部分 定义一个 cgc_2000的38度带投影坐标系
         proj4.defs("EPSG:99999",
             "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80  +units=m +no_defs");
+        proj4.defs("EPSG:99999", "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80  +units=m +no_defs");
+        proj4.defs("EPSG:4490", "+proj=longlat +ellps=GRS80 +no_defs");
         var projection = new ol.proj.Projection({
             code: "EPSG:99999",
             extent: [334238.8538694997, 425861.702215328, 599418.034383447, 5936877.5664797],
@@ -324,10 +327,15 @@
             },
             methods: {
                 getImageTransform() {
+
                     // 地图数据上传  如果用户没有选择数据直接返回true  如果有数据要上传返回promise
                     this.$refs.imageTranform.uploadData()
                         .then(res => {
                             alert('成功')
+                            this.showImageTranform = false
+                            this.$nextTick(() => {
+                                this.showImageTranform = true
+                            })
                         })
                         .catch(() => {
                             alert('失败')

+ 34 - 6
locat/components/image-transform/index.js

@@ -13,12 +13,33 @@
             },
             screenToLatlan({ x, y }) {
                 const real = map.getCoordinateFromPixel([x, y])
-                const latlan = ol.proj.transform(real, 'EPSG:4326', 'EPSG:99999')
+                // const latlan = ol.proj.transform(real, 'EPSG:3857', 'EPSG:99999', 'EPSG:99999')
+                var latlan =  proj4("EPSG:3857","EPSG:4490",real);
                 return latlan
             }
         }
     }
 
+    function toArray(quaternion){
+        var rot90 =  (new THREE.Quaternion).setFromAxisAngle(new THREE.Vector3(0,0,1), THREE.Math.degToRad(-90)) //add 转入时旋转90度
+       , rot90Invert = rot90.clone().inverse()//add 转出时旋回90度
+        var t1 = quaternion.clone().multiply(rot90Invert); 
+        var e = t1.toArray();
+        return [e[3], e[0], e[1], e[2]] 
+    }
+    
+    function getQuaternion(angle){//angle:0-360 角度
+        var quaternion = new THREE.Quaternion().setFromEuler(new THREE.Euler(0,0,THREE.Math.degToRad(-angle)));
+        return toArray(quaternion)
+        
+    }
+    
+    function getSize(imgWidth, scale){//imgWidth:图片宽度, scale缩放值(x==y)
+        var level = imgWidth / 1024;  //以1024为基准
+        return 95.54628610610962 * level * scale;
+    } 
+   
+
     const loadImageLayer = (map, args) => {
         const {
             lon,
@@ -436,13 +457,15 @@
         <div class="ctrls" :style="boxStyle" @mousedown.stop.prevent="startMove($event, 'move')"></div>
         <div class="cctrls" v-if="box.tl">
           <span class="tl" :style="{left: box.tl.x + 'px', top: box.tl.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'tl')"></span>
-          <span class="tc" :style="{left: box.tc.x + 'px', top: box.tc.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'tc')"></span>
           <span class="tr" :style="{left: box.tr.x + 'px', top: box.tr.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'tr')"></span>
-          <span class="rc" :style="{left: box.rc.x + 'px', top: box.rc.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'rc')"></span>
-          <span class="lc" :style="{left: box.lc.x + 'px', top: box.lc.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'lc')"></span>
+          <!-- 
+            <span class="tc" :style="{left: box.tc.x + 'px', top: box.tc.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'tc')"></span>
+            <span class="rc" :style="{left: box.rc.x + 'px', top: box.rc.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'rc')"></span>
+            <span class="bc" :style="{left: box.bc.x + 'px', top: box.bc.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'bc')"></span>
+            <span class="lc" :style="{left: box.lc.x + 'px', top: box.lc.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'lc')"></span>
+        -->
           <span class="br" :style="{left: box.br.x + 'px', top: box.br.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'br')"></span>
           <span class="bl" :style="{left: box.bl.x + 'px', top: box.bl.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'bl')"></span>
-          <span class="bc" :style="{left: box.bc.x + 'px', top: box.bc.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'scale', 'bc')"></span>
           <span class="cc" :style="{left: box.cc.x + 'px', top: box.cc.y + 'px'}" @mousedown.prevent.stop="startMove($event, 'rotate')"></span>
         </div>
         <div class="box-info" v-if="boxPos.tl">
@@ -799,7 +822,7 @@
                 promises.push(
                     request.updateCoord({
                         ...this.boxPos,
-                        transfroms: this.transfroms
+                        transfroms: this.transfroms,
                     })
                 )
                 return Promise.all(promises)
@@ -853,6 +876,11 @@
                     let imatrix = ctx.getTransform()
                     ret.imatrix = {}
                     key.forEach(k => ret.imatrix[k] = imatrix[k])
+                    
+                    // 缩放,坐标,角度
+                    ret.map_size_m = getSize(this.imgCanvas.position[2], scale.x), 
+                    ret.location = ret.cc,
+                    ret.orientation = getQuaternion(rotate)
                     return ret
                 } else {
                     return {}

Різницю між файлами не показано, бо вона завелика
+ 6 - 0
locat/js/three.js