首页 > 特效插件 > 统计图表 >  echarts.js+china.js实现中国地图各省数据正文

echarts.js+china.js实现中国地图各省数据

特效介绍

Echarts是百度开源的一个数据可视化JavaScript库,提供了丰富的图表类型,包括柱状图、折线图、饼图、散点图等多种图表类型。其中地图图表类型用于展示地理数据,需要引入相应的地图数据包以展示地图上的具体信息。

Echarts的地图数据包是分开的,针对不同的国家和地区有各自的JSON数据文件。对于中国地图来说,需要下载china.js这个文件。这个文件包含了中国地图的地理数据,包括省份、城市、特殊区域的边界坐标等信息,这对于在Echarts图表中显示中国地图是必需的。

echarts.js+china.js实现中国地图各省数据

使用方法

1、在HTML里面引入echarts.js

<script src="https://www.5imoban.net/download/echarts/echarts.4.9.0.js"></script>

2、在HTML里面引入构建中国地图的china.js

<script src="https://www.5imoban.net/download/china.js/china.min.js"></script>


3、案例实现代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=EDGE">
<title>echarts.js+china.js实现中国地图各省数据案例 - 我爱模板网 www.5imoban.net</title>
<style>
  #china-map {
    width: 90vw;
    height: 90vh;
    margin: auto;
  }
  #box{
    display:none;
    background-color: goldenrod;
    width: 180px;
    height: 30px;
  }
  #box-title{
    display:block;
  }
</style>
<script type="text/javascript" src="https://www.5imoban.net/download/echarts/echarts.4.9.0.js"></script>
<script type="text/javascript" src="https://www.5imoban.net/download/china.js/china.min.js"></script>
</head>
<body>
<div id="box">
  <div id="box-title"></div>
</div>
<div id="china-map"></div>
<script>
  var myChart = echarts.init(document.getElementById('china-map'));
  var provinces = ['shanghai', 'hebei', 'shanxi', 'neimenggu', 'liaoning', 'jilin', 'heilongjiang', 'jiangsu', 'zhejiang', 'anhui', 'fujian', 'jiangxi', 'shandong', 'henan', 'hubei', 'hunan', 'guangdong', 'guangxi', 'hainan', 'sichuan', 'guizhou', 'yunnan', 'xizang', 'shanxi1', 'gansu', 'qinghai', 'ningxia', 'xinjiang', 'beijing', 'tianjin', 'chongqing', 'xianggang', 'aomen'];
  var provincesText = ['上海', '河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '江苏', '浙江', '安徽', '福建', '江西', '山东', '河南', '湖北', '湖南', '广东', '广西', '海南', '四川', '贵州', '云南', '西藏', '陕西', '甘肃', '青海', '宁夏', '新疆', '北京', '天津', '重庆', '香港', '澳门'];
  var seriesData = [
    { name: '北京', value: 100 },
    { name: '天津', value: 97 },
    { name: '上海', value: 160 },
    { name: '重庆', value: 510 },
    { name: '河北', value: 350 },
    { name: '河南', value: 180 },
    { name: '云南', value: 0 },
    { name: '辽宁', value: 0 },
    { name: '黑龙江', value: 0 },
    { name: '湖南', value: 260 },
    { name: '安徽', value: 180 },
    { name: '山东', value: 60 },
    { name: '新疆', value: 250 },
    { name: '江苏', value: 260 },
    { name: '浙江', value: 400 },
    { name: '江西', value: 300 },
    { name: '湖北', value: 30 },
    { name: '广西', value: 260 },
    { name: '甘肃', value: 20 },
    { name: '山西', value: 360 },
    { name: '内蒙古', value: 0 },
    { name: '陕西', value: 0 },
    { name: '吉林', value: 0 },
    { name: '福建', value: 0 },
    { name: '贵州', value: 0 },
    { name: '广东', value: 597 },
    { name: '青海', value: 0 },
    { name: '西藏', value: 0 },
    { name: '四川', value: 60 },
    { name: '宁夏', value: 0 },
    { name: '海南', value: 60 },
    { name: '台湾', value: 0 },
    { name: '香港', value: 0 },
    { name: '澳门', value: 0 }
  ]
  initEcharts("china", "中国");
  // 初始化echarts
  function initEcharts(pName, Chinese_) {
    var tmpSeriesData = pName === "china" ? seriesData : [];
    var option = {
      title: {
        text: Chinese_ || pName,
        left: 'center'
      },
      visualMap: {
        show: true,
        min: 0,
        max: 600,
        text: ["高", "低"],
        realtime: true,
        calculable: true,
        color: ["#1a8ef0", "#04589f"],
      },
        tooltip: {
          trigger: 'item',
          formatter: '{b}<br/>{c} (p / km2)'
        },
      series: [
        {
          name: Chinese_ || pName,
          type: 'map',
          mapType: pName,
          roam: false,//是否开启鼠标缩放和平移漫游
          data: tmpSeriesData,
          top: "3%",//组件距离容器的距离
            zoom:1.1,
            selectedMode : 'single',
            label: {
                normal: {
                    show: true,//显示省份标签
                    textStyle:{color:"#fbfdfe"}//省份标签字体颜色
                },
                emphasis: {//对应的鼠标悬浮效果
                    show: true,
                    textStyle:{color:"#323232"}
                }
            },
            itemStyle: {
                normal: {
                    borderWidth: .5,//区域边框宽度
                    borderColor: '#0550c3',//区域边框颜色
                    areaColor:"#4ea397",//区域颜色
                },
                emphasis: {
                    borderWidth: .5,
                    borderColor: '#4b0082',
                    areaColor:"#ece39e",
                }
            },
        }
      ]
    };
    myChart.setOption(option);
    myChart.off("click");
    if (pName === "china") { // 全国时,添加click 进入省级
      myChart.on('click', function (param) {
        console.log(param.name);
        // 遍历取到provincesText 中的下标  去拿到对应的省js
        for (var i = 0; i < provincesText.length; i++) {
          if (param.name === provincesText[i]) {
            //显示对应省份的方法
            showProvince(provinces[i], provincesText[i]);
            break;
          }
        }
        if (param.componentType === 'series') {
          var provinceName =param.name;
          document.querySelector('#box').style.display = 'block'
          document.querySelector('#box-title').innerHTML = provinceName
        }
      });
    } else { // 省份,添加双击 回退到全国
      myChart.on("dblclick", function () {
        initEcharts("china", "中国");
      });
    }
  }
  // 展示对应的省
  function showProvince(pName, Chinese_) {
    //这写省份的js都是通过在线构建工具生成的,保存在本地,需要时加载使用即可,最好不要一开始全部直接引入。
    loadBdScript('$' + pName + 'JS', './js/map/province/' + pName + '.js', function () {
      initEcharts(Chinese_);
    });
  }
  // 加载对应的JS
  function loadBdScript(scriptId, url, callback) {
    var script = document.createElement("script");
    script.type = "text/javascript";
    if (script.readyState) {  //IE
      script.onreadystatechange = function () {
        if (script.readyState === "loaded" || script.readyState === "complete") {
          script.onreadystatechange = null;
          callback();
        }
      };
    } else {  // Others
      script.onload = function () {
        callback();
      };
    }
    script.src = url;
    script.id = scriptId;
    document.getElementsByTagName("head")[0].appendChild(script);
  };
</script>
</body>
</html>


下载 提取码/密码:(点击复制密码) 预览