前言

由于5.X版本的echarts没有了map包,因此我先安装了5.1.1版本,再安装了4.9版本,并将4.9版本中的map包复制到了5.1.1版本里。

绘制效果如下:
1、省份根据数据值,展示不同颜色。
2、具体城市展示大小不同的点
3、前五名城市展示涟漪效果
4、支持省份可点击


1、按需引入依赖

// 第一步
import * as echarts from 'echarts/core';
import china from 'echarts/map/json/china.json' //重点,从4.9版本中拿到
import {TitleComponent,ToolboxComponent,TooltipComponent,VisualMapComponent,GeoComponent
} from 'echarts/components';
import {MapChart
} from 'echarts/charts';
import {CanvasRenderer
} from 'echarts/renderers';
import 'echarts/extension/bmap/bmap'

2、初始化

// 第二步
methods: {useEchart() {// 数据来源echarts官网示例var data = [{name: '海门', value: 9},{name: '鄂尔多斯', value: 12},{name: '招远', value: 12},{name: '舟山', value: 12},{name: '齐齐哈尔', value: 14},]var geoCoordMap = {'海门':[121.15,31.89],'鄂尔多斯':[109.781327,39.608266],'招远':[120.38,37.35],'舟山':[122.207216,29.985295],'齐齐哈尔':[123.97,47.33],]var convertData = function (data) {var res = [];for (var i = 0; i < data.length; i++) {var geoCoord = geoCoordMap[data[i].name];if (geoCoord) {res.push({name: data[i].name,value: geoCoord.concat(data[i].value),visualMap: false  // 具体的点,不用根据省份变颜色});}}return res;};echarts.use([TitleComponent, ToolboxComponent, TooltipComponent, VisualMapComponent, GeoComponent, MapChart, CanvasRenderer]);var chartDom = document.getElementById('main');var myChart = echarts.init(chartDom);var option;// ......第三步}
}

3、绘制geo地图

// 接上图第三步,在useEchart方法内echarts.registerMap('china', china);   // 定义这个地图数据为 ‘china’,后续会用myChart.setOption(option = {title: {text: '绘制地图',},tooltip: {trigger: 'item',},visualMap: {  // 根据数据展示不同颜色min: 0,max: 1200,text: ['High', 'Low'],realtime: false,calculable: true,inRange: {color: ['yellow','orange', 'red']}},geo: [{   // 绘制geo地图map: "china", // 定义的数据名称roam: true, aspectScale: 0.8, layoutCenter: ["50%", "38%"],layoutSize: 370, label: { // 基本的一些样式normal: {show: true,textStyle: {color: "rgba(0, 0, 0, 0.9)",fontSize: '8'}},formatter:'{b} 数据量:<br/>{c}',emphasis: {color: "#333"}},regions: [ //隐藏南海诸岛,可以不去掉,根据业务需求{name: "南海诸岛",itemStyle: {// 隐藏地图normal: {opacity: 0, // 为 0 时不绘制该图形}},label: {show: false // 隐藏省份文案,false不隐藏}},],}],// ....第四步})option && myChart.setOption(option);

此时,已经可以绘制出一个白底的中国地图,但这只是一个底图达不到业务需求,我们进行下一步。


4、配置series

// 接上图第四步myChart.setOption(option = {series: [{name: '全国节点',type: 'map',roam: true,mapType: 'china', // 自定义扩展图表类型label: {show: true},// geoIndex:'0', 先不加这个属性data: [// 各省数据{name: '湖北',value: 1510,title:'hubei'},{name: '湖南',value: 222,title:'hunan'},{name: '江西',value: 333,title:'jiangxi'},{name: '安徽',value: 444,title:'anhui'},{name: '云南',value: 555,title:'yunnan'},{name: '广东',value: 666,title:'guangdong'},{name: '福建',value: 421,title:'fujian'},{name: '广西',value: 241,title:'guangxi'},{name: '浙江',value: 234,title:'zhejiang'},{name: '江苏',value: 341,title:'jiangsu'},{name: '上海',value: 1134,title:'shanghai'},{name: '海南',value: 351,title:'hainan'},{name: '香港',value: 351,title:'xianggang'},{name: '澳门',value: 61,title:'aomen'},{name: '台湾',value: 136,title:'taiwan'},{name: '贵州',value: 462,title:'guizhou'},{name: '重庆',value: 462,title:'chongqing'},{name: '宁夏',value: 32,title:'ningxia'},{name: '四川',value: 342,title:'sichuan'},{name: '新疆',value: 144,title:'xinjiang'},{name: '西藏',value: 35,title:'xizang'},{name: '青海',value: 33,title:'qinghai'},{name: '甘肃',value: 312,title:'gansu'},{name: '内蒙古',value: 1233,title:'neimenggu'},{name: '陕西',value: 213,title:'shanxi1'},{name: '北京',value: 3111,title:'beijing'},{name: '辽宁',value: 232,title:'liaoning'},{name: '黑龙江',value: 332,title:'heilongjiang'},{name: '山西',value: 313,title:'shanxi'},{name: '山东',value: 1833,title:'shandong'},{name: '河北',value: 1283,title:'hebei'},{name: '河南',value: 1233,title:'henan'},{name: '吉林',value: 233,title:'jilin'},{name: '天津',value: 323,title:'tianjin'},{name: '南海诸岛',value: 0},],},{ // 下面内容可以在echarts官网示例中查看// 所有城市点name: 'pm2.5',type: 'scatter', //非涟漪效果coordinateSystem: 'geo', // 官网是bmap 这里要改成geodata: convertData(data),encode: {value: 2},symbolSize: function (val) {return val[2] / 10;},label: {formatter: '{b}',position: 'right'},itemStyle: {color: 'blue'},emphasis: {label: {show: true}}},{// 前五名城市点name: 'Top 5',type: 'effectScatter', //涟漪效果coordinateSystem: 'geo', // 官网是bmap 这里要改成geodata: convertData(data.sort(function (a, b) {return b.value - a.value;}).slice(0, 6)),encode: {value: 2},symbolSize: function (val) {return val[2] / 10;},showEffectOn: 'render',rippleEffect: {brushType: 'stroke'},hoverAnimation: true,label: {formatter: '{b}',position: 'right',show: true},itemStyle: {color: 'blue',shadowBlur: 10,shadowColor: '#333'},zlevel: 1},]})

此时,已经可以绘制出2张中国地图, 一张原来的白色geo的底图,但上面已经有了所有的点, 还有一张根据省份值变色的图。

我们滚动鼠标发现,所有的点位 跟在geo图上, 而省份颜色却在series画的图上,我们需要让二者合并。
因此,需要在series上添加 geoIndex:‘0’ 属性,

再运行一下,是不是很神奇。


最后添加点击事件

option && myChart.setOption(option);// 在这里myChart.on('click', function (params) {console.log(params);if(params.componentSubType === 'map'){ //判断点击的是点还是 省份console.log('点击了省份:' + params.data.name)}});

echarts改版变化很频繁,还是需要根据业务需求,一点点的尝试吧。

vue中用echarts 绘制geo 中国地图相关推荐

  1. echarts 绘制世界地图 中国地图

    1.下载 世界地图和中国地图加载包 网上找了很长时间,分享 world.js china.js 下载地址: 链接:https://pan.baidu.com/s/1itbfiTMNMkcbLfUs0N ...

  2. vue使用echarts绘制中国地图

    vue使用echarts绘制中国地图 //myMap.vue <div id="geo"></div>//china.js下载地址 https://down ...

  3. 使用Echarts完成对中国地图的绘制

    目录 前言 1.什么是Echarts插件 2.如何在vue中使用Echarts 3.中国地图的具体样式 4.如何使用Echarts来完成中国地图的绘制 5.总结 前言 我们在使用代码绘画地图的时候通常 ...

  4. 使用Echarts绘制geo地图(案例)

    使用Echarts绘制geo地图(案例) 项目使用@vue/cli 4.5.13以及echarts版本为5.1.2. 需求:在省份地图上,将数据进行分段映射.如图: 首先下载geojson数据 链接: ...

  5. Vue中使用echart实现中国地图统计图

    Vue中使用echart实现中国地图统计图 前言 Echart版本的确定 全局导入或按需导入 在对应的页面调用echart 前后端数据交互注意事项 前言 在Vue2.x开发中,为了更好地展示某一个时间 ...

  6. echarts绘制上海市乡镇级地图

    echarts绘制上海市乡镇级地图 echarts 最新版本不支持GeometryCollection,虽然有人在4年前就提了issue <!DOCTYPE html> <html ...

  7. python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等)

    python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等) 1. 效果图 2. 原理 2.1 依赖模块及安装 2.2 工程目录 2.3 依赖文件latlng.txt 经纬度 3 源码 ...

  8. python采用Basemap绘制完美中国地图

    python采用Basemap绘制完美中国地图 摘要 Basemap的安装 下载Basemap安装文件 安装 Pyproj& Basemap Basemap的Helloword 使用Shape ...

  9. 用Vue和ECharts绘制问卷统计结果

    用Vue和ECharts绘制问卷统计结果 问卷设置了单选题.多选题以及文本题三中类型,分别使用了饼图.条形图.文本框来显示结果. 首先在html文件中,给div绑定一个"question-i ...

最新文章

  1. p8大佬告诉你JSR - 133 都解决了哪些问题?
  2. [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性
  3. java f反射_java反射机制[基础学习]
  4. 如何调试 Android 上 HTTP(S) 流量
  5. react取消捕获_react 异常捕获
  6. u盘弹出工具_mac怎么格式化u盘?
  7. 获得进程id_浅谈python中的多线程和多进程(二)
  8. 计算机发展史的内容概述,计算机及其发展史概述
  9. 上传文件块client实现
  10. virtualbox+vagrant学习-2(command cli)-7-vagrant login命令
  11. Python程序设计语言基础04:程序的控制结构
  12. 怎么查看表用了那个序列_3套阴瑜伽序列,让你身心平衡
  13. 谈谈物联网产业4G转型中的隐忧与应对
  14. linux打开gaussian16软件,Gaussian View 在Ubuntu16下的安装
  15. 2020年欧空局10m土地覆盖数据数据分享
  16. 手机计算机数据消失了怎么恢复,手机数据丢失的恢复方法
  17. idrac给服务器重装系统,DELL服务器如何使用iDRAC安装操作系统
  18. anguarjs 上传图片预览_前端战五渣学前端——FileReader预览本地文件
  19. windows powershell/cmd更改字体
  20. 华为公司专家组一行莅临物通博联调研指导

热门文章

  1. Linux系统编译安装GDAL库
  2. mysql 查看校对集_mysql 查看字符集和校对规则
  3. Anaconda入门:安装及包与环境的管理(conda命令)
  4. 【Linux应用编程】Linux编程中常见错误码含义及查询方式
  5. 用mission planner或者3drradioconfig软件配置X-ROCK数传电台
  6. ospfdr选举规则_OSPF的DR选举
  7. pytorch中num_workers详解
  8. python x 0b1010_下面代码的输出结果是
  9. SAP SD VF01 销售开票增强
  10. 从社交图谱看Web3.0在社交领域的探索