地图(用ECharts绘制)

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了地图(用ECharts绘制)相关的知识,希望对你有一定的参考价值。

目录

地图帮助我们快速看出不同地理位置上数据的差异

地图图表的两种使用方式

①百度地图API        ②矢量地图数据

基本实现

1.ECharts最基本的代码结构

2.准备中国地图的矢量数据

下载地址

3.使用Ajax获取矢量地图数据

4.在Ajax的回调函数中注册地图矢量数据,名字为chinaMap

5.配置geo的type为'map',map为'chinaMap'

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="lib/echarts.min.js"></script>
  <script src="lib/jquery-3.6.0.min.js"></script>
</head>
<body>
  <div style="width: 600px;height: 400px;"></div>
  <script>
      var mCharts = echarts.init(document.querySelector('div'))
      $.get('json/map/china.json', function(ret){
        echarts.registerMap('chinaMap', ret)
        var option = {
          geo: {
            type: 'map',
            map: 'chinaMap',    //这里的值要和上面registerMap的第一个参数一致
          }
        }
        mCharts.setOption(option)
      })  
  </script>
</body>
</html>

常用配置

缩放拖动        roam

名称显示         label

设置初始缩放比例        zoom

设置地图中心点        center

//其它代码和上面一样
<body>
  <div style="width: 600px;height: 400px;border: 1px solid red;"></div>
  <script>
      var mCharts = echarts.init(document.querySelector('div'))
      $.get('json/map/china.json', function(ret){
        echarts.registerMap('chinaMap', ret)
        var option = {
          geo: {
            type: 'map',
            map: 'chinaMap',    //这里的值要和上面registerMap的第一个参数一致
            roam: true,
            label: {
              show: true,
            },
            zoom: 2,
            center: [100,35]
          }
        }
        mCharts.setOption(option)
      })  
  </script>
</body>

常见效果

不同城市颜色不同

例子:显示中国各省的空气质量

1.显示基本的中国地图

2.城市的空气质量数据设置给series

3.将series下的数据和geo关联起来

4.结合visualMap使用

// 其它代码和上面一样
<script>
      //注意:airData中的name要和china.json中的name一致
      var airData = [
        { name: '北京市', value: 39.92 },
        { name: '天津市', value: 39.13 },
        { name: '河北省', value: 147 },
        { name: '山西省', value: 39 },
        { name: '内蒙古自治区', value: 58 },
        { name: '辽宁省', value: 50 },
        { name: '吉林省', value: 51 },
        { name: '黑龙江省', value: 114 },
        { name: '上海市', value: 31.22 },
        { name: '江苏省', value: 67 },
        { name: '浙江省', value: 84 },
        { name: '安徽省', value: 117 },
        { name: '福建省', value: 29 },
        { name: '江西省', value: 96 },
        { name: '山东省', value: 92 },
        { name: '河南省', value: 113 },
        { name: '湖北省', value: 273 },
        { name: '湖南省', value: 175 }, 
        { name: '广东省', value: 38 },
        { name: '广西壮族自治区', value: 59 },
        { name: '海南省', value: 54 },
        { name: '重庆市', value: 66 },
        { name: '四川省', value: 58 },
        { name: '贵州省', value: 71 },
        { name: '云南省', value: 25.04 },
        { name: '西藏自治区', value: 24 }, 
        { name: '陕西省', value: 61 },
        { name: '甘肃省', value: 99 },
        { name: '青海省', value: 57 },
        { name: '宁夏回族自治区', value: 52 }, 
        { name: '新疆维吾尔自治区', value: 84 },        
        { name: '台湾省', value: 88 },
        { name: '香港特别行政区', value: 66 },
        { name: '澳门特别行政区', value: 77 },
        { name: '南海诸岛', value: 55 },
      ] 
      var mCharts = echarts.init(document.querySelector('div'))
      $.get('json/map/china.json', function(ret){
        echarts.registerMap('chinaMap', ret)
        console.log(ret)
        var option = {
          geo: {
            type: 'map',
            map: 'chinaMap',    //这里的值要和上面registerMap的第一个参数一致
            roam: true,
            label: {
              show: true,       //展示标签
            },
            zoom: 1.2,
          },
          series: [
            {
              data: airData,
              geoIndex: 0,      //将空气质量的数据和第0个geo配置关联在一起
              type: 'map',
            }
          ],
          visualMap: {
            min: 0,
            max: 300,
            inRange: {
              color: ['white', 'red']   //控制颜色渐变的范围
            },
            calculable: true        //出现滑块
          }
        }
        mCharts.setOption(option)
      })  
  </script>

地图和散点图结合

1.给series增加新的对象

2.准备好散点数据,设置给新对象的data

3.配置新对象的type:effectScatter

4.让散点图使用地图坐标系统

5.让涟漪的效果更明显        rippleEffect: { scale:10 }

//其它代码和上面一样
var scatterData = [
        {
          value: [114.298572, 30.584355]
        }
      ]
      var mCharts = echarts.init(document.querySelector('div'))
      $.get('json/map/china.json', function(ret){
        echarts.registerMap('chinaMap', ret)
        console.log(ret)
        var option = {
          geo: {
            type: 'map',
            map: 'chinaMap',    
            roam: true,
            label: {
              show: true,       
            },
            zoom: 1.2,
          },
          series: [
            {
              data: airData,
              geoIndex: 0,      
              type: 'map',
            },
            {
              type: 'effectScatter',
              data: scatterData,        //配置散点的坐标数据
              coordinateSystem: 'geo',  //指明散点使用的坐标系统
              rippleEffect: {
                scale: 10
              }
            }
          ],
          visualMap: {
            min: 0,
            max: 300,
            inRange: {
              color: ['white', 'red']   
            },
            calculable: true        
          }
        }
        mCharts.setOption(option)
      })  

以上是关于地图(用ECharts绘制)的主要内容,如果未能解决你的问题,请参考以下文章

有没有熟悉echarts的大神,echarts绘制地图的时候,怎么让地图中某个固定区域显示特定的颜色?

ECharts 地图绘制与钻取简易接口

ECharts 地图绘制与钻取简易接口

echarts 绘制 地图柱状图

echarts 绘制 地图柱状图

用Pyecharts绘制网络关系图