From 7804a3a4d61ff1d857973e974bbdf78a2e17feab Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Fri, 17 Dec 2021 15:08:36 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/school-web

---
 src/position/position.js                     |   60 ++
 src/store/modules/popupParams.js             |    4 
 public/index.html                            |   41 
 src/api/mobile/ip/index.js                   |   18 
 src/components/mobileCortrolButtom/index.vue |   96 +++
 src/components/mobilePopupOurAfter/index.vue |  135 ++++
 public/img/cc/cc.png                         |    0 
 src/components/mobileLeftNav/index.vue       |  131 ++++
 src/store/modules/mobile.js                  |   87 +++
 src/components/mobileCortrol/index.vue       |   34 
 src/components/mobileGoTo/index.vue          |   63 ++
 src/components/mobilePopupOurOnce/index.vue  |  132 ++++
 src/components/mobileWindow/index.vue        |   80 ++
 src/components/mobilemap/index.vue           |  133 ++--
 src/components/mobilePanorama/index.vue      |   45 +
 src/styles/mobile/popup.scss                 |  110 +++
 src/components/mobilePopupOur/index.vue      |  367 +++++++++++++
 src/store/getters.js                         |   18 
 src/components/mobileCortrolSearch/index.vue |    7 
 src/mobileDivForms/mobileDivForms.js         |   78 +-
 20 files changed, 1,463 insertions(+), 176 deletions(-)

diff --git a/public/img/cc/cc.png b/public/img/cc/cc.png
new file mode 100644
index 0000000..a75f741
--- /dev/null
+++ b/public/img/cc/cc.png
Binary files differ
diff --git a/public/index.html b/public/index.html
index 85d9755..2c50698 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,18 +1,27 @@
 <!DOCTYPE html>
 <html lang="">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width,initial-scale=1.0">
-    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
-    <title>智慧校园大数据三维可视化平台</title>
-    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
-  </head>
-  <body>
-    <noscript>
-      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
-    </noscript>
-    <div id="app"></div>
-    <!-- built files will be auto injected -->
-  </body>
-</html>
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width,initial-scale=1.0">
+  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+  <title>智慧校园大数据三维可视化平台</title>
+  <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
+  <!-- 高德定位 -->
+  <script type="text/javascript"
+    src="https://webapi.amap.com/maps?v=1.4.15&key=4b3e1db3211054ce5b466407cbb9d221"></script>
+  <!-- ip -->
+  <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
+</head>
+
+<body>
+  <noscript>
+    <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
+        Please enable it to continue.</strong>
+  </noscript>
+  <div id="app"></div>
+  <!-- built files will be auto injected -->
+</body>
+
+</html>
\ No newline at end of file
diff --git a/src/api/mobile/ip/index.js b/src/api/mobile/ip/index.js
new file mode 100644
index 0000000..93f5a6e
--- /dev/null
+++ b/src/api/mobile/ip/index.js
@@ -0,0 +1,18 @@
+/*
+ * @Author: Morpheus
+ * @Date: 2021-05-09 15:17:44
+ * @Last Modified by: liu
+ * @Last Modified time: 2021-12-15 16:43:48
+ */
+// 党群机构
+import request from '@/router/axios'
+
+export const getIp = (params) => {
+    return request({
+        // url: 'https://apis.map.qq.com/ws/location/v1/ip',
+        // let url = `https://apis.map.qq.com/ws/location/v1/ip?ip=${data.ip}&key=${data.key}`;
+        url: `http://192.168.31.179:9898/ws/location/v1/ip?ip=${params.ip}&key=${params.key}`,
+        method: 'get',
+        // params: params
+    })
+}
diff --git a/src/components/mobileCortrol/index.vue b/src/components/mobileCortrol/index.vue
index f3b8b9c..b3a1cbc 100644
--- a/src/components/mobileCortrol/index.vue
+++ b/src/components/mobileCortrol/index.vue
@@ -1,7 +1,8 @@
 <template>
   <div class="m-left-control">
-    <div class="m-l-inbut" @click="zoomIn('+')">+</div>
-    <div class="m-l-inbut" @click="zoomIn('-')">-</div>
+    <div class="m-l-inbut zoom-in" @click="zoomIn">
+      <i class="el-icon-refresh"></i>
+    </div>
   </div>
 </template>
 
@@ -9,12 +10,31 @@
 import { mapGetters } from "vuex";
 export default {
   name: "mobileCortrol",
+  data() {
+    return {
+      DC: "",
+    };
+  },
   computed: {
     ...mapGetters(["mviewer"]),
   },
+  created() {
+    this.DC = global.DC;
+  },
   methods: {
     zoomIn(val) {
-      console.log(val);
+      let that = this;
+      // console.log(val);
+      // 121.49592752204283 31.23567802276832
+      this.mviewer.zoomToPosition(
+        new that.DC.Position(
+          121.49592752204283,
+          31.23567802276832 - 0.012,
+          2530,
+          0,
+          -45
+        )
+      );
       // let camera = this.mviewer.camera;
       // // console.log(camera.moveStart());
       // // this.mviewer.getImageryLayerInfo().then((res) => {
@@ -65,11 +85,11 @@
 .m-left-control {
   position: fixed;
   left: 20px;
-  top: 20px;
-  z-index: 200;
+  top: 87px;
+  z-index: 201 !important;
   .m-l-inbut {
-    width: 32px;
-    height: 32px;
+    width: 35px;
+    height: 35px;
     background-color: #c9302c;
     display: flex;
     align-items: center;
diff --git a/src/components/mobileCortrolButtom/index.vue b/src/components/mobileCortrolButtom/index.vue
index ea17825..27b63b7 100644
--- a/src/components/mobileCortrolButtom/index.vue
+++ b/src/components/mobileCortrolButtom/index.vue
@@ -1,30 +1,95 @@
 <template>
   <div class="m-left-mobileCortrolButtom">
     <div class="m-l-inbut"><i class="el-icon-s-help"></i></div>
-    <div class="m-l-inbut"><i class="el-icon-s-flag"></i></div>
-    <div class="m-l-inbut"><i class="el-icon-menu"></i></div>
-    <div class="m-l-inbut"><i class="el-icon-location"></i></div>
+    <div class="m-l-inbut">
+      <!-- <i class="el-icon-s-flag"></i> -->
+      <el-dropdown trigger="click" @command="handleCommand">
+        <span class="el-dropdown-link icons">
+          <i class="el-icon-s-flag icon"></i>
+        </span>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item
+            v-for="(item, index) in flagList"
+            :key="index"
+            :command="item"
+            >{{ item.name }}</el-dropdown-item
+          >
+        </el-dropdown-menu>
+      </el-dropdown>
+    </div>
+    <div class="m-l-inbut" @click="openBigPopupAfter">
+      <i class="el-icon-menu"></i>
+    </div>
+    <div class="m-l-inbut" @click="goOn"><i class="el-icon-location"></i></div>
   </div>
 </template>
 
 <script>
+import { mapGetters } from "vuex";
+import { getIp, getUsers } from "@/api/mobile/ip/index";
 export default {
   name: "mobileCortrolButtom",
-  computed: {},
   data() {
     return {
-      viewer: null,
-      DC: null,
+      DC: "",
+      flagList: [
+        {
+          name: "西东大街",
+          position: [121.49500690245499, 31.23791479409691],
+        },
+        {
+          name: "长江路",
+          position: [121.52498934134815, 31.227021231622302],
+        },
+        {
+          name: "科技园",
+          position: [121.48624368075255, 31.197575925580797],
+        },
+        {
+          name: "逸夫楼",
+          position: [121.52391709005656, 31.276115901927575],
+        },
+      ],
     };
+  },
+  computed: {
+    ...mapGetters(["mviewer", "openmobileGoTo"]),
   },
   created() {
     this.DC = global.DC;
   },
   mounted() {},
   methods: {
-    initialize(viewer) {
-      viewer.scene.globe.depthTestAgainstTerrain = false;
-      this.viewer = viewer;
+    handleCommand(command) {
+      let that = this;
+      console.log(command, "定位");
+      // 定位
+      this.mviewer.zoomToPosition(
+        new that.DC.Position(
+          command.position[0],
+          command.position[1] - 0.012,
+          1530,
+          0,
+          -45
+        )
+      );
+    },
+    openBigPopupAfter() {
+      this.$store.commit("MSET_BIGPOPUPAFTER", true);
+    },
+    goOn() {
+      let that = this;
+      this.$store.commit("MSET_OPENMOBILEGOTO", !that.openmobileGoTo);
+      // console.log(returnCitySN["cip"]);
+      // let data = {
+      //   ip: returnCitySN["cip"],
+      //   key: "7WKBZ-QDY62-WEEUG-C7KUN-ADAF5-L5BKZ",
+      // };
+      // console.log("定位", data.ip);
+      // getIp(data).then((res) => {
+      //   // getUsers(data).then((res) => {
+      //   console.log(res);
+      // });
     },
   },
 };
@@ -48,6 +113,19 @@
     font-size: 22px;
     margin-left: 12px;
     border-radius: 5px;
+    .icons {
+      display: inline-block;
+      width: 100%;
+      height: 100%;
+    }
+    .icon {
+      font-size: 20px;
+      color: #fff;
+      &::before {
+        width: 100%;
+        height: 100%;
+      }
+    }
   }
 }
 </style>
diff --git a/src/components/mobileCortrolSearch/index.vue b/src/components/mobileCortrolSearch/index.vue
index 3926498..4b1edab 100644
--- a/src/components/mobileCortrolSearch/index.vue
+++ b/src/components/mobileCortrolSearch/index.vue
@@ -6,6 +6,7 @@
           slot="append"
           class="iconSearch"
           icon="el-icon-search"
+          @click="search"
         ></el-button>
       </el-input>
     </div>
@@ -20,6 +21,7 @@
     return {
       viewer: null,
       DC: null,
+      input: "",
     };
   },
   created() {
@@ -31,6 +33,11 @@
       viewer.scene.globe.depthTestAgainstTerrain = false;
       this.viewer = viewer;
     },
+    search() {
+      let that = this;
+      this.$store.commit("MSET_BIGPOPUP", { search: true, value: that.input });
+      that.input = "";
+    },
   },
 };
 </script>
diff --git a/src/components/mobileGoTo/index.vue b/src/components/mobileGoTo/index.vue
new file mode 100644
index 0000000..a4c8f2c
--- /dev/null
+++ b/src/components/mobileGoTo/index.vue
@@ -0,0 +1,63 @@
+<template>
+  <div v-show="openmobileGoTo" class="mobileGoTo">
+    <el-input v-model="lnt"></el-input>
+    <el-input v-model="lat"></el-input>
+    <!-- <el-input v-model="alt"></el-input> -->
+    <el-button type="primary" @click="submitForm('')">跳转</el-button>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  name: "mobileGoTo",
+  computed: {
+    ...mapGetters([
+      "openmobileGoTo",
+      "mviewer",
+      "DC",
+      "query",
+      "MobileWindowChangeData",
+    ]),
+  },
+  data() {
+    return {
+      lnt: "121.53772514948211",
+      lat: "31.23938286341316",
+      alt: "90.648862227",
+    };
+  },
+  watch: {
+    MobileWindowChangeData() {
+      this.lnt = this.query.lntLat[0];
+      this.lat = this.query.lntLat[1];
+    },
+  },
+  methods: {
+    submitForm() {
+      if (this.lnt && this.lat) {
+        let that = this;
+        // 定制化窗体
+        let position = {};
+        let lntLat = [that.lnt, that.lat];
+        let d = {
+          position,
+          lntLat,
+          query: { position, lntLat },
+          useJWD: true, //仅使用经纬度
+        };
+        that.$store.dispatch("setMobileWindows", d);
+      }
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.mobileGoTo {
+  position: fixed;
+  bottom: 60px;
+  width: 73%;
+  z-index: 500;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/mobileLeftNav/index.vue b/src/components/mobileLeftNav/index.vue
index 1247850..1e471c6 100644
--- a/src/components/mobileLeftNav/index.vue
+++ b/src/components/mobileLeftNav/index.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="m-left-nav" :style="[navStyle]">
     <!-- :style="[coutrolStyle]" -->
-    <div class="m-left-coutrol" @click="iconHide = !iconHide">
+    <div class="m-left-coutrol" @click="changeIconHide">
       <i :class="icons"></i>
     </div>
     <ul>
@@ -18,9 +18,9 @@
 </template>
 
 <script>
+import { mapGetters } from "vuex";
 export default {
   name: "mobileLeftNav",
-  computed: {},
   watch: {
     iconHide() {
       if (this.iconHide) {
@@ -34,10 +34,12 @@
       }
     },
   },
+  computed: {
+    ...mapGetters(["iconHide"]),
+  },
   data() {
     return {
       icons: "el-icon-d-arrow-right",
-      iconHide: false,
       navStyle: {
         right: "0px",
       },
@@ -132,6 +134,10 @@
   },
   mounted() {},
   methods: {
+    changeIconHide() {
+      let isif = this.iconHide;
+      this.$store.commit("MSET_ICONHIDE", !isif);
+    },
     generatePosition(num) {
       const list = [];
       for (let i = 0; i < num; i++) {
@@ -150,22 +156,30 @@
         item.img = item.normal;
         this[item.layer].show = false;
       }
+      this.$store.dispatch("closeMobileWindowsDom"); //关闭弹窗
     },
     initialize(viewer) {
+      var that = this;
       viewer.scene.globe.depthTestAgainstTerrain = false;
       this.viewer = viewer;
       this.tagLayer = new this.DC.HtmlLayer("tagLayer");
       viewer.addLayer(this.tagLayer);
+
       this.wayLayer = new this.DC.HtmlLayer("wayLayer");
       viewer.addLayer(this.wayLayer);
+
       this.sceneLayer = new this.DC.VectorLayer("sceneLayer");
       viewer.addLayer(this.sceneLayer);
+
+      this.activityLayer = new this.DC.VectorLayer("activityLayer");
+      viewer.addLayer(this.activityLayer);
 
       this.aedLayer = new this.DC.VectorLayer("aedLayer");
       viewer.addLayer(this.aedLayer);
 
       this.parkLayer = new this.DC.HtmlLayer("parkLayer");
       viewer.addLayer(this.parkLayer);
+
       this.comeLayer = new this.DC.VectorLayer("comeLayer");
       viewer.addLayer(this.comeLayer);
 
@@ -184,7 +198,18 @@
                         </div>
                     `
         );
-        this.tagLayer.addOverlay(divIcon);
+        //  e.overlay._position._lng,
+        //       e.overlay._position._lat - 0.012,
+        //订阅事件1
+        divIcon.on(DC.MouseEventType.CLICK, (e) => {
+          // 定制化窗体
+          that.openPopupS(
+            e.position,
+            [e.overlay._position._lng, e.overlay._position._lat],
+            { name: "标签" }
+          );
+        });
+        this.tagLayer.addOverlay(divIcon); //标签
       });
 
       const positions2 = this.generatePosition(50);
@@ -202,7 +227,16 @@
                         </div>
                     `
         );
-        this.wayLayer.addOverlay(divIcon);
+        //订阅事件2
+        divIcon.on(DC.MouseEventType.CLICK, (e) => {
+          // 定制化窗体
+          that.openPopupS(
+            e.position,
+            [e.overlay._position._lng, e.overlay._position._lat],
+            { name: "道路" }
+          );
+        });
+        this.wayLayer.addOverlay(divIcon); //道路
       });
 
       const positions3 = this.generatePosition(50);
@@ -212,7 +246,44 @@
           "/img/leftnav/map-panorama.png"
         );
         billboard.size = [16, 16];
-        this.sceneLayer.addOverlay(billboard);
+        //订阅事件3
+        billboard.on(DC.MouseEventType.CLICK, (e) => {
+          // 定制化窗体
+          that.openPopupS(
+            e.position,
+            [e.wgs84Position.lng, e.wgs84Position.lat],
+            { name: "实景" }
+          );
+        });
+        this.sceneLayer.addOverlay(billboard); //实景
+      });
+
+      const positions10 = this.generatePosition(50);
+      positions10.forEach((item) => {
+        const label = new this.DC.Label(item, "活动");
+        label.setStyle({
+          fillColor: this.DC.Color.ORANGERED,
+          font: "10px sans-serif",
+          pixelOffset: { x: 0, y: -16 },
+        });
+        this.activityLayer.addOverlay(label);
+
+        const billboard = new this.DC.Billboard(
+          item,
+          "/img/leftnav/map-aed.png"
+          // "/img/leftnav/map-panorama.png"
+        );
+        billboard.size = [16, 16];
+        //订阅事件10
+        billboard.on(DC.MouseEventType.CLICK, (e) => {
+          // 定制化窗体
+          that.openPopupS(
+            e.position,
+            [e.wgs84Position.lng, e.wgs84Position.lat],
+            { name: "活动" }
+          );
+        });
+        this.activityLayer.addOverlay(billboard); //活动
       });
 
       const positions4 = this.generatePosition(10);
@@ -230,8 +301,16 @@
           "/img/leftnav/map-aed.png"
         );
         billboard.size = [16, 16];
-
-        this.aedLayer.addOverlay(billboard);
+        //订阅事件4
+        billboard.on(DC.MouseEventType.CLICK, (e) => {
+          // 定制化窗体
+          that.openPopupS(
+            e.position,
+            [e.wgs84Position.lng, e.wgs84Position.lat],
+            { name: "建筑AED" }
+          );
+        });
+        this.aedLayer.addOverlay(billboard); //AED
       });
 
       const positions5 = this.generatePosition(120);
@@ -253,6 +332,15 @@
                         </div>
                     `
         );
+        //订阅事件5
+        divIcon.on(DC.MouseEventType.CLICK, (e) => {
+          // 定制化窗体
+          that.openPopupS(
+            e.position,
+            [e.overlay._position._lng, e.overlay._position._lat],
+            { name: "校外街路侧停车场" }
+          );
+        });
         this.parkLayer.addOverlay(divIcon);
       });
 
@@ -273,17 +361,42 @@
           "/img/leftnav/map-activity.png"
         );
         billboard.size = [16, 16];
-
+        //订阅事件6
+        billboard.on(DC.MouseEventType.CLICK, (e) => {
+          // 定制化窗体
+          that.openPopupS(
+            e.position,
+            [e.wgs84Position.lng, e.wgs84Position.lat],
+            { name: "123" }
+          );
+        });
         this.comeLayer.addOverlay(billboard);
       });
 
       this.tagLayer.show = false;
       this.wayLayer.show = false;
       this.sceneLayer.show = false;
+      this.activityLayer.show = false;
       this.aedLayer.show = false;
       this.parkLayer.show = false;
       this.comeLayer.show = false;
     },
+    mobileOpenImgs1() {
+      let imgsDom = document.getElementById("mobileBigImgs");
+      imgsDom.click();
+    },
+    goOn1() {},
+    openPopupS(position, lntLat, query) {
+      let that = this;
+      // 定制化窗体
+      let d = {
+        position,
+        lntLat,
+        query: { ...(query || {}), position, lntLat },
+        useJWD: true, //仅使用经纬度
+      };
+      that.$store.dispatch("setMobileWindows", d);
+    },
   },
 };
 </script>
diff --git a/src/components/mobilePanorama/index.vue b/src/components/mobilePanorama/index.vue
new file mode 100644
index 0000000..516a31f
--- /dev/null
+++ b/src/components/mobilePanorama/index.vue
@@ -0,0 +1,45 @@
+<template>
+  <div v-show="openmobilePanorama" class="mobilePanorama">
+    <div class="mobilePanorama-close" @click="closeMobilePanorama">
+      <i class="el-icon-error icon"></i>
+    </div>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  name: "mobilePanorama",
+  computed: {
+    ...mapGetters(["openmobilePanorama"]),
+  },
+  data() {
+    return {};
+  },
+  methods: {
+    closeMobilePanorama() {
+      this.$store.commit("MSET_OPENMOBILEPANORAMA", false);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.mobilePanorama {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 1000;
+  background-color: #fff;
+  .mobilePanorama-close {
+    position: absolute;
+    right: 5px;
+    top: 5px;
+    .icon {
+      font-size: 35px;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/components/mobilePopupOur/index.vue b/src/components/mobilePopupOur/index.vue
new file mode 100644
index 0000000..5775c35
--- /dev/null
+++ b/src/components/mobilePopupOur/index.vue
@@ -0,0 +1,367 @@
+<template>
+  <div id="mobilePopupOur" v-loading.fullscreen.lock="fullscreenLoading">
+    <div class="m_p_heard">
+      <div class="m_p_h_break" @click="closeBigPopup">
+        <i class="el-icon-arrow-left icon"></i>
+      </div>
+      <div class="m_p_h_center">
+        <div>
+          <div v-if="mBigPopup.search" style="color: #fff">
+            查询结果{{ searchLabel ? "--" + searchLabel : "" }}
+          </div>
+          <el-dropdown trigger="click" @command="choiceIt" v-else>
+            <span class="el-dropdown-link">
+              {{ choiceValue }}<i class="el-icon-arrow-down el-icon--right"></i>
+            </span>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item
+                v-for="(item, index) in choiceData"
+                :key="index"
+                :command="item.name"
+                >{{ item.name }}</el-dropdown-item
+              >
+            </el-dropdown-menu>
+          </el-dropdown>
+        </div>
+      </div>
+    </div>
+    <div class="m_p_center">
+      <el-tabs v-model="activeName" @tab-click="handleClick">
+        <el-tab-pane
+          v-for="(item, index) in tabTable"
+          :key="index"
+          :label="item.label"
+          :name="item.value"
+        >
+          <div class="m_p_c_tableIn">
+            <el-empty
+              v-show="item.child.length == 0"
+              description="暂无数据"
+            ></el-empty>
+            <mobilePopupOurOnce
+              v-for="(citem, cindex) in item.child"
+              :key="cindex"
+              :ends="item.child.length - 1 == cindex"
+              :onceData="citem"
+            ></mobilePopupOurOnce>
+            <div v-show="item.child.length != 0">
+              <el-divider content-position="left">
+                <i class="el-icon-s-promotion"></i>&nbsp;&nbsp;&nbsp;暂无更多
+              </el-divider>
+            </div>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  computed: {
+    ...mapGetters(["mBigPopup"]),
+  },
+  name: "mobilePopupOur",
+  data() {
+    return {
+      searchLabel: "",
+      choiceValue: "",
+      choiceData: [
+        {
+          name: "党群机构",
+          value: "1",
+        },
+        {
+          name: "职能部门",
+          value: "2",
+        },
+        {
+          name: "其他机构",
+          value: "3",
+        },
+      ],
+      tabTable: [
+        {
+          label: "西东大街",
+          value: "first",
+          child: [
+            {
+              name: "电力部门",
+              icon: "",
+              lntLat: [121.49907024133591, 31.234911748958513],
+              buts: ["实景", "图集", "定位"],
+            },
+            {
+              name: "保安部门",
+              icon: "",
+              lntLat: [121.51198333955459, 31.216073280697593],
+              buts: ["图集", "定位"],
+            },
+            {
+              name: "图书馆",
+              icon: "",
+              lntLat: [121.4945198122125, 31.213002416673532],
+              buts: ["定位"],
+            },
+            {
+              name: "电力部门",
+              icon: "",
+              lntLat: [121.49907024133591, 31.234911748958513],
+              buts: ["实景", "图集", "定位"],
+            },
+            {
+              name: "保安部门",
+              icon: "",
+              lntLat: [121.51198333955459, 31.216073280697593],
+              buts: ["图集", "定位"],
+            },
+            {
+              name: "图书馆",
+              icon: "",
+              lntLat: [121.4945198122125, 31.213002416673532],
+              buts: ["定位"],
+            },
+            {
+              name: "电力部门",
+              icon: "",
+              lntLat: [121.49907024133591, 31.234911748958513],
+              buts: ["实景", "图集", "定位"],
+            },
+            {
+              name: "保安部门",
+              icon: "",
+              lntLat: [121.51198333955459, 31.216073280697593],
+              buts: ["图集", "定位"],
+            },
+            {
+              name: "图书馆",
+              icon: "",
+              lntLat: [121.4945198122125, 31.213002416673532],
+              buts: ["定位"],
+            },
+            {
+              name: "电力部门",
+              icon: "",
+              lntLat: [121.49907024133591, 31.234911748958513],
+              buts: ["实景", "图集", "定位"],
+            },
+            {
+              name: "保安部门",
+              icon: "",
+              lntLat: [121.51198333955459, 31.216073280697593],
+              buts: ["图集", "定位"],
+            },
+            {
+              name: "图书馆",
+              icon: "",
+              lntLat: [121.4945198122125, 31.213002416673532],
+              buts: ["定位"],
+            },
+            {
+              name: "电力部门",
+              icon: "",
+              lntLat: [121.49907024133591, 31.234911748958513],
+              buts: ["实景", "图集", "定位"],
+            },
+            {
+              name: "保安部门",
+              icon: "",
+              lntLat: [121.51198333955459, 31.216073280697593],
+              buts: ["图集", "定位"],
+            },
+            {
+              name: "图书馆",
+              icon: "",
+              lntLat: [121.4945198122125, 31.213002416673532],
+              buts: ["定位"],
+            },
+            {
+              name: "电力部门",
+              icon: "",
+              lntLat: [121.49907024133591, 31.234911748958513],
+              buts: ["实景", "图集", "定位"],
+            },
+            {
+              name: "保安部门",
+              icon: "",
+              lntLat: [121.51198333955459, 31.216073280697593],
+              buts: ["图集", "定位"],
+            },
+            {
+              name: "图书馆",
+              icon: "",
+              lntLat: [121.4945198122125, 31.213002416673532],
+              buts: ["定位"],
+            },
+            {
+              name: "电力部门",
+              icon: "",
+              lntLat: [121.49907024133591, 31.234911748958513],
+              buts: ["实景", "图集", "定位"],
+            },
+            {
+              name: "保安部门",
+              icon: "",
+              lntLat: [121.51198333955459, 31.216073280697593],
+              buts: ["图集", "定位"],
+            },
+            {
+              name: "图书馆",
+              icon: "",
+              lntLat: [121.4945198122125, 31.213002416673532],
+              buts: ["定位"],
+            },
+            {
+              name: "电力部门",
+              icon: "",
+              lntLat: [121.49907024133591, 31.234911748958513],
+              buts: ["实景", "图集", "定位"],
+            },
+            {
+              name: "保安部门",
+              icon: "",
+              lntLat: [121.51198333955459, 31.216073280697593],
+              buts: ["图集", "定位"],
+            },
+            {
+              name: "图书馆",
+              icon: "",
+              lntLat: [121.4945198122125, 31.213002416673532],
+              buts: ["定位"],
+            },
+          ],
+        },
+        {
+          label: "长江路",
+          value: "second",
+          child: [
+            {
+              name: "电力部门1",
+              icon: "",
+              position: [121.49190702133591, 31.234911741858513],
+              buts: ["实景", "图集", "定位"],
+            },
+            {
+              name: "保安部门1",
+              icon: "",
+              position: [121.49907021413591, 31.234911741895513],
+              buts: ["图集", "定位"],
+            },
+            {
+              name: "图书馆1",
+              icon: "",
+              position: [121.49901024133591, 31.234911749581513],
+              buts: ["定位"],
+            },
+          ],
+        },
+        {
+          label: "科技园",
+          value: "third",
+          child: [],
+        },
+        {
+          label: "逸夫楼",
+          value: "fourth",
+          child: [],
+        },
+      ],
+      fullscreenLoading: false,
+      activeName: "first",
+    };
+  },
+  // watch: {
+  //   mBigPopup() {
+  //     console.log(this.mBigPopup.name);
+  //     this.choiceValue = this.mBigPopup.name;
+  //   },
+  // },
+  mounted() {
+    this.fullscreenLoading = true;
+    setTimeout(() => {
+      if (this.mBigPopup.search) {
+        this.searchLabel = this.mBigPopup.value;
+        console.log("查询搜索结果", this.mBigPopup.value);
+        this.fullscreenLoading = false;
+        return;
+      }
+      this.choiceValue = this.mBigPopup.name;
+      this.fullscreenLoading = false;
+      this.$store.commit("MSET_BIGPOPUPAFTER", false);
+      console.log("请求对应街道接口");
+    }, 500);
+    // this.choiceValue = this.choiceData[0].name;
+  },
+  methods: {
+    handleClick(tab, event) {
+      console.log(tab.name);
+    },
+    choiceIt(name) {
+      this.fullscreenLoading = true;
+      setTimeout(() => {
+        this.choiceValue = name;
+        this.fullscreenLoading = false;
+        console.log("请求对应头部下拉菜单接口");
+      }, 500);
+    },
+    closeBigPopup() {
+      this.$store.commit("MSET_BIGPOPUP", false);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+#mobilePopupOur {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background-color: #fff;
+  z-index: 300;
+  .m_p_heard {
+    width: 100%;
+    height: 50px;
+    background-color: #a40000;
+    .m_p_h_break {
+      position: absolute;
+      left: 0;
+      top: 0;
+      width: 50px;
+      height: 50px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      .icon {
+        font-size: 22px;
+        color: #fff;
+      }
+    }
+    .m_p_h_center {
+      width: 100%;
+      height: 50px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      .el-dropdown-link {
+        color: #fff;
+      }
+    }
+  }
+  .m_p_center {
+    width: 100%;
+    height: calc(100% - 50px);
+    // border: 1px solid red
+    box-sizing: border-box;
+    .m_p_c_tableIn {
+      width: 100%;
+      height: 100%;
+      box-sizing: border-box;
+      overflow-x: hidden;
+      overflow-y: auto;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/components/mobilePopupOurAfter/index.vue b/src/components/mobilePopupOurAfter/index.vue
new file mode 100644
index 0000000..9847d54
--- /dev/null
+++ b/src/components/mobilePopupOurAfter/index.vue
@@ -0,0 +1,135 @@
+<template>
+  <div id="mobilePopupOurAfter">
+    <div class="m_p_a_heard">
+      <div><i class="el-icon-menu icon"></i></div>
+      <div @click="closeBigPopupAfter"><i class="el-icon-close icon"></i></div>
+    </div>
+    <div class="m_p_a_center">
+      <div class="m_p_a_center_group">
+        <div
+          class="m_p_a_center_once"
+          v-for="(item, index) in choiceDataUp"
+          @click="openBigPopup(item)"
+          :key="index"
+        >
+          <div class="m_p_a_c_o_up"><i :class="[item.icon]"></i></div>
+          <div class="m_p_a_c_o_down">{{ item.name }}</div>
+        </div>
+      </div>
+      <div class="m_p_a_center_group">
+        <div
+          class="m_p_a_center_once"
+          v-for="(item, index) in choiceDataDown"
+          @click="openBigPopup(item)"
+          :key="index"
+        >
+          <div class="m_p_a_c_o_up"><i :class="[item.icon]"></i></div>
+          <div class="m_p_a_c_o_down">{{ item.name }}</div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "mobilePopupOurAfter",
+  data() {
+    return {
+      choiceValue: "",
+      choiceDataUp: [
+        {
+          name: "机构单位",
+          icon: "el-icon-s-cooperation",
+        },
+        {
+          name: "校园建筑",
+          icon: "el-icon-s-management",
+        },
+        {
+          name: "生活设施",
+          icon: "el-icon-s-flag",
+        },
+      ],
+      choiceDataDown: [
+        {
+          name: "文化风景",
+          icon: "el-icon-s-opportunity",
+        },
+        {
+          name: "出入口",
+          icon: "el-icon-s-promotion",
+        },
+        {
+          name: "停车场",
+          icon: "el-icon-s-flag",
+        },
+      ],
+    };
+  },
+  mounted() {},
+  methods: {
+    openBigPopup(val) {
+      this.$store.commit("MSET_BIGPOPUP", val);
+    },
+    closeBigPopupAfter() {
+      this.$store.commit("MSET_BIGPOPUPAFTER", false);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.flexCenter {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+#mobilePopupOurAfter {
+  position: fixed;
+  top: 37.5%;
+  left: 13.5%;
+  width: 75%;
+  height: 25%;
+  background-color: #fff;
+  z-index: 300;
+  .m_p_a_heard {
+    width: 100%;
+    height: 35px;
+    box-sizing: border-box;
+    padding: 5px 15px;
+    @extend .flexCenter;
+    justify-content: space-between;
+    background-color: #a40000;
+    div {
+      width: 35px;
+      height: 35px;
+      @extend .flexCenter;
+    }
+    .icon {
+      font-size: 24px;
+      color: #fff;
+    }
+  }
+  .m_p_a_center {
+    width: 100%;
+    height: calc(100% - 35px);
+    @extend .flexCenter;
+    flex-direction: column;
+    .m_p_a_center_group {
+      width: 100%;
+      height: 40%;
+      @extend .flexCenter;
+      .m_p_a_center_once {
+        width: 30%;
+        height: 100%;
+        background-color: #a40000;
+        color: #fff;
+        border: 2px solid rgb(255, 255, 255);
+        @extend .flexCenter;
+        flex-direction: column;
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/components/mobilePopupOurOnce/index.vue b/src/components/mobilePopupOurOnce/index.vue
new file mode 100644
index 0000000..400eccb
--- /dev/null
+++ b/src/components/mobilePopupOurOnce/index.vue
@@ -0,0 +1,132 @@
+<template>
+  <div class="mobilePopupOurOnce">
+    <div
+      class="mobilePopupOurOnce_center"
+      :style="{
+        borderBottom: !ends ? '#d4d4d4 dashed 1px' : '',
+        marginBottom: !ends ? '6px' : '',
+      }"
+    >
+      <div class="mobilePopupOurOnce_left">
+        <img src="img/cc/cc.png" alt="" />
+      </div>
+      <div class="mobilePopupOurOnce_right">
+        <div class="mobilePopupOurOnce_r_up">{{ onceData.name }}</div>
+        <div class="mobilePopupOurOnce_r_down">
+          <div v-for="(item, index) in seebut" :key="index">
+            <el-link
+              icon="el-icon-map-location"
+              class="mobilePopupOurOnce_r_d_in"
+              @click="openOnce(item.name)"
+              >{{ item.name }}</el-link
+            >
+            <el-divider
+              direction="vertical"
+              class="mobilePopupOurOnce_r_d_in"
+              v-if="index != seebut.length - 1"
+            ></el-divider>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  props: ["onceData", "ends"],
+  name: "mobilePopupOurOnce",
+  created() {
+    this.DC = global.DC;
+  },
+  data() {
+    return {
+      DC: "",
+    };
+  },
+  computed: {
+    ...mapGetters(["mviewer"]),
+    seebut() {
+      let buts = this.onceData.buts;
+      let b = [];
+      for (let k in buts) {
+        b.push({
+          name: buts[k],
+        });
+      }
+      return b;
+    },
+  },
+  methods: {
+    openOnce(val) {
+      let that = this;
+      console.log(val, this.onceData);
+      if (val == "定位") {
+        this.$store.commit("MSET_BIGPOPUP", false);
+        setTimeout(() => {
+          // 定制化窗体
+          let d = {
+            position: {},
+            lntLat: that.onceData.lntLat,
+            query: this.onceData,
+            useJWD: true, //仅使用经纬度
+          };
+          that.popupsDom = that.$store.dispatch("setMobileWindows", d);
+        }, 500);
+      } else if (val == "实景") {
+        this.$store.commit("MSET_OPENMOBILEPANORAMA", true);
+      }
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+// 继承类
+.flexCenter {
+  display: flex !important;
+  align-items: center !important;
+  justify-content: center !important;
+}
+.mobilePopupOurOnce {
+  padding: 0 0;
+  margin: 0 8px;
+  .mobilePopupOurOnce_center {
+    // margin-bottom: 8px;
+    height: 80px;
+    // border-bottom: #d4d4d4 dashed 1px;
+    padding-bottom: 8px;
+    @extend .flexCenter;
+    .mobilePopupOurOnce_left {
+      width: 32%;
+      height: 100%;
+      @extend .flexCenter;
+    }
+    .mobilePopupOurOnce_right {
+      width: 68%;
+      height: 100%;
+      @extend .flexCenter;
+      flex-direction: column;
+      .mobilePopupOurOnce_r_up {
+        height: 50%;
+        width: 100%;
+        font-size: 16px;
+        text-indent: 1em;
+        display: flex !important;
+        align-items: center !important;
+      }
+      .mobilePopupOurOnce_r_down {
+        height: 50%;
+        width: 100%;
+        padding-left: 1em;
+        display: flex !important;
+        align-items: center !important;
+        .mobilePopupOurOnce_r_d_in {
+          font-size: 17px;
+        }
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/components/mobileWindow/index.vue b/src/components/mobileWindow/index.vue
new file mode 100644
index 0000000..85f0188
--- /dev/null
+++ b/src/components/mobileWindow/index.vue
@@ -0,0 +1,80 @@
+<template>
+  <div
+    ref="mobile-mapContentContent"
+    v-show="!MobileWindowsHide"
+    id="mobile-map_content_content"
+  >
+    <div class="mobile-popup-imgs-heard">
+      <img :src="url" alt="" />
+      <el-image
+        style="width: 100px; height: 100px"
+        :src="url"
+        id="mobileBigImgs"
+        v-show="false"
+        :preview-src-list="srcList"
+      >
+      </el-image>
+      <div>{{ query.query }}</div>
+      <!-- 哈工大A10公寫总建筑面积30740平方米,于2001年采用货款方式高标准建造并投入使用。整个楼体共分十层,地上九层为公寫主体。公寓外观呈工字型,公寓内房司以A、B、C三个区域別分,与哈工大雄厚的工科底蕴遥相呼应,是哈尔滨工业大学学生公寫的标志性建筑 -->
+    </div>
+    <div class="mobile-popup-control">
+      <el-link icon="el-icon-picture-outline-round" @click="mobileOpenImgs"
+        >图集</el-link
+      >
+      <el-divider direction="vertical"></el-divider>
+      <el-link icon="el-icon-map-location" @click="openMobilePanorama"
+        >实景</el-link
+      >
+      <el-divider direction="vertical"></el-divider>
+      <el-link icon="el-icon-aim" @click="goOn">去这</el-link>
+    </div>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  name: "mobileWindow",
+  computed: {
+    ...mapGetters(["MobileWindowsHide", "query", "MobileWindowChangeData"]),
+  },
+  watch: {
+    MobileWindowChangeData() {
+      //   this.fullscreenLoading = true;
+      if (!this.MobileWindowsHide) {
+        // setTimeout(() => {
+        // this.fullscreenLoading = false;
+        console.log("地图点击弹窗数据请求参数", this.query);
+        // console.log("地图点击弹窗数据请求参数", this.query.lntLat[0]);
+        // console.log("地图点击弹窗数据请求参数", this.query.lntLat[1]);
+        // }, 500);
+      }
+    },
+  },
+  data() {
+    return {
+      fullscreenLoading: false,
+      url: "/img/job/one.jpg",
+      positions: "",
+      srcList: [
+        "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
+        "https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg",
+      ],
+    };
+  },
+  methods: {
+    mobileOpenImgs() {
+      let imgsDom = document.getElementById("mobileBigImgs");
+      imgsDom.click();
+    },
+    goOn() {},
+    openMobilePanorama() {
+      console.log(11);
+      this.$store.commit("MSET_OPENMOBILEPANORAMA", true);
+    },
+  },
+};
+</script>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/src/components/mobilemap/index.vue b/src/components/mobilemap/index.vue
index 1953320..7046ae0 100644
--- a/src/components/mobilemap/index.vue
+++ b/src/components/mobilemap/index.vue
@@ -1,63 +1,66 @@
 /* eslint-disable camelcase */
 <template>
   <div id="mobile-viewer-container">
+    <!-- 地图图标弹窗↓ -->
     <div id="mobile-map_popup_content"></div>
-
-    <div
-      ref="mobile-mapContentContent"
-      v-show="popupWindow"
-      id="mobile-map_content_content"
-    >
-      <div class="mobile-popup-imgs-heard">
-        <img :src="url" alt="" />
-        <el-image
-          style="width: 100px; height: 100px"
-          :src="url"
-          id="mobileBigImgs"
-          v-show="false"
-          :preview-src-list="srcList"
-        >
-        </el-image>
-        哈工大A10公寫总建筑面积30740平方米,于2001年采用货款方式高标准建造并投入使用。整个楼体共分十层,地上九层为公寫主体。公寓外观呈工字型,公寓内房司以A、B、C三个区域別分,与哈工大雄厚的工科底蕴遥相呼应,是哈尔滨工业大学学生公寫的标志性建筑
-      </div>
-      <div class="mobile-popup-control">
-        <el-link icon="el-icon-picture-outline-round" @click="mobileOpenImgs"
-          >图集</el-link
-        >
-        <el-divider direction="vertical"></el-divider>
-
-        <el-link icon="el-icon-map-location">实景</el-link>
-        <el-divider direction="vertical"></el-divider>
-        <el-link icon="el-icon-aim">去这</el-link>
-      </div>
-    </div>
+    <mobileWindow></mobileWindow>
+    <!-- 地图图标弹窗↑ -->
+    <!-- 控制↓ -->
     <mobileLeftNav ref="mobileLeftNav"></mobileLeftNav>
     <mobileCortrol ref="mobileCortrol"></mobileCortrol>
     <mobileCortrolButtom ref="mobileCortrolButtom"></mobileCortrolButtom>
     <mobileCortrolSearch ref="mobileCortrolSearch"></mobileCortrolSearch>
+    <!-- 控制↑ -->
+    <!-- 控制大弹窗的弹窗 -->
+    <mobilePopupOurAfter v-if="mBigPopupAfter"></mobilePopupOurAfter>
+    <!-- 大弹窗 -->
+    <mobilePopupOur :style="[bigPopup]" v-if="mBigPopup"></mobilePopupOur>
+    <!-- 测试-跳转位置 -->
+    <mobileGoTo></mobileGoTo>
+    <!-- 实景窗口 -->
+    <mobilePanorama></mobilePanorama>
   </div>
 </template>
 <script>
 import { mapGetters } from "vuex";
-
 export default {
   name: "mobilemapBox",
   data() {
     return {
-      url: "/img/job/one.jpg",
-      srcList: [
-        "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
-        "https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg",
-      ],
-      popupFlag: false,
-      popupWindow: false,
+      DC: "",
+      bigPopup: {
+        width: 0,
+        height: 0,
+        // transition: "all 3s",
+      },
     };
   },
   computed: {
-    ...mapGetters(["mviewer"]),
+    ...mapGetters([
+      "mviewer",
+      "MobileWindowsHide",
+      "mBigPopup",
+      "mBigPopupAfter",
+      "iconHide",
+      "popupsDom",
+    ]),
+  },
+  watch: {
+    mBigPopup() {
+      if (this.mBigPopup) {
+        this.bigPopup.width = "100%";
+        this.bigPopup.height = "100%";
+        this.bigPopup.display = "inline-block";
+      } else {
+        this.bigPopup.width = "0";
+        this.bigPopup.height = "0";
+        this.bigPopup.display = "none";
+      }
+    },
   },
   mounted() {
     var DC = global.DC;
+    this.DC = DC;
 
     var that = this;
 
@@ -132,6 +135,7 @@
       });
       that.$refs.mobileLeftNav.initialize(viewer);
       that.$store.commit("MSET_VIEWER", viewer);
+      that.$store.commit("MSET_DC", DC);
       const popup = viewer.popup;
 
       popup.hide();
@@ -144,7 +148,7 @@
         name: "影像",
       });
 
-      // // eslint-disable-next-line camelcase
+      // eslint-disable-next-line camelcase
       // const baselayer_shaded = DC.ImageryLayerFactory.createArcGisImageryLayer({
       //   url: "http://services.arcgisonline.com/arcgis/rest/services/World_Shaded_Relief/MapServer",
       // });
@@ -170,6 +174,20 @@
       //   iconUrl: "examples/images/icon/ter.png",
       //   name: "地形",
       // });
+
+      // 地图移动事件
+      viewer.on(DC.MouseEventType.MOUSE_MOVE, (e) => {
+        if (!that.iconHide) {
+          that.$store.commit("MSET_ICONHIDE", true);
+        }
+        that.$store.dispatch("closeMobileWindowsDom"); //关闭弹窗
+        // if (!that.MobileWindowsHide && that.popupsDom) {
+        //   that.popupsDom.closeOur();
+        //   that.$store.commit("MSET_MOBILEWINDOWSHIDE", true);
+        // }
+        // nowPosition = [e.wgs84Position.lng, e.wgs84Position.lat];
+        // console.log(nowPosition);
+      });
 
       const layer = new DC.TilesetLayer("layer");
       viewer.addLayer(layer);
@@ -198,30 +216,16 @@
 
       tileset.on(DC.MouseEventType.CLICK, (e) => {
         // that.popupFlag = true
-        that.popupWindow = true;
+        // that.popupWindow = true;
 
         viewer.scene.globe.depthTestAgainstTerrain = false;
 
         // console.log(document.getElementById("mobile-map_content_content"));
-        console.log(e.position);
+        console.log(e);
 
         // 定制化窗体
-        var divForms = new DC.mobileDivForms(viewer, {
-          domId: "mobilePopup",
-          title: "成教楼  ",
-          className: "mobilePopup",
-          content: document.getElementById("mobile-map_content_content"),
-          position: [e.position],
-        });
-        viewer.zoomToPosition(
-          new DC.Position(
-            e.wgs84Position.lng,
-            e.wgs84Position.lat - 0.016,
-            2030,
-            0,
-            -45
-          )
-        );
+        that.openPopupS(e.position, [e.wgs84Position.lng, e.wgs84Position.lat]);
+
         // popup.setWrapper('<div></div>')
 
         // popup.showAt(e.position, document.getElementById('modelPopup'))
@@ -232,7 +236,7 @@
       // )
 
       viewer.compass.enable = false;
-      viewer.zoomController.enable = false;
+      viewer.zoomController.enable = true;
       viewer.locationBar.enable = false;
       viewer.distanceLegend.enable = true;
     }
@@ -240,9 +244,16 @@
     DC.ready(initViewer);
   },
   methods: {
-    mobileOpenImgs() {
-      let imgsDom = document.getElementById("mobileBigImgs");
-      imgsDom.click();
+    openPopupS(position, lntLat, query) {
+      let that = this;
+      // 定制化窗体
+      let d = {
+        position,
+        lntLat,
+        query: { ...(query || {}), position, lntLat },
+        useJWD: true, //仅使用经纬度
+      };
+      that.$store.dispatch("setMobileWindows", d);
     },
   },
 };
diff --git a/src/mobileDivForms/mobileDivForms.js b/src/mobileDivForms/mobileDivForms.js
index e26010c..aacdde5 100644
--- a/src/mobileDivForms/mobileDivForms.js
+++ b/src/mobileDivForms/mobileDivForms.js
@@ -20,12 +20,13 @@
      *
      */
     constructor(viewer, popup) {
-        this._viewer = viewer
-        this._popup = popup
-        this._position = popup.position
-        this._title = popup.title
-        this._content = popup.content
-        this.appendPopup()
+        this._viewer = viewer;
+        this._popup = popup;
+        this._position = popup.position;
+        this._title = popup.title;
+        this._content = popup.content;
+        this.appendPopup();
+        this.isOpen = true;
     }
 
     get viewer() {
@@ -58,6 +59,9 @@
 
     // 创建元素并追加
     createVideoWindowAll(id, className, position) {
+        let dom = document.getElementById('mobile-map_popup_content');
+        dom.style.display = 'block';
+
         var childs = document.getElementById('mobile-map_popup_content').getElementsByTagName('div')
 
         if (childs.length > 0) {
@@ -70,53 +74,9 @@
 
         var el = $("<div class=''></div>")
 
-        // var divBig = $("<div style='width: 100%; height: 100%;' class=''></div>")
-
-        // var divForms = $("<div class='divForms divForms-theme'></div>")
-
-        // var divFormsWrap = $("<div class='divForms-wrap'></div>")
-
-        // var area = $("<div class='area'></div>")
-
-        // var arrowLt = $("<div class='arrow-lt'></div>")
-        // var bT = $("<div class='b-t'></div>")
-        // var bR = $("<div class='b-r'></div>")
-        // var bB = $("<div class='b-b'></div>")
-        // var bL = $("<div class='b-l'></div>")
-        // var arrowRb = $("<div class='arrow-rb'></div>")
-
-        // var labelWrap = $("<div class='label-wrap'></div>")
         var titleDiv = $("<div class='mobiletitle'></div>").text(this._title)
         var labelContent = $("<div class='mobilelabel-content'></div>").append(this._content)
 
-        // var titleDiv = $("<div class='mobiletitle'>楼</div>")
-        // var labelContent = $("<div class='mobilelabel-content'>内容</div>")
-
-        // labelWrap.append(titleDiv)
-        // labelWrap.append(labelContent)
-
-        // var bTL = $("<div class='b-t-l'></div>")
-        // var bBR = $("<div class='b-b-r'></div>")
-
-        // var arrow = $("<div class='arrow'></div>")
-
-        // area.append(arrowLt)
-        // area.append(bT)
-        // area.append(bR)
-        // area.append(bB)
-        // area.append(bL)
-        // area.append(arrowRb)
-        // area.append(labelWrap)
-
-        // divFormsWrap.append(area)
-        // divFormsWrap.append(bTL)
-        // divFormsWrap.append(bBR)
-
-        // divForms.append(divFormsWrap)
-        // divForms.append(arrow)
-
-        // divBig.append(divForms)
-        // el.append(divBig)
         el.append(titleDiv)
         el.append(labelContent)
 
@@ -127,6 +87,9 @@
         $('#mobile-map_popup_content').append(el)
 
         this._viewer.scene.postRender.addEventListener(function () {
+            if (!self.isOpen) {
+                return;
+            }
             const windowCoord = DC.Namespace.Cesium.SceneTransforms.wgs84ToWindowCoordinates(
                 self._viewer.scene,
                 position
@@ -137,6 +100,9 @@
     }
 
     positionPopUp(windowCoord, id) {
+        if (!windowCoord) {
+            return;
+        }
         const wx = document.getElementById('app').clientWidth;
         const x = windowCoord.x - (wx / 100 * 35);
         const y = windowCoord.y - document.getElementById(id).offsetHeight - 15;
@@ -149,6 +115,18 @@
         transform:translate3d(${Math.round(x)}px,${Math.round(y)}px, 0);
         `
     }
+    closeOur() {
+        this.isOpen = false;
+        let dom = document.getElementById('mobile-map_popup_content');
+        dom.style.display = 'none';
+        // var childs = document.getElementById('mobile-map_popup_content').getElementsByTagName('div')
+
+        // if (childs.length > 0) {
+        //     for (var i = 0; i < childs.length; i++) {
+        //         document.getElementById('mobile-map_popup_content').removeChild(childs[i])
+        //     }
+        // }
+    }
 }
 
 export default mobileDivForms
diff --git a/src/position/position.js b/src/position/position.js
new file mode 100644
index 0000000..1091582
--- /dev/null
+++ b/src/position/position.js
@@ -0,0 +1,60 @@
+/**
+* 高德地图定位
+* 
+*/
+// export const location = {
+// undefined
+// initMap(id) {
+//     // undefined
+//     let mapObj = new AMap.Map(id, {});
+//     let geolocation;
+//     mapObj.plugin(["AMap.Geolocation"], function () {
+//         // undefined
+//         geolocation = new AMap.Geolocation({
+//             // undefined
+//             enableHighAccuracy: true, //  是否使用高精度定位,默认:true
+//             timeout: 10000, //  超过10秒后停止定位,默认:无穷大
+//             maximumAge: 0, // 定位结果缓存0毫秒,默认:0
+//             convert: true, // 自动偏移坐标,偏移后的坐标为高德坐标,默认:true
+//             showButton: true, //  显示定位按钮,默认:true
+//             buttonPosition: "LB", // 定位按钮停靠位置,默认:'LB',左下角
+//             buttonOffset: new AMap.Pixel(10, 20), //  定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
+//             showMarker: true, //  定位成功后在定位到的位置显示点标记,默认:true
+//             showCircle: true, //  定位成功后用圆圈表示定位精度范围,默认:true
+//             panToLocation: true, //  定位成功后将定位到的位置作为地图中心点,默认:true
+//             zoomToAccuracy: true, //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
+//         });
+//         mapObj.addControl(geolocation);
+//         geolocation.getCurrentPosition();
+//     });
+//     return geolocation;
+// },
+// };
+export const location = function (fn) {
+    AMap.plugin('AMap.Geolocation', function () {
+        var geolocation = new AMap.Geolocation({
+            // 是否使用高精度定位,默认:true
+            enableHighAccuracy: true,
+            // 设置定位超时时间,默认:无穷大
+            // timeout: 10000,
+            // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
+            // buttonOffset: new AMap.Pixel(10, 20),
+            //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
+            // zoomToAccuracy: true,
+            //  定位按钮的排放位置,  RB表示右下
+            // buttonPosition: 'RB'
+        })
+
+        geolocation.getCurrentPosition()
+        AMap.event.addListener(geolocation, 'complete', onComplete)
+        AMap.event.addListener(geolocation, 'error', onError)
+        function onComplete(data) {
+            // data是具体的定位信息
+            fn(data);
+        }
+        function onError(data) {
+            // 定位出错
+            fn(data);
+        }
+    })
+};
\ No newline at end of file
diff --git a/src/store/getters.js b/src/store/getters.js
index ef4d138..bae0997 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -1,6 +1,20 @@
-const getters = {
-    viewer: state => state.viewer.viewer,
+// 手机端
+const mobile = {
     mviewer: state => state.mobile.mviewer,
+    mBigPopup: state => state.mobile.mBigPopup,
+    mBigPopupAfter: state => state.mobile.mBigPopupAfter,
+    iconHide: state => state.mobile.iconHide,
+    DC: state => state.mobile.DC,
+    MobileWindowsHide: state => state.mobile.MobileWindowsHide,
+    MobileWindowChangeData: state => state.mobile.MobileWindowChangeData,
+    popupsDom: state => state.mobile.popupsDom,
+    query: state => state.mobile.query,
+    openmobileGoTo: state => state.mobile.openmobileGoTo,
+    openmobilePanorama: state => state.mobile.openmobilePanorama
+}
+const getters = {
+    ...mobile,
+    viewer: state => state.viewer.viewer,
     popupBgUrl: state => state.popupParams.popupBgUrl,
     pupupQRUrl: state => state.popupParams.pupupQRUrl,
     pointPosition: state => state.popupParams.pointPosition,
diff --git a/src/store/modules/mobile.js b/src/store/modules/mobile.js
index 095fce9..9842189 100644
--- a/src/store/modules/mobile.js
+++ b/src/store/modules/mobile.js
@@ -1,14 +1,97 @@
+import $store from '../index'
 const mobile = {
     state: {
-        mviewer: null
+        mviewer: null,//地图实体类
+        mBigPopup: false,//全屏弹窗
+        mBigPopupAfter: false,////全屏弹窗之前的弹窗
+        ips: '',//获取的ip
+        iconHide: false,//右侧伸缩状态
+        DC: '',//DC全局保存
+        MobileWindowsHide: true,//改变点击窗口的显示状态
+        MobileWindowChangeData: false,//改变点击窗口的数据
+        popupsDom: '',//mobileDivForms的实体类
+        query: {},//传输数据
+        openmobileGoTo: false,//测试
+        openmobilePanorama: false,//实景显影
     },
     mutations: {
         MSET_VIEWER(state, viewer) {
             state.mviewer = viewer
+        },
+        MSET_BIGPOPUP(state, viewer) {
+            state.mBigPopup = viewer;
+            $store.dispatch("closeMobileWindowsDom"); //关闭弹窗
+        },
+        MSET_BIGPOPUPAFTER(state, viewer) {
+            state.mBigPopupAfter = viewer;
+            $store.dispatch("closeMobileWindowsDom"); //关闭弹窗
+        },
+        MSET_ICONHIDE(state, viewer) {
+            state.iconHide = viewer
+        },
+        MSET_DC(state, viewer) {
+            state.DC = viewer
+        },
+        MSET_MOBILEWINDOWSHIDE(state, viewer) {
+            state.MobileWindowChangeData = !state.MobileWindowChangeData;
+            state.MobileWindowsHide = viewer
+        },
+        MSET_POPUPDOM(state, viewer) {
+            state.popupsDom = viewer
+        },
+        MSET_QUERY(state, viewer) {
+            state.query = viewer
+        },
+        MSET_OPENMOBILEGOTO(state, viewer) {
+            state.openmobileGoTo = viewer
+        },
+        MSET_OPENMOBILEPANORAMA(state, viewer) {
+            state.openmobilePanorama = viewer
         }
     },
     actions: {
-
+        setMobileWindows({ state, commit, }, data) {
+            if (data.useJWD) {
+                var ellipsoid = state.mviewer.scene.globe.ellipsoid;
+                var cartographic = state.DC.Namespace.Cesium.Cartographic.fromDegrees(
+                    data.lntLat[0],
+                    data.lntLat[1] - 0.00006,
+                    "90.648862227"
+                );
+                data.position = ellipsoid.cartographicToCartesian(cartographic);
+            }
+            // 传递响应数据
+            commit("MSET_QUERY", data);
+            // 定制化窗体
+            let popupsDom = new state.DC.mobileDivForms(state.mviewer, {
+                domId: "mobilePopup",
+                title: data.query.name || "成教楼  ",
+                className: "mobilePopup",
+                content: document.getElementById("mobile-map_content_content"),
+                position: [data.position],
+            });
+            commit("MSET_MOBILEWINDOWSHIDE", false)
+            state.mviewer.zoomToPosition(
+                new state.DC.Position(data.lntLat[0], data.lntLat[1] - 0.012, 1530, 0, -45)
+            );
+            commit("MSET_POPUPDOM", popupsDom)
+        },
+        closeMobileWindowsDom({ state, commit }) {
+            if (!state.MobileWindowsHide && state.popupsDom) {
+                state.popupsDom.closeOur();
+                commit("MSET_MOBILEWINDOWSHIDE", true);
+            }
+        },
+        CHANGETOC3({ state, commit }, data) {// //转换经纬度坐标 成世界坐标cartesian3
+            var ellipsoid = state.mviewer.scene.globe.ellipsoid;
+            var cartographic = state.DC.Namespace.Cesium.Cartographic.fromDegrees(
+                data.lnt,
+                data.lat - 0.0004,
+                data.alt || "90.648862227"
+            );
+            var position = ellipsoid.cartographicToCartesian(cartographic);
+            return position;
+        }
     }
 }
 
diff --git a/src/store/modules/popupParams.js b/src/store/modules/popupParams.js
index b77ed47..997c1e2 100644
--- a/src/store/modules/popupParams.js
+++ b/src/store/modules/popupParams.js
@@ -13,10 +13,10 @@
         panoramaPopup: false
     },
     mutations: {
-        SET_POPUPBGURL (state, popupBgUrl) {
+        SET_POPUPBGURL(state, popupBgUrl) {
             state.popupBgUrl = popupBgUrl
         },
-        SET_POPUPQRURL (state, pupupQRUrl) {
+        SET_POPUPQRURL(state, pupupQRUrl) {
             state.pupupQRUrl = pupupQRUrl
         },
         SET_TERMINUS (state, terminus) {
diff --git a/src/styles/mobile/popup.scss b/src/styles/mobile/popup.scss
index 8371b01..195c75b 100644
--- a/src/styles/mobile/popup.scss
+++ b/src/styles/mobile/popup.scss
@@ -1,7 +1,8 @@
 #mobile-map_popup_content {
+    //弹窗
     width: 100%;
     position: fixed;
-    z-index: 99;
+    z-index: 999;
     left: -1000px;
     box-sizing: border-box;
     #mobilePopup {
@@ -61,25 +62,98 @@
     }
 }
 
-// 比例尺
-#mobile-viewer-container .dc-distance-legend {
-    right: 5px !important;
-    left: auto !important;
-}
-// 缩放控制
-#mobile-viewer-container .dc-zoom-controller {
-    left: 20px !important;
-    top: 20px !important;
-    .zoom-in .refresh .zoom-out {
-        width: 32px !important;
-        height: 32px !important;
-        background-color: #c9302c !important;
+$controllerw: 35px !important;
+#mobile-viewer-container {
+    // 继承类
+    .flexCenter {
         display: flex !important;
         align-items: center !important;
         justify-content: center !important;
-        color: white !important;
-        font-size: 22px !important;
-        margin-bottom: 12px !important;
-        border-radius: 5px !important;
+    }
+    // 比例尺
+    .dc-distance-legend {
+        right: 5px !important;
+        left: auto !important;
+    }
+    // 缩放控制
+    .dc-zoom-controller {
+        width: 32px !important;
+        height: auto !important;
+        left: 20px !important;
+        top: 50px !important;
+        // z-index: 200;
+        background-color: transparent !important;
+        border: 1px solid transparent !important;
+
+        div:nth-child(1) {
+            // border-bottom: 1px solid #ebebeb;
+            margin-bottom: 37px !important;
+        }
+        div:nth-child(2) {
+            display: none !important;
+        }
+        div:nth-child(3) {
+            // border-top: 1px solid #ebebeb;
+        }
+        div {
+            width: $controllerw;
+            height: $controllerw;
+            position: relative !important;
+            left: -1px !important;
+            background-color: #c9302c !important;
+            color: white !important;
+            @extend .flexCenter;
+            border-radius: 5px;
+            svg {
+                width: 20px !important;
+                height: 20px !important;
+            }
+        }
+    }
+    //弹窗标签栏的标签
+    .m_p_center {
+        .el-tabs {
+            width: 100% !important;
+            height: 100% !important;
+            box-sizing: border-box;
+            .el-tabs__nav-scroll {
+                width: 100% !important;
+                @extend .flexCenter;
+            }
+            .el-tabs__content {
+                width: 100% !important;
+                height: calc(100% - 55px) !important;
+                box-sizing: border-box;
+                .el-tab-pane {
+                    width: 100% !important;
+                    height: 100% !important;
+                }
+            }
+        }
+    }
+
+    //地图底部按钮下拉菜单
+    .m-left-mobileCortrolButtom {
+        .el-dropdown {
+            width: 100% !important;
+            height: 100% !important;
+            @extend .flexCenter;
+            .el-icon-s-flag.icon {
+                position: relative;
+                top: 10px;
+                left: 10px;
+            }
+        }
+    }
+
+    //滚动条
+    /*定义滑块 内阴影+圆角*/
+    ::-webkit-scrollbar-thumb {
+        border-radius: 10px;
+        width: 2px !important;
+        /*滚动条的圆角*/
+        -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.9);
+        background-color: #f1f1f1;
+        /*滚动条的背景颜色*/
     }
 }

--
Gitblit v1.9.3