05-Echarts矢量地图实现、及常见效果

7 篇文章 0 订阅
7 篇文章 0 订阅
本文介绍了如何使用ECharts库结合矢量地图数据实现交互式地图,包括地图的基本特点、加载数据、配置选项等。示例中展示了缩放拖动、地图与visualMap结合展示空气质量、以及地图与散点图结合显示城市空气质量等功能,通过实例代码详细解释了实现过程。
摘要由CSDN通过智能技术生成

地图的特点

地图图表的两种使用方式

  1. 百度地图API
  2. 矢量地图数据

地图的绘制

  1. 加载数据
  2. 将数据注册给echarts全局对象
  3. 配置geo

常见效果

1.缩放拖动/初始缩放比例/中心点
2.visualMap和地图的结合
3.散点图和地图的结合

地图特点
地图主要可以帮助我们从宏观的角度快速看出不同地理位置上数据的差异

矢量地图实现流程

  1. ECharts最基本的代码结构
  2. 准备中国地图的矢量数据
  3. 使用Ajax获取矢量地图数据
  4. 在Ajax的回调函数中注册地图矢量数据 echarts.registerMap(‘chinaMap’, 矢量地图数据)
  5. 配置geo的type为’map’, map为’chinaMap’

矢量地图实现代码

https://gitee.com/liumuye666/front-end/tree/master/
进入前往git下载矢量地图数据进行操作
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="echarts.min.js"></script>
    <script src="jquery.min.js"></script>
</head>
<body>
    <div style="width: 600px;height: 600px;"></div>
</body>
<script>
    var mCharts = echarts.init(document.querySelector('div'))
    $.get('map/china.json',function(ret){
        
        // console.log(ret);
        echarts.registerMap('chinaMap',ret)
        var option = {
        geo:{
            type:'map',
            map:'chinaMap', //chinaMap需要和registerMap中的第一个参数保持一致
            roam:true,  //设置允许缩放、拖动
            label:{
                show:true
            },
            zoom:2, //初始化比例
            center:[87.617733,43.792818] //地图中心点
        }
    }
    mCharts.setOption(option)
    })
    
   
</script>
</html>

在这里插入图片描述
想要显示某个省份只需要把get请求里面的请求数据换下就行
如安徽:

   $.get('map/anhui.json',function(ret){
        console.log(ret);
        echarts.registerMap('anhui',ret)
        var option = {
            geo:{
                type:'map',
                map:'anhui',
                zoom:1.5,
                roam:true,
                center:[116.507676, 31.752889] //整个坐标值,我们可以通过地图矢量数据获取到
            }
        }
        mCharts.setOption(option)
    })

地图城市空气质量

  1. 显示基本的中国地图
  2. 将空气质量的数据设置给series下的对象
  3. 将series下的数据和geo关联起来
  4. 配置visualMap
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../echarts.min.js"></script>
    <script src="./lib/jquery.min.js"></script>
</head>
<body>
    <div style="width: 600px;height: 600px;"></div>
</body>
<script>
//airData   是不同城市的空气质量数据 
    var airData = [
        { name: '北京', value: 39.92 },
        { name: '天津', value: 39.13 },
        { name: '上海', value: 31.22 },
        { name: '重庆', value: 66 },
        { name: '河北', value: 147 },
        { name: '河南', value: 113 },
        { name: '云南', value: 25.04 },
        { name: '辽宁', value: 50 },
        { name: '黑龙江', value: 114 },
        { name: '湖南', value: 175 },
        { name: '安徽', value: 117 },
        { name: '山东', value: 92 },
        { name: '新疆', value: 84 },
        { name: '江苏', value: 67 },
        { name: '浙江', value: 84 },
        { name: '江西', value: 96 },
        { name: '湖北', value: 273 },
        { name: '广西', value: 59 },
        { name: '甘肃', value: 99 },
        { name: '山西', value: 39 },
        { name: '内蒙古', value: 58 },
        { name: '陕西', value: 61 },
        { name: '吉林', value: 51 },
        { name: '福建', value: 29 },
        { name: '贵州', value: 71 },
        { name: '广东', value: 38 },
        { name: '青海', value: 57 },
        { name: '西藏', value: 24 },
        { name: '四川', value: 58 },
        { name: '宁夏', value: 52 },
        { name: '海南', value: 54 },
        { name: '台湾', value: 88 },
        { name: '香港', value: 66 },
        { name: '澳门', value: 77 },
        { name: '南海诸岛', value: 55 }
    ]
    var mCharts = echarts.init(document.querySelector('div'))
    $.get('map/china.json',function(ret){
        
        console.log(ret);
        echarts.registerMap('chinaMap',ret)
        var option = {
        geo:{
            type:'map',
            map:'chinaMap', //chinaMap需要和registerMap中的第一个参数保持一致
            roam:true,  //设置允许缩放、拖动
            label:{
                show:true
            },
           
        },
        series:[
            {
                data:airData,
                geoIndex:0 , //将空气质量的数据和第0个geo配置关联在一起
                type:'map'
            },
           
        ],
        visualMap:{
            min:0,
            max:300,  //滑块数值在0-300
            inRange:{
                color:['white','red']  //控制颜色渐变的范围
            },
            calculable:true  // 出现滑块的效果
        }
    }
    mCharts.setOption(option)
    })
</script>
</html>

在这里插入图片描述

地图和散点图结合

  1. 给series下增加一个新的对象
  2. 准备数据散点数据 , 配置给series下的另外一个对象
  3. 配置series下的新对象的type值为effectScatter
  4. 指明散点图的坐标系统为geo
  5. 调整涟漪动画效果
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../echarts.min.js"></script>
    <script src="./lib/jquery.min.js"></script>
</head>
<body>
    <div style="width: 600px;height: 600px;"></div>
</body>
<script>
    var airData = [
        { name: '北京', value: 39.92 },
        { name: '天津', value: 39.13 },
        { name: '上海', value: 31.22 },
        { name: '重庆', value: 66 },
        { name: '河北', value: 147 },
        { name: '河南', value: 113 },
        { name: '云南', value: 25.04 },
        { name: '辽宁', value: 50 },
        { name: '黑龙江', value: 114 },
        { name: '湖南', value: 175 },
        { name: '安徽', value: 117 },
        { name: '山东', value: 92 },
        { name: '新疆', value: 84 },
        { name: '江苏', value: 67 },
        { name: '浙江', value: 84 },
        { name: '江西', value: 96 },
        { name: '湖北', value: 273 },
        { name: '广西', value: 59 },
        { name: '甘肃', value: 99 },
        { name: '山西', value: 39 },
        { name: '内蒙古', value: 58 },
        { name: '陕西', value: 61 },
        { name: '吉林', value: 51 },
        { name: '福建', value: 29 },
        { name: '贵州', value: 71 },
        { name: '广东', value: 38 },
        { name: '青海', value: 57 },
        { name: '西藏', value: 24 },
        { name: '四川', value: 58 },
        { name: '宁夏', value: 52 },
        { name: '海南', value: 54 },
        { name: '台湾', value: 88 },
        { name: '香港', value: 66 },
        { name: '澳门', value: 77 },
        { name: '南海诸岛', value: 55 }
    ]
    var scatterData = [
      {
        value: [117.283042, 31.86119]
      }
    ]  //散点图数据,某个城市的经纬度
    var mCharts = echarts.init(document.querySelector('div'))
    $.get('map/china.json',function(ret){
        
        console.log(ret);
        echarts.registerMap('chinaMap',ret)
        var option = {
        geo:{
            type:'map',
            map:'chinaMap', //chinaMap需要和registerMap中的第一个参数保持一致
            roam:true,  //设置允许缩放、拖动
            label:{
                show:true
            },
           
        },
        series:[
            {
                data:airData,
                geoIndex:0 , //将空气质量的数据和第0个geo配置关联在一起
                type:'map'
            },
            {
                data:scatterData,  //配置散点的坐标数据
                type:'effectScatter', //涟漪效果
                coordinateSystem:'geo', // 指明散点图的坐标系统为geo
                rippleEffect:{
                    scale:10
                }
            }
           
        ],
        visualMap:{
            min:0,
            max:300,
            inRange:{
                color:['white','red']  //控制颜色渐变的范围
            },
            calculable:true  // 出现滑块的效果
        }
    }
    mCharts.setOption(option)
    })
    
   
</script>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值