vue + echarts 实现中国地图 展示城市
Demo


安装依赖
vue中安装echarts
npm install echarts -S
在main.js中引用
import echarts from 'echarts'
Vue.prototype.$echarts = echarts
默认情况下,使用map事,因为事china地图,所以展示出来或者匹配的城市名称,只有声,城市是不参与的(北京、上海...这些独立市是例外)
所以,想要正常展示出你的城市数据,需要引入echarts的城市js或json
引入城市json
为了防止echarts还没加载完,我就开始加载页面,我是在我使用到的页面内引入的echarts,属于局部引入了

可以看到,城市json我已经引入了,要想知道有没有正常引入,在mounted中,将city打印出来就可以了
地图初始化的methods
这是我的地图展示的源码,当鼠标放在地图上时,会展示相关信息
     chinaConfigure() {
         var _this = this
         let myChart = echarts.init(this.$refs.platform); //这里是为了获得容器所在位置
         var geoCoordMap = {};
         var mapName = 'china'
         myChart.showLoading();
         var mapFeatures = city.features;
         myChart.hideLoading();
         mapFeatures.forEach(function(v) { // 地区名称
           var name = v.properties.name; // 地区经纬度
           geoCoordMap[name] = v.properties.cp;
         });
         var data = []
         data = this.mapData
         var max = 480,
           min = 9; // todo
         var maxSize4Pin = 100,
           minSize4Pin = 20;
         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,
                 count: data[i].count,
                 value: geoCoord.concat(data[i].value),
               });
             }
           }
           console.log(geoCoord)
           return res;
         };
         window.onresize = myChart.resize;
         myChart.setOption({ // 进行相关配置
           backgroundColor: "transparent",
           tooltip: {
             trigger: "item",
             backgroundColor: "#1540a1",
             borderColor: "#FFFFCC",
             showDelay: 0,
             hideDelay: 0,
             enterable: false,
             transitionDuration: 0,
             extraCssText: "z-index:100",
             formatter: function(params, ticket, callback) {
               // if (ticket.indexOf('散点') != -1) {
               let index = params.dataIndex
               console.log(this.mapData)
               let name = params.name
               var tipHtml = '';
               tipHtml =
                 '<div style="width:280px;height:200px;background:rgba(22,80,158,0.8);border:1px solid rgba(7,166,255,0.7)">' +
                 '<div style="width:100%;height:40px;line-height:40px;border-bottom:2px solid rgba(7,166,255,0.7);padding:0 20px">' +
                 '<i style="display:inline-block;width:8px;height:8px;background:#16d6ff;border-radius:40px;">' +
                 '</i>' + '<span style="margin-left:10px;color:#fff;font-size:16px;">' + name + '</span>' +
                 '</div>' + '<div style="padding:20px">' + '<p style="color:#fff;font-size:12px;">' +
                 '<i style="display:inline-block;width:10px;height:10px;background:#16d6ff;border-radius:40px;margin:0 8px">' +
                 '</i>' + '机器总数:' + '<span style="color:#f48225;margin:0 6px;">' + _this.mapData[index].count +
                 '</span>' +
                 '个' + '</p>' + '<p style="color:#fff;font-size:12px;">' +
                 '<i style="display:inline-block;width:10px;height:10px;background:#16d6ff;border-radius:40px;margin:0 8px">' +
                 '</i>' + '正常运行机器数:' + '<span style="color:#f48225;margin:0 6px;">' + _this.mapData[index].good +
                 '</span>' +
                 '个' + '</p>' + '<p style="color:#fff;font-size:12px;">' +
                 '<i style="display:inline-block;width:10px;height:10px;background:#16d6ff;border-radius:40px;margin:0 8px">' +
                 '</i>' + '待修机器数:' + '<span style="color:#f48225;margin:0 6px;">' + _this.mapData[index].bad +
                 '</span>' +
                 '个' + '</p>' + '</div>' + '</div>';
               return tipHtml;
               // }
             }
           },
           visualMap: {
             show: false,
             min: 0,
             max: 200,
             left: '10%',
             top: 'bottom',
             calculable: false,
             seriesIndex: [1],
             inRange: {
               color: ['#04387b', '#467bc0']
             }
           },
           geo: {
             map: mapName,
             label: {
               normal: {
                 show: false
               },
               emphasis: {
                 show: true
               },
               color: '#fff'
             },
             roam: true,
             zoom: .6,
             scaleLimit: { //所属组件的z分层,z值小的图形会被z值大的图形覆盖
               min: .6, //最小的缩放值
             },
             layoutCenter: ["50%", "50%"], //地图位置
             layoutSize: "180%",
             itemStyle: {
               normal: {
                 areaColor: '#0083ce', //地图颜色
                 borderColor: '#0066ba' //省份边界颜色
               },
               emphasis: {
                 borderColor: '#0066ba', //选中省份边界颜色
                 areaColor: "#0494e1", //选中省份颜色
                 shadowColor: 'rgba(0, 0, 0, 0.4)', //选中省份投影
                 shadowBlur: 10
               }
             }
           },
           series: [{
             name: '散点',
             type: 'effectScatter',
             coordinateSystem: 'geo',
             data: convertData(this.mapData),
             rippleEffect: {
               //涟漪特效
               period: 4, //动画时间,值越小速度越快
               brushType: "stroke", //波纹绘制方式 stroke, fill
               scale: 4 //波纹圆环最大限制,值越大波纹越大
             },
             hoverAnimation: true,
             symbolSize: 5,
             label: {
               normal: {
                 formatter: '{b}',
                 position: 'right',
                 show: true
               },
               emphasis: {
                 show: false
               }
             },
             itemStyle: {
               normal: {
                 color: '#fff'
               }
             }
           }, {
             name: '散点',
             type: 'effectScatter',
             coordinateSystem: 'geo',
             data: convertData(this.mapData.sort(function(a, b) {
               return b.count - a.count;
             }).slice(0, 5)),
             symbolSize: 8,
             showEffectOn: 'render',
             rippleEffect: {
               //涟漪特效
               period: 3, //动画时间,值越小速度越快
               brushType: "stroke", //波纹绘制方式 stroke, fill
               scale: 4 //波纹圆环最大限制,值越大波纹越大
             },
             hoverAnimation: true,
             label: {
               normal: {
                 formatter: '{b}',
                 position: 'left',
                 show: false
               }
             },
             itemStyle: {
               normal: {
                 color: 'yellow',
                 shadowBlur: 10,
                 shadowColor: 'yellow'
               }
             },
             zlevel: 1
           }]
         })
       },
注:
我用到的数据mapData,你可以根据自己的需求修改为自己想要的数据格式:
this.mapData = [
{name: "石家庄", number: 102, count: 2457, good: 2313, bad: 144},
{name: "秦皇岛", number: 169, count: 1931, good: 1869, bad: 62},
{name: "唐山", number: 164, count: 1291, good: 1200, bad: 91},
{name: "保定", number: 157, count: 2142, good: 2098, bad: 44},
{name: "太原", number: 256, count: 2331, good: 2070, bad: 261},
{name: "大同", number: 128, count: 2699, good: 2556, bad: 143},
{name: "阳泉", number: 136, count: 1277, good: 1051, bad: 226},
{name: " 呼和浩特", number: 138, count: 2108, good: 2085, bad: 23},
{name: "韶关", number: 266, count: 2734, good: 2609, bad: 125},
{name: "长沙", number: 133, count: 2938, good: 2746, bad: 192},
{name: "郴州", number: 252, count: 1604, good: 1306, bad: 298},
{name: "娄底", number: 270, count: 2885, good: 2639, bad: 246},
{name: " 武汉", number: 211, count: 1121, good: 964, bad: 157},
{name: "黄石", number: 120, count: 2534, good: 2432, bad: 102},
{name: "十堰", number: 125, count: 1581, good: 1540, bad: 41},
{name: "荆州", number: 186, count: 2926, good: 2730, bad: 196},
{name: " 郑州", number: 121, count: 1787, good: 1662, bad: 125}
]
细节部分 可以一起探讨哦
vue + echarts 实现中国地图 展示城市的更多相关文章
- 基于Echarts的中国地图数据展示
		发布时间:2018-10-31 技术:javascript+html5+canvas 概述 基于echarts的大数据中国地图展示,结合API定制,开发样式,监听鼠标事件,实现带参数路由跳转等 ... 
- 小程序Echarts 构建中国地图并锚定区域点击事件
		小程序Echarts 构建中国地图并锚定区域点击事件 Step1 效果展示 使用的绘图框架为 Echarts for Wexin 具体API文档地址请点击 ----> Step2 条件准备 1. ... 
- vue使用echart中国地图
		/* 引入 ECharts (按需加载) 文档:http://echarts.baidu.com/tutorial.html#%E5%9C%A8%20webpack%20%E4%B8%AD%E4%BD ... 
- echarts实现中国地图数据展示
		在项目中运用到图形展示数据太常见了,echarts是一款使用率非常高的插件工具,很多大平台都是使用echarts: 一般运用到条形.折线.扇形图,今天说一说在中国地图上展示各地数据: 首先要准备中国地 ... 
- vue中echarts引入中国地图
		<div id="myChartChina" :style="{width: '100%', height: '500px'}"></div& ... 
- Vue 实现一个中国地图
		参考:https://www.cnblogs.com/mazey/p/7965698.html 重点:如何引入中国地图js文件,china.js require('echarts/map/js/chi ... 
- 用echarts绘制中国地图
		在项目中运用到图形展示数据太常见了,echarts是一款使用率非常高的插件工具,很多大平台都是使用echarts: 一般运用到条形.折线.扇形图,今天说一说在中国地图上展示各地数据: 首先要准备中国地 ... 
- vue + echart 实现中国地图 和 省市地图(可切换省份)
		一.中国地图 1.先导入echarts,然后再main.js里引入echarts // 引入echartsimport echarts from 'echarts'Vue.prototype.$ech ... 
- echarts.制作中国地图,点击对应的省市链接到该省份的详细介绍
		今天花了一天的时间,用echart弄了一个效果,是从中国地图点进去身份并把改省份的数据渲染出来的效果,刚开始完全没有头绪,只能硬着头皮去看百度echart的api,和博客,看了半天,好家伙,终于给我找 ... 
随机推荐
- (main)贝叶斯统计 | 贝叶斯定理 | 贝叶斯推断 | 贝叶斯线性回归 | Bayes' Theorem
			2019年08月31日更新 看了一篇发在NM上的文章才又明白了贝叶斯方法的重要性和普适性,结合目前最火的DL,会有意想不到的结果. 目前一些最直觉性的理解: 概率的核心就是可能性空间一定,三体世界不会 ... 
- <JavaScript> 普通函数与构造函数的区别
			JavaScript中存在构造函数与函数两个概念. 这可能会给初学者造成一定的困扰,难不成存在两种函数. 然而事实这两种函数的构成完全一样,无论从长相还是气质都是一模一样的. 区别点在于,所扮演觉得不 ... 
- js中string和json的相互转换
			1.将string转成json var json={}; var myorderno=$("#myorderno").val(); json.myorderno=myorderno ... 
- kotlin中匿名对象
			open class MyClass { private fun too()=object { var x : String ="x" } fun publictoo()=obje ... 
- 002-log-log4j
			一.概述 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护 ... 
- vps虚拟机df -h根分区100%
			前言:今天上午接到一个网友的求助,说是服务器的根分区满了.但是,找不到具体的大文件在哪里.由于故障确实很古怪,我就要来了故障服务器的相关账户密码. 故障服务器相关环境: 系统:Centos 6.5 s ... 
- expect实现免交互
			如果想写一个能够自动处理输入输出的脚本又不想面对C或Perl,那么expect是最好的选择.它可以用来做一些Linux下无法做到交互的一些命令操作. (1).安装和使用expect expect是不会 ... 
- 对ysoserial工具及java反序列化的一个阶段性理解【未完成】
			经过一段时间的琢磨与反思,以及重读了大量之前看不懂的反序列化文章,目前为止算是对java反序列化这块有了一个阶段性的小理解. 目前为止,发送的所有java反序列化的漏洞中.主要需要两个触发条件: 1. ... 
- 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用
			目录 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用 24.1 expect实现无交互登录 24.1.1 安装和使用expect 24.2 正则表达式的使用 24 ... 
- 【Python】【demo实验36】【基础实验】【求3*3矩阵的主对角线之和】
			题目: 求一个3*3矩阵主对角线元素之和. 主对角线:从左上多右下的书归为主对角线 副对角线:从左下至右上的数归为副对角线. 我的源码: #!/usr/bin/python # encoding=ut ... 
