Echarts.js+jquery.js實現中國疫情地圖

轉自

在這裏插入圖片描述

Echarts.js中國地圖實例

數據使用騰訊的數據:接口地址

option參數的含義:

title:顯示圖標的標題
tooltip:展示提示框,當你鼠標點擊某個省份時用來展示對應的確診人數
legend:圖例,設置圖例展示的位置
visualMap:視覺映射,每個顏色代表什麼含義
series:地圖數據可視化,添加data數據

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>疫情地圖展示</title>
  <style>
    .container {
      width: 1200px;
      margin: 0 auto;
    }

    #myEcharts {
      width: 800px;
      height: 500px;
      border: solid 1px red;
      margin: 0 auto;
    }
  </style>
  <script src="https://www.echartsjs.com/examples/vendors/jquery/jquery.js"></script>
  <!-- 引入 echarts.js -->
  <script src="https://www.echartsjs.com/examples/vendors/echarts/echarts.min.js?_v_=1578305236132"></script>
  <!--引入中國的地圖數據js文件,引入後會自動註冊地圖名字和數據-->
  <script src="https://www.echartsjs.com/examples/vendors/echarts/map/js/china.js?_v_=1578305236132"></script>

</head>

<body>
<div class="container">
  <h3>累計確診人數如下:</h3>
  <!--爲echarts準備一個dom容器-->
  <div id="myEcharts"></div>
</div>


<script>
  //初始化echarts實例
  var myChart = echarts.init(document.getElementById('myEcharts'));
  // 指定圖表的配置項和數據
  option = {
    title: {
      text: '中國疫情圖',
      left: 'center'
    },
    tooltip: {
      trigger: 'item'
    },
    legend: {
      orient: 'vertical',
      left: 'left',
      data: ['中國疫情圖']
    },
    visualMap: {
      type: 'piecewise',
      pieces: [
        { min: 1000, max: 1000000, label: '大於等於1000人', color: '#372a28' },
        { min: 500, max: 999, label: '確診500-999人', color: '#4e160f' },
        { min: 100, max: 499, label: '確診100-499人', color: '#974236' },
        { min: 10, max: 99, label: '確診10-99人', color: '#ee7263' },
        { min: 1, max: 9, label: '確診1-9人', color: '#f5bba7' },
      ],
      color: ['#E0022B', '#E09107', '#A3E00B']
    },
    toolbox: {
      show: true,
      orient: 'vertical',
      left: 'right',
      top: 'center',
      feature: {
        mark: { show: true },
        dataView: { show: true, readOnly: false },
        restore: { show: true },
        saveAsImage: { show: true }
      }
    },
    roamController: {
      show: true,
      left: 'right',
      mapTypeControl: {
        'china': true
      }
    },
    series: [
      {
        name: '確診數',
        type: 'map',
        mapType: 'china',
        roam: false,
        label: {
          show: true,
          color: 'rgb(249, 249, 249)'
        },
        data: []
      }
    ]
  };

  //使用指定的配置項和數據顯示圖表
  myChart.setOption(option);

  //獲取數據
  function getData() {
    $.ajax({
      url: "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5",
      dataType: "jsonp",
      success: function (data) {
        //  console.log(data.data)
        var res = data.data || "";
        res = JSON.parse(res);
        var newArr = [];
        //newArr的數據格式爲:
        // [{
        //   name: '北京11',
        //   value: 212
        // }, {
        //   name: '天津',
        //   value: 60
        // }]
        if (res) {
          //獲取到各個省份的數據
          var province = res.areaTree[0].children;
          for (var i = 0; i < province.length; i++) {
            var json = {
              name: province[i].name,
              value: province[i].total.confirm
            }
            newArr.push(json)
          }
          console.log(newArr)
          console.log(JSON.stringify(newArr))
          //使用指定的配置項和數據顯示圖表
          myChart.setOption({
            series: [
              {
                name: '確診數',
                type: 'map',
                mapType: 'china',
                roam: false,
                label: {
                  show: true,
                  color: 'rgb(249, 249, 249)'
                },
                data: newArr
              }
            ]
          });
        }
      }

    })
  }
  getData();

</script>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章