使用Echarts实现可视化大屏页面的地图只显示吉林省

最终效果:

直接上代码,HTML部分:

<div class="box center map">
            <!-- 显示地图 -->
            <div ref="map" id="mapJiLin" style="width: 100%;height: 100%;"></div>
            <!-- 鼠标移入显示详细信息 -->
            <div class="ol-popup" id="popup" v-show="showTooltip">
              <div id="popup-content" v-html="tooltipContent"></div>
            </div>
          </div>

JS部分:

首先需要准备一个存放地理位置信息的json文件:下载地图信息json文件地址

// 初始化加载吉林省地图
    async init() {
      let myChart = this.$echarts.init(document.getElementById("mapJiLin"));
      this.$echarts.registerMap("吉林省", map_json);
      this.scatterData = [
        {
          value: [126.4233, 41.9408],
          color: 'red',
          wellId: "井号:YD-QQK-4-00881",
          time: "运行时间:8h",
          liquid: "昨日产液量:6.85m³/d",
          currentCond: "当前工况:工作正常"
        },
        {
          value: [124.8251, 45.1414],
          color: 'red',
          wellId: "井号:YD-QQK-4-00882",
          time: "运行时间:8.5h",
          liquid: "昨日产液量:6.85m³/d",
          currentCond: "当前工况:供液不足"
        },
        {
          value: [125.9427, 41.7364],
          color: 'green',
          wellId: "井号:YD-QQK-4-00883",
          time: "运行时间:9h",
          liquid: "昨日产液量:6.85m³/d",
          currentCond: "当前工况:工作正常"
        },
        {
          value: [126.5563, 43.8378],
          color: 'green',
          wellId: "井号:YD-QQK-4-00884",
          time: "运行时间:10h",
          liquid: "昨日产液量:6.85m³/d",
          currentCond: "当前工况:供液不足"
        },
        {
          value: [125.1436, 42.8879],
          color: 'red',
          wellId: "井号:YD-QQK-4-00885",
          time: "运行时间:11h",
          liquid: "昨日产液量:6.85m³/d",
          currentCond: "当前工况:工作正常"
        }
      ]
      myChart.setOption({
        geo: {
          map: "吉林省", // 此处名称一定要对应读取本地文件时自定义的名称
          roam: false,
          zoom: 1.3, // 缩放等级
          center: [126.171208, 43.703954], //当前视角的中心点
          itemStyle: {
            normal: {
              areaColor: '#1f51c4',
              shadowColor: '#182f68',
              shadowOffsetX: 0,
              shadowOffsetY: 25
            },
            emphasis: {
              areaColor: '#2ab8ff',
              borderWidth: 0,
              color: 'green',
              label: {
                show: false
              },
            },
          },
          label: {
            show: false,
            distance: 5,
            textStyle: {
              color: '#fff',
              fontSize: 12,
              backgroundColor: 'rgba(0, 23, 11, 0)', // 字体颜色
            }
          },
        },
        series: [
          {
            type: 'map',
            center: [126.171208, 43.703954], // 当前视角的中心点
            roam: false,
            label: {
              normal: {
                show: true,
                textStyle: {
                  color: '#fff',
                },
                lineHeight: 20,
              },
              emphasis: {
                textStyle: {
                  color: '#fff',
                },
              },
            },
            itemStyle: {
              normal: {
                borderColor: '#2ab8ff',
                borderWidth: 0.5,
                areaColor: '#12235c',
              },
              emphasis: {
                areaColor: '#2ab8ff',
                borderWidth: 0,
                color: 'green',
              },
            },
            zoom: 1.2,
            map: "吉林省"
          },
          {
            type: 'scatter',
            coordinateSystem: 'geo',
            data: this.scatterData.map(item => {
              return {
                value: item.value,
                color: item.color,
                wellId: item.wellId,
                time: item.time,
                liquid: item.liquid,
                currentCond: item.currentCond
              };
            }),
            symbolSize: 15, // 散点的大小
            label: {
              show: false
            },
            itemStyle: {
              color: function(params) {
                return params.data.color;
              }
            },
          }
        ],
      });
      // 点击事件,显示详细信息
      myChart.on('mousemove', params => {
        if(params.componentType === 'series' && params.seriesType === 'scatter') {
          this.showTooltip = true;
          this.tooltipContent = `<div>
            <p style='margin-bottom: 5px;'>${params.data.wellId}</p>
            <p style='margin-bottom: 5px;'>${params.data.time}</p>
            <p style='margin-bottom: 5px;'>${params.data.liquid}</p>
            <p>${params.data.currentCond}</p>
          </div>`;
          // 获取点击位置的坐标
          const posX = params.event.offsetX;
          const posY = params.event.offsetY;
          // 设置tooltip的位置
          const tooltip = document.querySelector('.ol-popup');
          tooltip.style.top = posY - 40 + 'px';
          tooltip.style.left = posX + 20 + 'px';
        } else {
          this.showTooltip = false;
        }
      });
      window.addEventListener('resize', () => {
        myChart.resize();
      });
    }

CSS部分:

.ol-popup {
    background-color: #38465d;
    padding: 10px;
    border-radius: 3px;
    position: absolute;
    top: 0;
    left: 0;
  }
  #popup-content {
    text-align: left;
  }
  .tooltip-content p {
    margin-bottom: 5px;
  }

注意:如果只需要显示吉林省的地图,json文件中就只保留吉林省的地图信息就可以了!!!

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值