From 01f9c88fd0ee768155e5b341c2bb95a85bc11a08 Mon Sep 17 00:00:00 2001
From: liuyg <liuyg@qq.com>
Date: Sat, 05 Mar 2022 17:49:36 +0800
Subject: [PATCH] ++

---
 src/components/mobilemap/index.vue |  323 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 198 insertions(+), 125 deletions(-)

diff --git a/src/components/mobilemap/index.vue b/src/components/mobilemap/index.vue
index a41a9ae..4d2bb22 100644
--- a/src/components/mobilemap/index.vue
+++ b/src/components/mobilemap/index.vue
@@ -29,9 +29,9 @@
     <!-- 活动窗口 -->
     <mobileActivity></mobileActivity>
     <!-- 盖住左下角 -->
-    <div class="cover_mobileMap">智慧社区</div>
+    <div class="cover_mobileMap">智慧校区</div>
     <!-- 指示器 -->
-    <div class="heights">{{ heights }}---{{ heights1 }}</div>
+    <!-- <div class="heights">{{ heights }}---{{ heights1 }}</div> -->
   </div>
 </template>
 <script>
@@ -87,6 +87,20 @@
         [116.41526036, 27.95352217, 100],
       ],
       areaLayer: null,
+      mapCenter: [115.871863, 28.743861, 400.0],
+      //控制4层缩放
+      onelayerNum: 80,
+      towlayerNum: 120,
+      threelayerNum: 160,
+      forlayerNum: 200,
+      intervallayerNum: 20,
+      frislayertHeight: 160, //默认高度
+      // onelayerNum: 80,
+      // towlayerNum: 200,
+      // threelayerNum: 320,
+      // forlayerNum: 440,
+      // intervallayerNum: 60,
+      // frislayertHeight: 320, //默认高度
     };
   },
   computed: {
@@ -102,6 +116,7 @@
       "dimensionData",
       "areaLayer", //绿布
       "areaLayerSelect", //绿布颜色控制
+      "urlParameterData", //url 参数
     ]),
   },
   watch: {
@@ -118,6 +133,7 @@
     },
   },
   mounted() {
+    // return;
     var DC = global.DC;
     this.DC = DC;
 
@@ -284,8 +300,11 @@
         // if (height > 2000) {
         //   conBack(2000);
         // }
-        if (height <= 79 && isSet) {
-          conBack(79);
+        // if (height <= 79 && isSet) {
+        //   conBack(79);
+        // }
+        if (height <= that.onelayerNum - 1 && isSet) {
+          conBack(that.onelayerNum - 1);
         }
         // if (height > 220 && height <= 280 && isSet) {
         //   conBack(280);
@@ -296,12 +315,33 @@
         // if (height > 340 && height <= 400 && isSet) {
         //   conBack(400);
         // }
-        if (height > 200 && isSet) {
-          conBack(200);
+        // if (height > 200 && isSet) {
+        //   conBack(200);
+        // }
+        if (height > that.forlayerNum && isSet) {
+          conBack(that.forlayerNum);
         }
       });
 
       // 按钮事件
+      let butSetViews = (num) => {
+        viewer.camera.flyTo({
+          destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(
+            viewer.camera.positionCartographic.longitude,
+            viewer.camera.positionCartographic.latitude,
+            num
+          ),
+          orientation: {
+            // 指向
+            heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
+            // 视角
+            pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
+            roll: 0.0,
+          },
+          duration: 0.5, // 定位的时间间隔
+        });
+        // overii();
+      };
       that.butbut = function () {
         //放大
         document.querySelector(".dc-zoom-controller").children[0].onclick =
@@ -310,60 +350,31 @@
               const height = Math.ceil(
                 viewer.camera.positionCartographic.height
               );
+              // if (height > 180) {
+              //   butSetViews(160);
+              //   return;
+              // }
 
-              if (height > 360) {
-                viewer.camera.setView({
-                  destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                    viewer.camera.positionCartographic.longitude,
-                    viewer.camera.positionCartographic.latitude,
-                    330
-                  ),
-                  orientation: {
-                    // 指向
-                    heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                    // 视角
-                    pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
-                    roll: 0.0,
-                  },
-                });
+              // if (height > 140) {
+              //   butSetViews(120);
+              //   return;
+              // }
 
+              // if (height > 100) {
+              //   butSetViews(80);
+              // }
+              if (height > that.forlayerNum - that.intervallayerNum) {
+                butSetViews(that.threelayerNum);
                 return;
               }
 
-              if (height > 300) {
-                viewer.camera.setView({
-                  destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                    viewer.camera.positionCartographic.longitude,
-                    viewer.camera.positionCartographic.latitude,
-                    270
-                  ),
-                  orientation: {
-                    // 指向
-                    heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                    // 视角
-                    pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
-                    roll: 0.0,
-                  },
-                });
-
+              if (height > that.threelayerNum - that.intervallayerNum) {
+                butSetViews(that.towlayerNum);
                 return;
               }
 
-              if (height > 240) {
-                viewer.camera.setView({
-                  destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                    viewer.camera.positionCartographic.longitude,
-                    viewer.camera.positionCartographic.latitude,
-                    200
-                  ),
-                  orientation: {
-                    // 指向
-                    heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                    // 视角
-                    pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
-                    roll: 0.0,
-                  },
-                });
+              if (height > that.towlayerNum - that.intervallayerNum) {
+                butSetViews(that.onelayerNum);
               }
             }
           };
@@ -374,56 +385,36 @@
               const height = Math.ceil(
                 viewer.camera.positionCartographic.height
               );
+              console.log(height);
 
-              if (height <= 240) {
-                viewer.camera.setView({
-                  destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                    viewer.camera.positionCartographic.longitude,
-                    viewer.camera.positionCartographic.latitude,
-                    270
-                  ),
-                  orientation: {
-                    // 指向
-                    heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                    // 视角
-                    pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
-                    roll: 0.0,
-                  },
-                });
+              // if (height <= 100) {
+              //   butSetViews(120);
+              // }
+
+              // if (height > 100 && height <= 140) {
+              //   butSetViews(160);
+              // }
+
+              // if (height > 140 && height < 180) {
+              //   butSetViews(200);
+              // }
+
+              if (height <= that.towlayerNum - that.intervallayerNum) {
+                butSetViews(that.towlayerNum);
               }
 
-              if (height > 240 && height <= 300) {
-                viewer.camera.setView({
-                  destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                    viewer.camera.positionCartographic.longitude,
-                    viewer.camera.positionCartographic.latitude,
-                    330
-                  ),
-                  orientation: {
-                    // 指向
-                    heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                    // 视角
-                    pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
-                    roll: 0.0,
-                  },
-                });
+              if (
+                height > that.towlayerNum - that.intervallayerNum &&
+                height <= that.threelayerNum - that.intervallayerNum
+              ) {
+                butSetViews(that.threelayerNum);
               }
 
-              if (height > 300 && height < 360) {
-                viewer.camera.setView({
-                  destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                    viewer.camera.positionCartographic.longitude,
-                    viewer.camera.positionCartographic.latitude,
-                    400
-                  ),
-                  orientation: {
-                    // 指向
-                    heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                    // 视角
-                    pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
-                    roll: 0.0,
-                  },
-                });
+              if (
+                height > that.threelayerNum - that.intervallayerNum &&
+                height < that.forlayerNum - that.intervallayerNum
+              ) {
+                butSetViews(that.forlayerNum);
               }
             }
           };
@@ -453,18 +444,6 @@
               },
               duration: 0.5, // 定位的时间间隔
             });
-            // that.$store.dispatch("mapFlyTo", {
-            //   //飞入
-            //   lntLat: [
-            //     viewer.camera.positionCartographic.longitude,
-            //     viewer.camera.positionCartographic.latitude,
-            //     num,
-            //   ],
-            //   heading: 0,
-            //   pitch: -90,
-            //   roll: 0.0,
-            //   noOpen: true,
-            // });
             overii();
           },
           isCameraTime = null;
@@ -478,7 +457,7 @@
             ii++;
             cutHeight = height - startHeight;
             // console.log(cutHeight);
-            console.log(height);
+            console.log(height, "see");
             that.heights = height;
             that.heights1 = cutHeight;
             // return;
@@ -497,29 +476,66 @@
             let takes = () => {
               if (ii != 1) {
                 if (cutHeight >= 0) {
-                  if (cutHeight > 3) {
-                    if (height >= 83 && height < 120) {
-                      setViews(120);
+                  if (cutHeight > 2) {
+                    // if (height >= 83 && height < 120) {
+                    //   setViews(120);
+                    // }
+                    // if (height >= 123 && height < 160) {
+                    //   setViews(160);
+                    // }
+                    // if (height >= 163 && height < 200) {
+                    //   setViews(200);
+                    // }
+                    if (
+                      height >= that.onelayerNum + 2 &&
+                      height < that.towlayerNum
+                    ) {
+                      setViews(that.towlayerNum);
                     }
-                    if (height >= 123 && height < 160) {
-                      setViews(160);
+                    if (
+                      height >= that.towlayerNum + 2 &&
+                      height < that.threelayerNum
+                    ) {
+                      setViews(that.threelayerNum);
                     }
-                    if (height >= 163 && height < 200) {
-                      setViews(200);
+                    if (
+                      height >= that.threelayerNum + 2 &&
+                      height < that.forlayerNum
+                    ) {
+                      setViews(that.forlayerNum);
                     }
                   }
                   //放大
                 } else {
                   //缩小
-                  if (cutHeight < -3) {
-                    if (height <= 200 && height > 157) {
-                      setViews(160);
+                  // if (cutHeight < -3) {
+                  //   if (height <= 200 && height > 157) {
+                  //     setViews(160);
+                  //   }
+                  //   if (height <= 157 && height > 117) {
+                  //     setViews(120);
+                  //   }
+                  //   if (height <= 117 && height > 80) {
+                  //     setViews(80);
+                  //   }
+                  if (cutHeight < -2) {
+                    if (
+                      height <= that.forlayerNum &&
+                      height > that.threelayerNum - 2
+                    ) {
+                      setViews(that.threelayerNum);
                     }
-                    if (height <= 157 && height > 117) {
-                      setViews(120);
+                    if (
+                      height <= that.threelayerNum - 2 &&
+                      height > that.towlayerNum - 2
+                    ) {
+                      setViews(that.towlayerNum);
                     }
-                    if (height <= 117 && height > 80) {
-                      setViews(80);
+                    if (
+                      height <= that.towlayerNum - 2 &&
+                      height > that.onelayerNum
+                    ) {
+                      setViews(that.onelayerNum);
                     }
                   }
                 }
@@ -840,6 +856,7 @@
               video: item.videourl,
               buts: ["定位", "实景", "图集"],
               panoramaurl: item.panoramaurl, //全景
+              fromTo: "mapClick",
             };
             // 定制化窗体
             // console.log(item, useData, "111111");
@@ -885,7 +902,7 @@
           };
           that.dimension == "2.5D"
             ? doit2(
-                [114.04020791, 27.62934732, 160.0],
+                [that.mapCenter[0], that.mapCenter[1], that.frislayertHeight],
                 // [114.04062292, 27.62666834, 220.0],
                 [
                   that.dimensionData.heading,
@@ -1014,6 +1031,11 @@
       //判断默认维度
       //原本默认是2.5d  改为3d默认时做出改变
       if (that.dimension == "2.5D") {
+        that.$store.commit("set_frislayertHeight", that.frislayertHeight); //送入默认弹窗高度
+        that.$store.commit("set_zoomRange", [
+          that.onelayerNum,
+          that.forlayerNum,
+        ]); //送入移动端缩放范围
         that.$store.commit("MSET_DIMENSION", "2.5D"); //切换2.5D设置
       } else if (that.dimension == "3D") {
         // setTimeout((res) => {
@@ -1071,6 +1093,47 @@
     DC.ready(initViewer);
     setTimeout(() => {
       that.butbut();
+      //判断是否有url参数
+      // console.log(that.urlParameterData);
+      if (typeof that.urlParameterData != "string") {
+        // console.log(that.urlParameterData);
+        that.$store.commit("initurlParameterLayer"); //初始化自定义标签图层
+        if (that.urlParameterData.methods == "goto") {
+          //url有定位的参数
+          // alert(that.urlParameterData.jd);
+          // alert(that.urlParameterData.wd);
+          // 创建标记
+          let dsa = {
+            list: [
+              {
+                name: that.urlParameterData.name || "无标题",
+                jd: that.urlParameterData.jd,
+                wd: that.urlParameterData.wd,
+              },
+            ],
+            clear: true,
+          };
+          that.$store.dispatch("addurlParameterLayerIcon", dsa);
+          // that.flytos(
+          //   //飞入标记
+          //   +that.urlParameterData.jd + 0.012,
+          //   +that.urlParameterData.wd
+          // );
+
+          let d = {
+            position: {},
+            lntLat: [+that.urlParameterData.jd, +that.urlParameterData.wd],
+            query: {
+              introduce: "自定义标签",
+              address: "",
+              ...(that.urlParameterData || {}),
+              lntLat: [+that.urlParameterData.jd, +that.urlParameterData.wd],
+            },
+            useJWD: true, //仅使用经纬度
+          };
+          that.$store.dispatch("setMobileWindows", d);
+        }
+      }
     }, 0);
   },
   methods: {
@@ -1085,6 +1148,16 @@
       };
       that.$store.dispatch("setMobileWindows", d);
     },
+    flytos(jd, wd) {
+      let height = this.frislayertHeight;
+      this.$store.dispatch("mapFlyTo", {
+        lntLat: [jd, wd, height], //114.04020791, 27.62934732
+        heading: 0,
+        pitch: -90,
+        roll: 0,
+        noOpen: true,
+      });
+    },
   },
 };
 </script>

--
Gitblit v1.9.3