From 799a69b8b0a03e44ed124e63509b2650599057b9 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 07 Dec 2023 18:34:38 +0800
Subject: [PATCH] 实时定位,位置处理; 不同校区,显示位置做处理; 切换校区显示内容做处理;

---
 src/components/mobilemap/index.vue           |   40 +++---
 src/pcLayout/index.vue                       |    2 
 src/store/modules/popupParams.js             |    1 
 src/components/mobileCortrolButtom/index.vue |   77 ++++++------
 src/components/map/index.vue                 |   48 ++++----
 src/store/getters.js                         |    1 
 src/store/modules/mobilePosition.js          |  142 ++++++++++++++++-------
 7 files changed, 186 insertions(+), 125 deletions(-)

diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 262de91..a5b1f09 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -47,38 +47,35 @@
 let campusLayers = [
     {
         key: 1,
-        tileUrl: "https://fkxt.jxstnu.edu.cn/changjing/arcgis/rest/services/ksd1206/MapServer/tile/{z}/{y}/{x}",
-        center: [10800, -4900],
-        resolution: 4.233341800016934,
-        origin: [-5123200.0, 10002100],
-        projection: 'EPSG:4548',
+        tileUrl: "https://fkxt.jxstnu.edu.cn/changjing/arcgis/rest/services/ksdhjzxq/MapServer/tile/{z}/{y}/{x}",
+        center: [112.605918275550715, -0.0457081387615907618595],
+        resolution: 0.00003807137609328448,
+        origin: [-400.0, 399.9999999999998],
         resolutions: [
-            16.933367200067735, 8.466683600033868, 4.233341800016934,
-            2.116670900008467, 1.0583354500042335, 0.5291677250021167,
-            0.26458386250105836
+            0.00015228550437313792, 0.00007614275218656896, 0.00003807137609328448,
+            0.00001903568804664224, 0.00000951784402332112, 0.00000475892201166056
         ],
         fullExtent: [
-            -0.5, -11468.5, 18506.5,
-            0.5,
+            112.51303616638316, -0.103420786429659, 112.67880038471827,
+            0.000004508906477476281
         ],
         polygonUrl: 'https://fkxt.jxstnu.edu.cn/changjing/lkarcgisapp'
     },
 
     {
         key: 2,
-        tileUrl: "https://dev.jxpskj.com:8023/arcgis156/rest/services/cc/MapServer/tile/{z}/{y}/{x}",
-        center: [115.79624983, 28.6416099],
-        resolution: 0.000007138383017490841,
-        origin: [-400.0, 400.0],
-        projection: '4548',
+        tileUrl: "https://fkxt.jxstnu.edu.cn/changjing/arcgis/rest/services/ksdflxq/MapServer/tile/{z}/{y}/{x}",
+        center: [112.6202242373625, -0.0811745423945008147645],
+        resolution: 0.00007614275218656896,
+        origin: [-400.0, 399.9999999999998],
         resolutions: [
-            0.000014276766034981682, 0.000007138383017490841, 0.00000475892201166056,
-            0.00000237946100583028,
+            0.00015228550437313792, 0.00007614275218656896, 0.00003807137609328448,
+            0.00001903568804664224, 0.00000951784402332112, 0.00000475892201166056
         ],
         fullExtent: [
-            115.76861782444642, 28.63584422760626, 115.82432471553928, 28.663308794331794,
+            112.51302551881798, -0.16235359398493399, 112.72742295590702, 0.000004509195932360471
         ],
-        polygonUrl: ''
+        polygonUrl: 'https://fkxt.jxstnu.edu.cn/changjing/lkarcgisapp'
     }
 ]
 
@@ -168,9 +165,12 @@
                     this.$store.commit('SET_MONITORPOPUP', false)
                     this.$store.commit('SET_PANORAMAPOPUP', false)
 
+                    this.$store.dispatch('delVisitedViews', this.$route)
+
                     this.$store.commit('SET_ARCNAVBARFLAG', false)
                     this.$store.commit('SET_SEARCHPOPUPFLAG', false)
-                    this.$store.commit('SET_SEARCHPOPUPFLAG', false)
+
+                    this.$router.push('/pcLayout/default')
 
                     this.$refs.leftNav.initialize(newData)
 
@@ -392,16 +392,16 @@
             if (campusLoadLayer) this.map2D.removeLayer(campusLoadLayer)
             let curCampus = campusLayers.find(item => item.key == campusKey)
 
-            const tileGrid = new TilegridTileGrid({
+            let tileGrid = new TilegridTileGrid({
                 tileSize: 256,
                 origin: curCampus.origin,
                 extent: curCampus.fullExtent,
                 resolutions: curCampus.resolutions,
             })
             // 瓦片数据源
-            const tileArcGISXYZ = new XYZ({
+            let tileArcGISXYZ = new XYZ({
                 tileGrid: tileGrid,
-                // projection: curCampus.projection,
+                projection: "EPSG:4326",
                 url: curCampus.tileUrl,
             })
 
@@ -431,7 +431,7 @@
                 // 初始化中心点坐标
                 center: curCampus.center,
                 resolution: curCampus.resolution,
-                // projection: curCampus.projection,
+                projection: "EPSG:4326",
                 extent: curCampus.fullExtent,
             }))
         }
diff --git a/src/components/mobileCortrolButtom/index.vue b/src/components/mobileCortrolButtom/index.vue
index 6a19ac7..3501810 100644
--- a/src/components/mobileCortrolButtom/index.vue
+++ b/src/components/mobileCortrolButtom/index.vue
@@ -70,6 +70,9 @@
         }
     },
     props: ['mapCenter', 'frislayertHeight'],
+
+    inject: ['mobileMapElement'],
+
     computed: {
         ...mapGetters([
             'openmobileGoTo',
@@ -86,10 +89,18 @@
     },
     methods: {
         openOurSee () {
+            let url
+
+            if (this.mobileMapElement.campusValue == 1) {
+                url = 'https://vr.jxpskj.com:1443/JXKESFDX_HJZXQ/'
+            } else {
+                url = 'https://vr.jxpskj.com:1443/JXKJSFDX_FLXQ/'
+            }
+
             this.$store.commit(
                 'MSET_OPENMOBILEPANORAMA',
                 // 'https://vr.jxpskj.com/JXSFKZQJ/QJ/' // sd
-                'https://vr.jxpskj.com:1443/JXKESFDX_HJZXQ/' // jg
+                url // jg
             )
         },
 
@@ -99,26 +110,27 @@
             var options = { timeout: 8000 }// 设置定位超时
 
             window.geolocation.getLocation(showPosition, showErrow, options)
-            // this.$store.commit('GET_NOWPOSITION', (res) => {
-            //     that.$store.dispatch('pcMoveView', {
-            //         jd: res[0],
-            //         wd: res[1],
-            //         viewer: global.viewer
-            //     })
+            this.$store.commit('GET_NOWPOSITION', (res) => {
+                that.$store.dispatch('pcMoveView', {
+                    jd: res[0],
+                    wd: res[1],
+                    viewer: global.viewer
+                })
 
-            //     const data = [
-            //         {
-            //             name: '我的位置',
-            //             jd: res[0],
-            //             wd: res[1]
-            //         }
-            //     ]
-            //     that.$store.dispatch('addLabelLayerIconMobelUse', {
-            //         list: data,
-            //         clear: true,
-            //         mviewer: global.viewer
-            //     })
-            // })
+                const data = [
+                    {
+                        name: '我的位置',
+                        jd: res[0],
+                        wd: res[1]
+                    }
+                ]
+
+                that.$store.dispatch('addLabelLayerIconMobelUse', {
+                    list: data,
+                    clear: true,
+                    mviewer: global.viewer
+                })
+            })
 
             function showPosition (result) {
                 const position = GCJ02ToWGS84(result.lng, result.lat)
@@ -179,24 +191,13 @@
         },
 
         zoomIns (val) {
-            // this.$store.dispatch("mapFlyTo", {
-            //   //飞入
-            //   lntLat: [115.87988885, 28.72502592, 2100],
-            //   // lntLat: [115.87186406, 28.74449337, 1200],
-            //   // lntLat: [121.50492752204283, 31.21567802276832, 2530],
-            //   heading: 0,
-            //   pitch: -45,
-            //   roll: 0,
-            //   noOpen: true,
-            // });
-            //   if (val) {
-            //     if (this.dimension != val) {
-            //       this.$store.dispatch("MSET_DIMENSIONS", val);
-            //     }
-            //     return;
-            //   }
-            this.map2D.getView().setCenter([11000, -4900])
-            this.map2D.getView().setResolution(2.116670900008467)
+            if (this.mobileMapElement.campusValue == 1) {
+                this.map2D.getView().setCenter([112.613918275550715, -0.0457081387615907618595])
+                this.map2D.getView().setResolution(0.00001903568804664224)
+            } else {
+                this.map2D.getView().setCenter([112.6202242373625, -0.0781745423945008147645])
+                this.map2D.getView().setResolution(0.00001903568804664224)
+            }
         },
 
         openActivity () {
diff --git a/src/components/mobilemap/index.vue b/src/components/mobilemap/index.vue
index 114fb4d..c7a68ec 100644
--- a/src/components/mobilemap/index.vue
+++ b/src/components/mobilemap/index.vue
@@ -81,37 +81,35 @@
 let campusLayers = [
     {
         key: 1,
-        tileUrl: "https://fkxt.jxstnu.edu.cn/changjing/arcgis/rest/services/ksd1206/MapServer/tile/{z}/{y}/{x}",
-        center: [11000, -4900],
-        resolution: 2.116670900008467,
-        origin: [-5123200.0, 10002100],
-        projection: 'EPSG:4548',
+        tileUrl: "https://fkxt.jxstnu.edu.cn/changjing/arcgis/rest/services/ksdhjzxq/MapServer/tile/{z}/{y}/{x}",
+        center: [112.613918275550715, -0.0457081387615907618595],
+        resolution: 0.00001903568804664224,
+        origin: [-400.0, 399.9999999999998],
         resolutions: [
-            16.933367200067735, 8.466683600033868, 4.233341800016934,
-            2.116670900008467, 1.0583354500042335, 0.5291677250021167,
-            0.26458386250105836
+            0.00015228550437313792, 0.00007614275218656896, 0.00003807137609328448,
+            0.00001903568804664224, 0.00000951784402332112, 0.00000475892201166056
         ],
         fullExtent: [
-            -0.5, -11468.5, 18506.5,
-            0.5,
+            112.51303616638316, -0.103420786429659, 112.67880038471827,
+            0.000004508906477476281
         ],
         polygonUrl: 'https://fkxt.jxstnu.edu.cn/changjing/lkarcgisapp'
     },
 
     {
         key: 2,
-        tileUrl: "https://dev.jxpskj.com:8023/arcgis156/rest/services/cc/MapServer/tile/{z}/{y}/{x}",
-        center: [115.79624983, 28.6416099],
-        resolution: 0.000007138383017490841,
-        origin: [-400.0, 400.0],
+        tileUrl: "https://fkxt.jxstnu.edu.cn/changjing/arcgis/rest/services/ksdflxq/MapServer/tile/{z}/{y}/{x}",
+        center: [112.6202242373625, -0.0781745423945008147645],
+        resolution: 0.00001903568804664224,
+        origin: [-400.0, 399.9999999999998],
         resolutions: [
-            0.000014276766034981682, 0.000007138383017490841, 0.00000475892201166056,
-            0.00000237946100583028,
+            0.00015228550437313792, 0.00007614275218656896, 0.00003807137609328448,
+            0.00001903568804664224, 0.00000951784402332112, 0.00000475892201166056
         ],
         fullExtent: [
-            115.76861782444642, 28.63584422760626, 115.82432471553928, 28.663308794331794,
+            112.51302551881798, -0.16235359398493399, 112.72742295590702, 0.000004509195932360471
         ],
-        polygonUrl: ''
+        polygonUrl: 'https://fkxt.jxstnu.edu.cn/changjing/lkarcgisapp'
     }
 ]
 
@@ -155,7 +153,7 @@
             },
             map2D: this.$store.state.openlayerData.openlayers.map2D,
             campusData: [],
-            campusValue: ''
+            campusValue: 1
         }
     },
 
@@ -394,6 +392,7 @@
             })
             // 瓦片数据源
             const tileArcGISXYZ = new XYZ({
+                projection: "EPSG:4326",
                 tileGrid: tileGrid,
                 url: curCampus.tileUrl,
             })
@@ -422,6 +421,7 @@
 
             this.map2D.setView(new OlView({
                 // 初始化中心点坐标
+                projection: "EPSG:4326",
                 center: curCampus.center,
                 resolution: curCampus.resolution,
                 extent: curCampus.fullExtent,
@@ -430,6 +430,8 @@
 
         setCampusValue (val) {
             this.campusValue = val
+
+            this.$store.commit('SET_CURRENTCAMPUS', val)
         },
 
         handleCommand (command) {
diff --git a/src/pcLayout/index.vue b/src/pcLayout/index.vue
index c76417f..2de3ed0 100644
--- a/src/pcLayout/index.vue
+++ b/src/pcLayout/index.vue
@@ -135,7 +135,7 @@
         return {
             publicPath: process.env.BASE_URL,
             campusData: [],
-            campusValue: ''
+            campusValue: 1
         }
     },
     created () {
diff --git a/src/store/getters.js b/src/store/getters.js
index 44b37a9..0ee2643 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -104,5 +104,6 @@
   addIconsLayerIconPopup: (state) => state.popupParams.addIconsLayerIconPopup, // 自定义标签编辑窗口
   addIconsLayerIconPosition: (state) =>
     state.popupParams.addIconsLayerIconPosition, // 自定义标签编辑窗口
+  currentCampus: (state) => state.mobilePosition.currentCampus,
 };
 export default getters;
diff --git a/src/store/modules/mobilePosition.js b/src/store/modules/mobilePosition.js
index c13d0cd..acd5552 100644
--- a/src/store/modules/mobilePosition.js
+++ b/src/store/modules/mobilePosition.js
@@ -2,60 +2,116 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2022-09-09 17:54:08
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2022-09-14 16:05:41
- * @FilePath: \smart-campus\src\store\modules\mobilePosition.js
+ * @LastEditTime: 2023-12-07 18:11:59
+ * @FilePath: \sd-jg-school-web-ksd\src\store\modules\mobilePosition.js
  * @Description:
  *
  * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved.
  */
 
+let extent = [
+  {
+    key: 1,
+    xMin: 112.51303616638316,
+    yMin: -0.103420786429659,
+    xMax: 112.67880038471827,
+    yMax: 0.000004508906477476281,
+
+    x: (x, y) => {
+      return -250.6503 + 2.0389 * x + 4.4338 * y;
+    },
+
+    x: (x, y) => {
+      return 228.1454 - 2.321 * x + 1.4165 * y;
+    },
+  },
+
+  {
+    key: 2,
+    xMin: 112.51302551881798,
+    yMin: -0.16235359398493399,
+    xMax: 112.72742295590702,
+    yMax: 0.000004509195932360471,
+
+    x: (x, y) => {
+      return -789.1274 + 6.0609 * x + 6.9479 * y;
+    },
+
+    x: (x, y) => {
+      return 298.9294 - 3.5295 * x + 3.8211 * y;
+    },
+  },
+];
+
+import { GCJ02ToWGS84 } from "@/utils/CoordTransform";
+
 const mobilePosition = {
-    state: {
-        getSPosition: null
-    },
-    mutations: {
-        GET_NOWPOSITION (state, val) {
-            var outData =
-                val ||
-                function (res) {
-                    console.log(res)
-                }
+  state: {
+    getSPosition: null,
+    currentCampus: 1,
+  },
+  mutations: {
+    GET_NOWPOSITION(state, val) {
+      var outData =
+        val ||
+        function (res) {
+          console.log(res);
+        };
 
-            console.log(state, 222)
+      let cur = extent.find((item) => item.key == state.currentCampus);
 
-            global.Geolocation.getLocation(function success (result) {
-                const position = global.DC.CoordTransform.GCJ02ToWGS84(result.lng, result.lat)
+      global.Geolocation.getLocation(
+        function success(result) {
+          let positionWgs = GCJ02ToWGS84(result.lng, result.lat);
 
-                if (position[0] > 115.78815057 && position[0] < 115.80346610 && position[1] > 28.63771847 && position[1] < 28.64981682) {
-                    outData([position[0], position[1]])
-                } else {
-                    Message({
-                        message: '您当前位置超出学校范围',
-                        type: 'warning',
-                        duration: 2000
-                    })
+          let position = {
+            lng: cur.x(positionWgs[0], positionWgs[1]),
+            lat: cur.y(positionWgs[0], positionWgs[1]),
+          };
 
-                    outData(['失败'])
-                }
-            }, function error (result) {
-                if (result.code == 1) {
-                    confirm('您拒绝了定位功能')
-                } else if (result.code == 3 || result.code == 5) {
-                    confirm('请求超时')
-                }
-            }, {
-                timeout: 8000, // 默认值为10s;
-                failTipFlag: true
-            })
+          if (
+            position.lng > cur.xMin &&
+            position.lng < cur.xMax &&
+            position.lat > cur.yMin &&
+            position.lat < cur.yMax
+          ) {
+            outData([position.lng, position.lat]);
+          } else {
+            Message({
+              message: "您当前位置超出学校范围",
+              type: "warning",
+              duration: 2000,
+            });
+
+            outData(["失败"]);
+          }
         },
-        CLOSE_NOWPOSITION (state) {
-            // if (state.getSPosition && navigator.geolocation) {
-            //   navigator.geolocation.clearWatch(state.getSPosition);
-            //   state.getSPosition = null;
-            // }
+        function error(result) {
+          if (result.code == 1) {
+            confirm("您拒绝了定位功能");
+          } else if (result.code == 3 || result.code == 5) {
+            confirm("请求超时");
+          }
+        },
+        {
+          timeout: 8000, // 默认值为10s;
+          failTipFlag: true,
         }
+      );
     },
-    actions: {}
-}
 
-export default mobilePosition
+    CLOSE_NOWPOSITION(state) {
+      // if (state.getSPosition && navigator.geolocation) {
+      //   navigator.geolocation.clearWatch(state.getSPosition);
+      //   state.getSPosition = null;
+      // }
+    },
+
+    SET_CURRENTCAMPUS(state, val) {
+      state.currentCampus = val;
+    },
+  },
+  actions: {},
+};
+
+export default mobilePosition;
diff --git a/src/store/modules/popupParams.js b/src/store/modules/popupParams.js
index e0cb917..27f7279 100644
--- a/src/store/modules/popupParams.js
+++ b/src/store/modules/popupParams.js
@@ -351,6 +351,7 @@
           }),
         })
       );
+
       window.labelLayer.getSource().addFeature(iconFeature);
     },
 

--
Gitblit v1.9.3