Pārlūkot izejas kodu

地图轮播功能优化

zhbyyy 2 gadi atpakaļ
vecāks
revīzija
ec2352eb7d
1 mainītis faili ar 229 papildinājumiem un 38 dzēšanām
  1. 229 38
      investment/js/investHomeGroup.js

+ 229 - 38
investment/js/investHomeGroup.js

@@ -3169,7 +3169,8 @@ let app = new Vue({
       return res
     },
     initProvinceChart () {
-      var data = center5
+      var data = []
+      this.geoCoordMap = [] 
       var moveLine = {
         normal: [
           {
@@ -3263,6 +3264,7 @@ let app = new Vue({
         var name = v.properties.name
         // 地区经纬度
         this.geoCoordMap[name] = v.properties.centroid
+        data.push({ name: v.properties.name, value: v.properties.centroid[0], value2: v.properties.centroid[1] })
       })
       let option = {
         tooltip: {
@@ -3496,20 +3498,102 @@ let app = new Vue({
     },
     initChinaChart () {
       var data = []
+      this.geoCoordMap = [] 
+      // var moveLine = {
+      //   normal: [
+      //     {
+      //       fromName: '太原市',
+      //       toName: '吕梁市',
+      //       coords: [
+      //         [112.3352, 37.9413],
+      //         [111.3574, 37.7325],
+      //       ],
+      //     },
+      //     {
+      //       fromName: '太原市',
+      //       toName: '忻州市',
+      //       coords: [
+      //         [112.3352, 37.9413],
+      //         [112.4561, 38.8971],
+      //       ],
+      //     },
+      //     {
+      //       fromName: '太原市',
+      //       toName: '临汾市',
+      //       coords: [
+      //         [112.3352, 37.9413],
+      //         [111.4783, 36.1615],
+      //       ],
+      //     },
+      //     {
+      //       fromName: '太原市',
+      //       toName: '阳泉市',
+      //       coords: [
+      //         [112.3352, 37.9413],
+      //         [113.4778, 38.0951],
+      //       ],
+      //     },
+      //     {
+      //       fromName: '太原市',
+      //       toName: '晋中市',
+      //       coords: [
+      //         [112.3352, 37.9413],
+      //         [112.7747, 37.37],
+      //       ],
+      //     },
+      //     {
+      //       fromName: '太原市',
+      //       toName: '运城市',
+      //       coords: [
+      //         [112.3352, 37.9413],
+      //         [111.1487, 35.2002],
+      //       ],
+      //     },
+      //     {
+      //       fromName: '太原市',
+      //       toName: '大同市',
+      //       coords: [
+      //         [112.3352, 37.9413],
+      //         [113.7854, 39.8035],
+      //       ],
+      //     },
+      //     {
+      //       fromName: '太原市',
+      //       toName: '晋城市',
+      //       coords: [
+      //         [112.3352, 37.9413],
+      //         [112.7856, 35.6342],
+      //       ],
+      //     },
+      //     {
+      //       fromName: '太原市',
+      //       toName: '长治市',
+      //       coords: [
+      //         [112.3352, 37.9413],
+      //         [112.8625, 36.4746],
+      //       ],
+      //     },
+      //     {
+      //       fromName: '太原市',
+      //       toName: '朔州市',
+      //       coords: [
+      //         [112.3352, 37.9413],
+      //         [113.0713, 39.6991],
+      //       ],
+      //     },
+      //   ],
+      // }
       /*获取地图数据*/
       this.mapChart = echarts.init(this.$refs['echarts-map'])
-      echarts.registerMap('china', china)
-      var mapFeatures = echarts.getMap('china').geoJson.features
+      echarts.registerMap('shanxi', china)
+      var mapFeatures = echarts.getMap('shanxi').geoJson.features
       mapFeatures.forEach(v => {
         // 地区名称
         var name = v.properties.name
         // 地区经纬度
-        // this.geoCoordMap[name] = v.properties.centroid
         this.geoCoordMap[name] = v.properties.cp
-        data.push({ name: v.properties.name, value1: v.properties.cp[0], value2: v.properties.cp[1] })
+        data.push({ name: v.properties.name, value: v.properties.cp[0], value2: v.properties.cp[1] })
       })
-      // <p>当前阶段:<span>可论证阶段</span></p>
-      // <p>时间节点:<span>2021.10-2022.10</span></p>
       let option = {
         tooltip: {
           padding: 15,
@@ -3530,34 +3614,49 @@ let app = new Vue({
               type: 'highlight',
               name: params.name,
             })
-            if (params.componentSubType == 'lines') {
-              return
-            }
-            if (params.componentSubType == 'scatter') {
-              let tipHtml = `
-              <div class="tooltip-cont">
-                <p>项目数量:<span>${data[params.dataIndex].value2}个</span></p>
-                <p>总投资额:<span>${params.data.value[2]}亿</span></p>
-            </div>`
-              callback(ticket, tipHtml)
-              return ''
-              return tipHtml
-            }
-            if (params.componentSubType == 'map') {
-              let tipHtml = `
-              <div class="tooltip-cont">
-              <p>项目数量:<span>${data[params.dataIndex].value2}个</span></p>
-                <p>总投资额:<span>${params.data.value}亿</span></p>
-            </div>`
-              callback(ticket, tipHtml)
-              return tipHtml
-            }
+            // if (params.componentSubType == 'lines') {
+            //   return
+            // }
+            // if (params.componentSubType == 'scatter') {
+            //   let tipHtml = `
+            //   <div class="tooltip-cont">
+            //     <p>项目数量:<span>${data[params.dataIndex].value2}个</span></p>
+            //     <p>总投资额:<span>${params.data.value[2]}亿</span></p>
+            // </div>`
+            //   callback(ticket, tipHtml)
+            //   return tipHtml
+            // }
+            // if (params.componentSubType == 'map') {
+            //   let tipHtml = `
+            //   <div class="tooltip-cont">
+            //   <p>项目数量:<span>${data[params.dataIndex].value2}个</span></p>
+            //     <p>总投资额:<span>${params.data.value}亿</span></p>
+            // </div>`
+            //   callback(ticket, tipHtml)
+            //   return tipHtml
+            // }
 
           },
         },
+        visualMap: {
+          show: false,
+          min: 0,
+          max: 300,
+          right: 0,
+          bottom: 0,
+          text: ['高', '低'],
+          textStyle: {
+            color: '#f1f1f1'
+          },
+          realtime: false,
+          calculable: false,
+          inRange: {
+            color: ['lightskyblue', '#2754b7']
+          }
+        },
         geo: {
           show: true,
-          map: 'china',
+          map: 'shanxi',
           layoutCenter: ['50%', '50%'], //地图位置
           layoutSize: '65%',
           zoom: 1.5,
@@ -3572,14 +3671,13 @@ let app = new Vue({
           roam: false,
           itemStyle: {
             normal: {
-              areaColor: '#70b0ea',
+              areaColor: '#1946a8',
               shadowColor: '#1946a8',
               borderWidth: 1, //设置外层边框
               borderColor: '#1946a8',
-              shadowOffsetX: 2,
-              shadowOffsetY: 1,
-              shadowBlur: 2,
-
+              shadowOffsetX: 5,
+              shadowOffsetY: 2,
+              shadowBlur: 1,
             },
             emphasis: {
               areaColor: '#1946a8',
@@ -3613,12 +3711,105 @@ let app = new Vue({
             },
             itemStyle: {
               normal: {
-                color: 'rgba(0,0,0,0)',
+                color: '#000',
                 borderWidth: 2,
                 borderColor: '#fff',
               },
             },
           },
+          {
+            type: 'map',
+            map: this.mapName,
+            geoIndex: 0,
+            aspectScale: 1.5, //长宽比
+            showLegendSymbol: true, // 存在legend时显示
+            label: {
+              normal: {
+                show: true,
+              },
+              emphasis: {
+                show: false,
+                textStyle: {
+                  color: '#fff',
+                },
+              },
+            },
+            roam: true,
+            itemStyle: {
+              normal: {
+                areaColor: '#031525',
+                borderColor: '#3B5077',
+              },
+              emphasis: {
+                areaColor: '#2B91B7',
+              },
+            },
+            animation: false,
+            data: data,
+          },
+          // {
+          //   name: '点',
+          //   type: 'scatter',
+          //   coordinateSystem: 'geo',
+          //   zlevel: 6,
+          // },
+          // {
+          //   name: 'Top 5',
+          //   type: 'effectScatter',
+          //   coordinateSystem: 'geo',
+          //   data: this.convertData(
+          //     data
+          //       .sort(function (a, b) {
+          //         return b.value - a.value
+          //       })
+          //       .slice(0, 5)
+          //   ),
+          //   symbolSize: function (val) {
+          //     return 15
+          //   },
+          //   showEffectOn: 'render',
+          //   rippleEffect: {
+          //     brushType: 'stroke',
+          //   },
+          //   hoverAnimation: true,
+          //   label: {
+          //     normal: {
+          //       formatter: '{b}',
+          //       position: 'left',
+          //       show: false,
+          //     },
+          //   },
+          //   itemStyle: {
+          //     normal: {
+          //       color: 'yellow',
+          //       shadowBlur: 10,
+          //       shadowColor: 'yellow',
+          //     },
+          //   },
+          //   zlevel: 1000,
+          // },
+          // {
+          //   name: '线路',
+          //   type: 'lines',
+          //   zlevel: 2,
+          //   effect: {
+          //     show: true,
+          //     period: 4, //箭头指向速度,值越小速度越快
+          //     trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重
+          //     symbol: 'arrow', //箭头图标
+          //     symbolSize: 5, //图标大小
+          //   },
+          //   lineStyle: {
+          //     normal: {
+          //       color: '#00FFFF',
+          //       width: 1,
+          //       type: 'dashed',
+          //       opacity: 0.5, //尾迹线条透明度
+          //       curveness: -0.3, //尾迹线条曲直度
+          //     },
+          //   },
+          //   data: moveLine.normal,
+          // },
         ],
       }
       let that = this
@@ -3632,8 +3823,8 @@ let app = new Vue({
       })
       tools.loopShowTooltip(this.mapChart, option, {
         interval: 2000,
-        loopSeries: true,
-      })
+        loopSeries: false,
+      });
       this.mapChart.setOption(option)
     },
     initChartC3 () {