From 1c31659852f8360cc0fdfac26aff51e54b8b8b67 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 27 十二月 2024 17:21:58 +0800
Subject: [PATCH] 添加排名展示;优化展示方式

---
 src/utils/map/index_old.js                               |    5 +-
 src/views/satellitetelemetry/SatelliteTelemetry.vue      |   13 ++++--
 src/components/animation/SatelliteAnimation.vue          |    6 ++
 src/views/satellitetelemetry/SatelliteTelemetry copy.vue |    4 +
 src/utils/map/grid.js                                    |   74 +++++++++++++++++++++++++++++++++++++
 src/utils/map/3dLayer.js                                 |    2 
 src/views/satellitetelemetry/SatelliteProxy.js           |    8 ++--
 7 files changed, 98 insertions(+), 14 deletions(-)

diff --git a/src/components/animation/SatelliteAnimation.vue b/src/components/animation/SatelliteAnimation.vue
index b3cfaaf..bc0845f 100644
--- a/src/components/animation/SatelliteAnimation.vue
+++ b/src/components/animation/SatelliteAnimation.vue
@@ -100,11 +100,15 @@
           const d = data[index];
           // SatelliteProxy.clearText(mapViews);
           // eslint-disable-next-line vue/no-mutating-props
-          that.mapViews.textViews = SatelliteProxy.drawDataText(
+          const { textViews, labelsLayer } = SatelliteProxy.drawDataText(
             that.mapViews.points,
             d,
             that.mapViews.textViews
           );
+          // eslint-disable-next-line vue/no-mutating-props
+          that.mapViews.textViews = textViews;
+          // eslint-disable-next-line vue/no-mutating-props
+          that.mapViews.labelsLayer = labelsLayer;
           SatelliteProxy.drawColor(that.mapViews.gridViews, d);
         }
       );
diff --git a/src/utils/map/3dLayer.js b/src/utils/map/3dLayer.js
index 419dd98..d68337c 100644
--- a/src/utils/map/3dLayer.js
+++ b/src/utils/map/3dLayer.js
@@ -30,7 +30,7 @@
   const fDatas = _factorDatas;
   const factor = _factor;
   drawMesh(fDatas, factor);
-  // console.log(map.getZoom());
+  console.log(map.getZoom());
 }
 
 var _maxHeight = 1000,
diff --git a/src/utils/map/grid.js b/src/utils/map/grid.js
index bb3807f..df44cf7 100644
--- a/src/utils/map/grid.js
+++ b/src/utils/map/grid.js
@@ -102,6 +102,42 @@
   });
 }
 
+/**
+ * 娴烽噺鏂囨湰鏍囨敞
+ */
+function textLabelMarker(position, text, direction) {
+  // eslint-disable-next-line no-undef
+  return new AMap.LabelMarker({
+    position: position,
+    zooms: [10, 20],
+    opacity: 1,
+    zIndex: 2,
+    // icon: {
+    //   image: 'https://a.amap.com/jsapi_demos/static/images/poi-marker.png',
+    //   anchor: 'bottom-center',
+    //   size: [25, 34],
+    //   clipOrigin: [459, 92],
+    //   clipSize: [50, 68]
+    // },
+    text: {
+      // 娉ㄦ剰鍐呭鏍煎紡蹇呴』鏄痵tring
+      content: text ? text + '' : '',
+      direction: direction ? direction : 'center',
+      style: {
+        fontSize: 12,
+        fillColor: '#fff',
+        // strokeColor: 'rgba(0, 0, 0, 0.5)',
+        // strokeWidth: 3,
+        backgroundColor: '#122b54a9'
+        // padding: [3, 10],
+        // backgroundColor: 'yellow',
+        // borderColor: '#ccc',
+        // borderWidth: 3
+      }
+    }
+  });
+}
+
 export default {
   parseGridPoint,
 
@@ -184,6 +220,44 @@
     }
   },
 
+  drawGridTextLabel(points, textViews, labelsLayer, direction) {
+    if (textViews) {
+      points.forEach((p, i) => {
+        textViews[i].setPosition(p.lnglat_GD);
+        textViews[i].setText({
+          content: p.data ? p.data + '' : ''
+        });
+      });
+      return { textViews, labelsLayer };
+    } else {
+      // 鍒涘缓涓�涓� LabelsLayer 瀹炰緥鏉ユ壙杞� LabelMarker锛孾LabelsLayer 鏂囨。](https://lbs.amap.com/api/jsapi-v2/documentation#labelslayer)
+      // eslint-disable-next-line no-undef
+      const labelsLayer = new AMap.LabelsLayer({
+        zooms: [12, 20],
+        zIndex: 1000,
+        // 寮�鍚爣娉ㄩ伩璁╋紝榛樿涓哄紑鍚紝v1.4.15 鏂板灞炴��
+        collision: false,
+        // 寮�鍚爣娉ㄦ贰鍏ュ姩鐢伙紝榛樿涓哄紑鍚紝v1.4.15 鏂板灞炴��
+        animation: false
+      });
+      const _textViews = [];
+      // const m = textLabelMarker([121.329723, 31.240625], 25);
+      // _textViews.push(m);
+      // labelsLayer.add(m);
+      points.forEach((p) => {
+        const m = textLabelMarker(p.lnglat_GD, p.data, direction);
+        _textViews.push(m);
+        // 灏� LabelMarker 瀹炰緥娣诲姞鍒� LabelsLayer 涓�
+        labelsLayer.add(m);
+      });
+      map.add(labelsLayer);
+      map.on('zoomend', () => {
+        console.log(map.getZoom());
+      });
+      return { textViews: _textViews, labelsLayer };
+    }
+  },
+
   drawGridColor(gridViews, texts, factorName) {
     // new Promise((resolve, reject) => {
     //   gridViews.forEach((g, i) => {
diff --git a/src/utils/map/index_old.js b/src/utils/map/index_old.js
index eb73075..8085547 100644
--- a/src/utils/map/index_old.js
+++ b/src/utils/map/index_old.js
@@ -72,8 +72,9 @@
 function _initControlbar() {
   controlbar = new AMap.ControlBar({
     position: {
-      right: '300px',
-      top: '260px'
+      right: '10px',
+      // top: '260px',
+      bottom: '0px'
     }
   });
   map.addControl(controlbar);
diff --git a/src/views/satellitetelemetry/SatelliteProxy.js b/src/views/satellitetelemetry/SatelliteProxy.js
index 9472516..bc6be57 100644
--- a/src/views/satellitetelemetry/SatelliteProxy.js
+++ b/src/views/satellitetelemetry/SatelliteProxy.js
@@ -31,25 +31,25 @@
 }
 
 // 缁樺埗鐩戞祴鏁版嵁鍊�
-function drawDataText(points, gridData, textViews) {
+function drawDataText(points, gridData, textViews, labelsLayer) {
   const data = gridData.map((v, i) => {
     return {
       lnglat_GD: points[i],
       data: v.pm25
     };
   });
-  return gridMapUtil.drawGridText(data, textViews);
+  return gridMapUtil.drawGridTextLabel(data, textViews, labelsLayer, 'bottom');
 }
 
 // 缁樺埗鐩戞祴鏁版嵁鎺掑悕鏂囨湰
-function drawRankText(points, gridData) {
+function drawRankText(points, gridData, textViews, labelsLayer) {
   const data = gridData.map((v, i) => {
     return {
       lnglat_GD: points[i],
       data: v.rank
     };
   });
-  return gridMapUtil.drawGridText(data);
+  return gridMapUtil.drawGridTextLabel(data, textViews, labelsLayer, 'top');
 }
 
 // 缁樺埗鐩戞祴鏁版嵁鍊煎搴旂綉鏍奸鑹�
diff --git a/src/views/satellitetelemetry/SatelliteTelemetry copy.vue b/src/views/satellitetelemetry/SatelliteTelemetry copy.vue
index 77117f5..2c516aa 100644
--- a/src/views/satellitetelemetry/SatelliteTelemetry copy.vue
+++ b/src/views/satellitetelemetry/SatelliteTelemetry copy.vue
@@ -115,11 +115,13 @@
 function drawTextAndColor(gridData) {
   // SatelliteProxy.clearText(mapViews);
   // 鏂囨湰鏍囪
-  mapViews.textViews = SatelliteProxy.drawDataText(
+  const { textViews, labelsLayer } = SatelliteProxy.drawDataText(
     mapViews.points,
     gridData,
     mapViews.textViews
   );
+  mapViews.textViews = textViews;
+  mapViews.labelsLayer = labelsLayer;
   SatelliteProxy.drawColor(mapViews.gridViews, gridData);
 }
 
diff --git a/src/views/satellitetelemetry/SatelliteTelemetry.vue b/src/views/satellitetelemetry/SatelliteTelemetry.vue
index 82cfe88..6b37603 100644
--- a/src/views/satellitetelemetry/SatelliteTelemetry.vue
+++ b/src/views/satellitetelemetry/SatelliteTelemetry.vue
@@ -94,11 +94,14 @@
 function drawTextAndColor(gridData) {
   // SatelliteProxy.clearText(mapViews);
   // 鏂囨湰鏍囪
-  mapViews.textViews = SatelliteProxy.drawDataText(
-    mapViews.points,
-    gridData,
-    mapViews.textViews
-  );
+  const { textViews: dataTxt, labelsLayer: dataLayer } =
+    SatelliteProxy.drawDataText(mapViews.points, gridData, mapViews.dataTxt);
+  mapViews.dataTxt = dataTxt;
+  mapViews.dataLayer = dataLayer;
+  const { textViews: rankTxt, labelsLayer: rankLayer } =
+    SatelliteProxy.drawRankText(mapViews.points, gridData, mapViews.rankTxt);
+  mapViews.rankTxt = rankTxt;
+  mapViews.rankLayer = rankLayer;
   SatelliteProxy.drawColor(mapViews.gridViews, gridData);
 }
 

--
Gitblit v1.9.3