Hwf 7 месяцев назад
Родитель
Сommit
15c3a852fc

BIN
src/assets/images/dotIcon/dot.gif


+ 61 - 23
src/views/disasterRiskMonitor/earthquakeRapidReport/earthquakeRapidReportDetail.vue

@@ -1,10 +1,11 @@
 <template>
   <div class="container">
-    <Map ref="mapRef" :zoom="4.7" :active-map="activeMap" class="containerHeight" />
+    <div id="aMap":style="{height: 'calc(100% - ' + height + 'px)'}" />
     <van-floating-panel
         v-model:height="height"
         :anchors="anchors"
         :content-draggable="false"
+        @height-change="handleResize"
     >
       <div class="info-content">
         <div class="info-item">
@@ -21,7 +22,7 @@
           </div>
           <div class="card-item">
             <div class="text">经纬度:</div>
-            <div>东经{{ detailData.lng2 }},北纬{{ detailData.lat2 }}</div>
+            <div>东经{{ detailData.lng }}°,北纬{{ detailData.lat }}°</div>
           </div>
           <div class="card-item">
             <div class="text">震源深度:</div>
@@ -34,11 +35,13 @@
 </template>
 
 <script lang="ts" setup name="EarthquakeRapidReportDetail">
+import {useAMap} from "@/hooks/AMap/useAMap";
+import dotImg from '@/assets/images/dotIcon/dot.gif';
+
 const route = useRoute();
 const anchors = ref([30, 300, window.innerHeight * 0.6, window.innerHeight * 0.95 - 55]);
 
-let mapRef = ref();
-let activeMap = ref("logical");
+let map, AMap;
 
 let height = ref(300);
 let detailId = ref();
@@ -50,32 +53,71 @@ let detailData = ref({
   distance: '',
   level: '',
   lng: '',
-  lng2: '',
-  lat: '',
-  lat2: ''
+  lat: ''
 });
 
+const handleResize = () => {
+  map.resize();
+};
+
 onMounted(() => {
   detailId.value = route.query.id;
-  if (!!detailId.value) {
-    detailData.value = {
-      id: '1',
-      name: '西藏日喀则市定日县',
-      time: '2025-01-07 15:04:31',
-      depth: '10',
-      distance: '2482',
-      lng2: '87.48°',
-      lat2: '28.64°',
-      level: '3.2'
-    };
-  }
+  const mapUtils = useAMap({});
+  mapUtils.initMap({
+    key: '9c5041381e5e824f9ee324d8f7a40150', // 申请好的Web端开发者Key,首次调用 load 时必填
+    securityJsCode: '4868bc1b8fac7d9e54e7279ed556879a', // 安全密钥
+    version: '2.0',
+    zoom: 4.7,
+    center: [110.925175, 21.678955],
+    dragEnable: true,
+    scrollWheel: true,
+    // 加载完成事件
+    onLoadCompleted: () => {
+      AMap = mapUtils.getAMap();
+      map = mapUtils.getMap();
+      if (!!detailId.value) {
+        detailData.value = {
+          id: '1',
+          name: '西藏日喀则市定日县',
+          time: '2025-01-07 15:04:31',
+          depth: '10',
+          distance: '2482',
+          lng: '87.48',
+          lat: '28.64',
+          level: '3.2'
+        };
+        const position = new AMap.LngLat(detailData.value.lng, detailData.value.lat);
+        const marker = new AMap.Marker({
+          position: position,
+          icon: new AMap.Icon({
+            size: new AMap.Size(106, 80), //图标所处区域大小
+            image: dotImg
+          }),
+          offset: new AMap.Pixel(-53, -40)
+        });
+
+        // 将Marker添加到地图上
+        map.add(marker);
+        map.setCenter(position);
+      }
+      window.addEventListener('resize', handleResize);
+    },
+    onMarkerClick: (data) => {}
+  });
 });
+
+onUnmounted(() => {
+  map = null;
+  AMap = null;
+  window.removeEventListener('resize', handleResize);
+})
 </script>
 
 <style lang="scss" scoped>
 .container {
   position: relative;
   overflow: hidden;
+  height: calc(100vh - 55px);
   .van-floating-panel {
     position: absolute;
   }
@@ -118,8 +160,4 @@ onMounted(() => {
     }
   }
 }
-.containerHeight {
-  height: calc(100vh - 55px);
-}
-
 </style>