From d83a3ab6e99e364d45cf85a5c00367c583ef4e31 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期一, 24 二月 2025 17:15:22 +0800
Subject: [PATCH] Merge branch 'master-temp' of ssh://114.215.109.124:29418/satellite-vue into master-temp

---
 src/views/satellitetelemetry/SatelliteProxy.js |  146 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 128 insertions(+), 18 deletions(-)

diff --git a/src/views/satellitetelemetry/SatelliteProxy.js b/src/views/satellitetelemetry/SatelliteProxy.js
index 1b36366..39ae4b1 100644
--- a/src/views/satellitetelemetry/SatelliteProxy.js
+++ b/src/views/satellitetelemetry/SatelliteProxy.js
@@ -1,6 +1,43 @@
 import calculate from '@/utils/map/calculate';
 import gridMapUtil from '@/utils/map/grid';
-import { map } from '@/utils/map/index_old';
+import { map, onMapMounted } from '@/utils/map/index_old';
+
+let districtPolygon;
+// 缁樺埗鍖哄幙杈圭晫
+function drawDistrict(districtName, isNew) {
+  onMapMounted(() => {
+    if (districtPolygon && !isNew) {
+      map.remove(districtPolygon);
+      map.add(districtPolygon);
+    } else {
+      // eslint-disable-next-line no-undef
+      var district = new AMap.DistrictSearch({
+        extensions: 'all', //杩斿洖琛屾斂鍖鸿竟鐣屽潗鏍囩瓑鍏蜂綋淇℃伅
+        level: 'district' //璁剧疆鏌ヨ琛屾斂鍖虹骇鍒负鍖�
+      });
+      district.search(districtName, function (status, result) {
+        var bounds = result.districtList[0].boundaries; //鑾峰彇鏈濋槼鍖虹殑杈圭晫淇℃伅
+        if (bounds) {
+          for (var i = 0; i < bounds.length; i++) {
+            //鐢熸垚琛屾斂鍖哄垝 polygon
+            // eslint-disable-next-line no-undef
+            districtPolygon = new AMap.Polygon({
+              map: map, //鏄剧ず璇ヨ鐩栫墿鐨勫湴鍥惧璞�
+              strokeWeight: 2, //杞粨绾垮搴�
+              path: bounds[i], //澶氳竟褰㈣疆寤撶嚎鐨勮妭鐐瑰潗鏍囨暟缁�
+              fillOpacity: 0, //澶氳竟褰㈠~鍏呴�忔槑搴�
+              fillColor: '#CCF3FF', //澶氳竟褰㈠~鍏呴鑹�
+              // strokeColor: '#ffffff' //绾挎潯棰滆壊
+              strokeColor: '#0552f7', //绾挎潯棰滆壊
+              zIndex: 9
+            });
+          }
+          map.setFitView(); //灏嗚鐩栫墿璋冩暣鍒板悎閫傝閲�
+        }
+      });
+    }
+  });
+}
 
 function clearAll(mapViews) {
   if (mapViews) {
@@ -14,26 +51,56 @@
 }
 
 function clearText(mapViews) {
-  if (mapViews && typeof mapViews.textViews === 'object') {
-    map.remove(mapViews.textViews);
+  if (mapViews) {
+    if (typeof mapViews.dataTxt === 'object') {
+      map.remove(mapViews.dataTxt);      
+    }
+    if (typeof mapViews.dataLayer === 'object') {
+      map.remove(mapViews.dataLayer);      
+    }
+    if (typeof mapViews.rankTxt === 'object') {
+      map.remove(mapViews.rankTxt);      
+    }
+    if (typeof mapViews.rankLayer === 'object') {
+      map.remove(mapViews.rankLayer);      
+    }
   }
 }
 
 // 缁樺埗缃戞牸绾�
-function drawPolyline(gridInfo) {
+function drawPolyline(gridInfo, event) {
   // 缁樺埗缃戞牸
   const points = gridInfo.map((v) => {
     return calculate.wgs84_To_Gcj02(v.longitude, v.latitude);
-    // return [v.longitude, v.latitude]
+    // return [v.longitude, v.latitude];
   });
-  const gridPoints = gridMapUtil.parseGridPoint(points);
-  const gridViews = gridMapUtil.drawPolylines(gridPoints);
+  // const gridPoints = gridMapUtil.parseGridPoint(points);
+  // console.log('gridPoints:', gridPoints);
+
+  const gridPoints = gridInfo.map((v, i) => {
+    return {
+      path: [
+        calculate.wgs84_To_Gcj02(v.point1Lon, v.point1Lat),
+        calculate.wgs84_To_Gcj02(v.point2Lon, v.point2Lat),
+        calculate.wgs84_To_Gcj02(v.point3Lon, v.point3Lat),
+        calculate.wgs84_To_Gcj02(v.point4Lon, v.point4Lat)
+        // [v.point1Lon, v.point1Lat],
+        // [v.point2Lon, v.point2Lat],
+        // [v.point3Lon, v.point3Lat],
+        // [v.point4Lon, v.point4Lat]
+      ]
+        // eslint-disable-next-line no-undef
+        .map((d) => new AMap.LngLat(d[0], d[1])),
+      extData: points[i]
+    };
+  });
+  const gridViews = gridMapUtil.drawPolylines({ points: gridPoints, event });
   return { gridViews, gridPoints, points };
 }
 
 // 缁樺埗鐩戞祴鏁版嵁鍊�
-function drawDataText(points, gridData, textViews, labelsLayer) {
-  const data = gridData.map((v, i) => {
+function drawDataText(points, gridDataDetail, textViews, labelsLayer) {
+  const data = gridDataDetail.map((v, i) => {
     return {
       lnglat_GD: points[i],
       // data: v.pm25 ? (v.pm25 + '渭g/m鲁') : ''
@@ -41,12 +108,12 @@
     };
   });
   // return gridMapUtil.drawGridTextLabel(data, textViews, labelsLayer, 'bottom');
-  return gridMapUtil.drawGridText(data, textViews, 'top-center');
+  return gridMapUtil.drawGridText(data, textViews, 'top-center', 'data');
 }
 
 // 缁樺埗鐩戞祴鏁版嵁鎺掑悕鏂囨湰
-function drawRankText(points, gridData, textViews, labelsLayer) {
-  const data = gridData.map((v, i) => {
+function drawRankText(points, gridDataDetail, textViews, labelsLayer) {
+  const data = gridDataDetail.map((v, i) => {
     return {
       lnglat_GD: points[i],
       // data: v.pm25 ? ('鎺掑悕: ' + v.rank) : ''
@@ -54,22 +121,65 @@
     };
   });
   // return gridMapUtil.drawGridTextLabel(data, textViews, labelsLayer, 'top');
-  return gridMapUtil.drawGridText(data, textViews, 'bottom-center');
+  return gridMapUtil.drawGridText(data, textViews, 'bottom-center', 'rank');
 }
 
 // 缁樺埗鐩戞祴鏁版嵁鍊煎搴旂綉鏍奸鑹�
-function drawColor(gridViews, gridData, customColor) {
-  const pm25Data = gridData.map((v) => {
-    return v.pm25;
+function drawColor({
+  gridViews,
+  points,
+  gridDataDetail,
+  lastGridViews,
+  opacity,
+  zIndex,
+  customColor
+}) {
+  // 鏍规嵁鏁版嵁绛涢�夋湁鏁版嵁鐨勭綉鏍�
+  const res = [];
+  // 浠ュ強瀵瑰簲鐨勪腑蹇冪偣鍧愭爣
+  const pointsRes = [];
+  gridDataDetail.forEach((d) => {
+    // 鏍规嵁鏁版嵁鍏宠仈鐨勭綉鏍肩紪鍙凤紝鎵惧埌瀵瑰簲缃戞牸
+    const cellId = d.cellId;
+    if (cellId > gridViews.length) {
+      throw Error(
+        '閬ユ祴鏁版嵁鐨勭綉鏍肩储寮曠紪鍙疯秴鍑虹綉鏍肩粍鑼冨洿锛屾暟鎹拰缃戞牸缁勫彲鑳戒笉瀵瑰簲'
+      );
+    }
+    res.push(gridViews[cellId - 1]);
+    pointsRes.push(points[cellId - 1]);
   });
+
+  // 鏍规嵁缁樺埗棰滆壊鏂瑰紡缁樺埗缃戞牸
+  let resGridViews;
   if (customColor) {
-    gridMapUtil.drawGridColorCustom(gridViews, pm25Data);
+    resGridViews = gridMapUtil.drawGridColorCustom(
+      res,
+      gridDataDetail,
+      opacity,
+      zIndex
+    );
   } else {
-    gridMapUtil.drawGridColor(gridViews, pm25Data, 'PM25');
+    resGridViews = gridMapUtil.drawGridColor(
+      res,
+      gridDataDetail,
+      'PM25',
+      opacity,
+      zIndex
+    );
   }
+
+  if (lastGridViews) {
+    map.remove(lastGridViews);
+  }
+  map.add(resGridViews);
+  map.setFitView(resGridViews);
+
+  return { resGridViews, pointsRes };
 }
 
 export default {
+  drawDistrict,
   drawPolyline,
   drawDataText,
   drawRankText,

--
Gitblit v1.9.3