温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在vue中利用echarts实现一个地图流动效果

发布时间:2021-01-27 14:51:40 阅读:257 作者:Leah 栏目:开发技术
Vue开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

怎么在vue中利用echarts实现一个地图流动效果?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

操作步骤:

执行命令:npm run echarts -s 并回车

怎么在vue中利用echarts实现一个地图流动效果

看到这样的提示代表安装成功 PS:网络不好的情况建议用cnpm淘宝镜像(全局终端执行命令:npm i -g cnpm --registry=https://registry.npm.taobao.org)

怎么在vue中利用echarts实现一个地图流动效果

下载china.js

链接: https://pan.baidu.com/s/1EODVh9tJNEbFebbrhKyd_Q 提取码: gjz4

引入

import echarts from 'echarts/lib/echarts';
import '@/map/china.js';

写一个echarts容器 绑定ref

<div class="wrapper">
 <div class="map-container"  ref="myEchart" ></div>
</div>

配置option (有必要的注释都已标记)

<script>
let echarts = require("echarts");
import "echarts/lib/component/markLine";
mounted(){
 let data = [
 			{ "name""北京""dataCount": [0100001], "id""247" }, {
 			"name""天津",
 			"dataCount": [0000000],
 			"id""248"
 		}, { "name""河北""dataCount": [0000000], "id""249" }, {
 			"name""山西",
 			"dataCount": [0000000],
 			"id""250"
 		}, { "name""内蒙古""dataCount": [0000000], "id""251" }, {
 			"name""辽宁",
 			"dataCount": [0000000],
 			"id""252"
 		}, { "name""吉林""dataCount": [0000000], "id""253" }, {
 			"name""黑龙江",
 			"dataCount": [0000000],
 			"id""254"
 		}, { "name""上海""dataCount": [0100000], "id""255" }, {
 			"name""江苏",
 			"dataCount": [0000000],
 			"id""256"
 		}, { "name""浙江""dataCount": [0100000], "id""257" }, {
 			"name""安徽",
 			"dataCount": [0000000],
 			"id""258"
 		}, { "name""福建""dataCount": [0000000], "id""259" }, {
 			"name""江西",
 			"dataCount": [0000000],
 			"id""260"
 		}, { "name""山东""dataCount": [14235820035004], "id""261" }, {
 			"name""河南",
 			"dataCount": [0000000],
 			"id""262"
 		}, { "name""湖北""dataCount": [0000000], "id""263" }, {
 			"name""湖南",
 			"dataCount": [0000000],
 			"id""264"
 		}, { "name""广东""dataCount": [0000000], "id""265" }, {
 			"name""广西",
 			"dataCount": [0000000],
 			"id""266"
 		}, { "name""海南""dataCount": [0000000], "id""267" }, {
 			"name""重庆",
 			"dataCount": [0000000],
 			"id""268"
 		}, { "name""四川""dataCount": [0000000], "id""269" }, {
 			"name""贵州",
 			"dataCount": [0000000],
 			"id""270"
 		}, { "name""云南""dataCount": [0000000], "id""271" }, {
 			"name""西藏",
 			"dataCount": [0000000],
 			"id""272"
 		}, { "name""陕西""dataCount": [0000000], "id""273" }, {
 			"name""甘肃",
 			"dataCount": [0000000],
 			"id""274"
 		}, { "name""青海""dataCount": [0000000], "id""275" }, {
 			"name""宁夏",
 			"dataCount": [0000000],
 			"id""276"
 		}, { "name""新疆""dataCount": [0000000], "id""277" }, {
 			"name""台湾",
 			"dataCount": [0000000],
 			"id""278"
 		}, { "name""香港""dataCount": [0000000], "id""279" }, {
 			"name""澳门",
 			"dataCount": [0000000],
 			"id""280"
 }]
 let chinaGeoCoordMap ={
 					'黑龙江': [127.968845.368,1],
 					'内蒙古': [110.346741.4899,1],
 					'吉林': [125.815444.2584,1],
 					'北京': [116.455140.2539,2],
 					'辽宁': [123.123842.1216,1],
 					'河北': [114.499538.1006,1],
 					'天津': [117.421939.4189,1],
 					'山西': [112.335237.9413,1],
 					'陕西': [109.116234.2004,1],
 					'甘肃': [103.590136.3043,1],
 					'宁夏': [106.358638.1775,1],
 					'青海': [101.403836.8207,1],
 					'新疆': [87.923643.5883,1],
 					'西藏': [91.1129.97,1],
 					'四川': [103.952630.7617,1],
 					'重庆': [108.38436630.439702,1],
 					'山东': [117.158236.8701,1],
 					'河南': [113.466834.6234,1],
 					'江苏': [118.806231.9208,1],
 					'安徽': [117.2932.0581,1],
 					'湖北': [114.389630.6628,1],
 					'浙江': [119.531329.8773,1],
 					'福建': [119.454325.9222,1],
 					'江西': [116.004628.6633,1],
 					'湖南': [113.082328.2568,1],
 					'贵州': [106.699226.7682,1],
 					'云南': [102.919925.4663,1],
 					'广东': [113.1224423.009505,1],
 					'广西': [108.47923.1152,1],
 					'海南': [110.389319.8516,1],
 					'上海': [121.464831.2891,1],
 					'台湾': [120.99167605468824.7801149726563,1],
 					'澳门': [113.3322.11,1],
 					'香港': [114.1522.15,1]
 }
 for (let i=0;i<data.length;i++){
 			var da = chinaGeoCoordMap[data[i].name];
 			chinaGeoCoordMap[data[i].name]=[...da,...data[i].dataCount];
 }
 let chinaDatas = [
 			[{
 			name: '北京',
 			value: 2
 			}], [{
 			name: '黑龙江',
 			value: 1
 			}], [{
 			name: '内蒙古',
 			value: 1
 			}], [{
 			name: '吉林',
 			value: 1
 			}], [{
 			name: '辽宁',
 			value: 1
 			}], [{
 			name: '河北',
 			value: 1
 			}], [{
 			name: '天津',
 			value: 1
 			}], [{
 			name: '山西',
 			value: 1
 			}], [{
 			name: '陕西',
 			value: 1
 			}], [{
 			name: '甘肃',
 			value: 1
 			}], [{
 			name: '宁夏',
 			value: 1
 			}], [{
 			name: '青海',
 			value: 1
 			}], [{
 			name: '新疆',
 			value: 1
 			}], [{
 			name: '西藏',
 			value: 1
 			}], [{
 			name: '四川',
 			value: 1
 			}], [{
 			name: '重庆',
 			value: 1
 			}], [{
 			name: '山东',
 			value: 1
 			}], [{
 			name: '河南',
 			value: 1
 			}], [{
 			name: '江苏',
 			value: 1
 			}], [{
 			name: '安徽',
 			value: 1
 			}], [{
 			name: '湖北',
 			value: 1
 			}], [{
 			name: '浙江',
 			value: 1
 			}], [{
 			name: '福建',
 			value: 1
 			}], [{
 			name: '江西',
 			value: 1
 			}], [{
 			name: '湖南',
 			value: 1
 			}], [{
 			name: '贵州',
 			value: 1
 			}], [{
 			name: '广东',
 			value: 1
 			}], [{
 			name: '广西',
 			value: 1
 			}], [{
 			name: '云南',
 			value: 1
 			}], [{
 			name: '海南',
 			value: 1
 			}], [{
 			name: '上海',
 			value: 1
 			}], [{
 			name: '台湾',
 			value: 1
 			}], [{
 			name: '澳门',
 			value: 1
 			}], [{
 			name: '香港',
 			value: 1
 			}]
 ]
 let convertData = function (data{
 			var res = [];
 			for (var i = 0; i < data.length; i++) {
 			var dataItem = data[i];
 			var fromCoord = [chinaGeoCoordMap[dataItem[0].name][0], chinaGeoCoordMap[dataItem[0].name][1]];
 			var toCoord = [117.158236.8701];
 			if (fromCoord && toCoord) {
 				res.push([{
 				coord: fromCoord,
 				value: dataItem[0].value
 				}, {
 				coord: toCoord,
 				}]);
 			}
 			}
 			return res;
 };
 let seriesA = []
 seriesA.push(
 	{
 	type'lines',
 	zlevel1,
 	effect: {
 		showtrue,
 		period4, //箭头指向速度,值越小速度越快
 		trailLength0.3, //特效尾迹长度[0,1]值越大,尾迹越长重
 		symbol'pin', //箭头图标
 		symbolSize8, //图标大小
 		color'#2a6fd9'
 	},
 	lineStyle: {
 		normal: {
 		color'#003262',
 		width1,//尾迹线条宽度
 		opacity.9, //尾迹线条透明度
 		curveness.3 //尾迹线条曲直度
 		}
 	},
 	dataconvertData(chinaDatas)
 	},
 	{
 	type'effectScatter',
 	coordinateSystem'geo',
 	zlevel2,
 	rippleEffect: { // 涟漪特效
 		period2, // 动画时间,值越小速度越快
 		brushType'fill', // 波纹绘制方式 stroke, fill
 		scale6, // 波纹圆环最大限制,值越大波纹越大
 		color'#003262' // 涟漪的颜色,默认为散点的颜色。
 	},
 	label: {
 		normal: {
 		showtrue,
 		color'#283c64',
 		position'top', // 显示位置
 		offset: [00], // 偏移设置
 		formatter: function (params) { // 圆环显示文字
 			return params.data.name
 		},
 		fontSize13
 		},
 		emphasis: {
 		showfalse
 		}
 	},
 	symbol'circle',
 	symbolSize: function (val) {
 		return 1 + val[2] * 5 // 圆环大小
 	},
 	itemStyle: {
 	 color"#2a6fd9",
   shadowBlur4,
   shadowColor"#2a6fd9",
 	},
 	data: chinaDatas.map(function (dataItem) {
 		return {
 		name: dataItem[0].name,
 		value: chinaGeoCoordMap[dataItem[0].name],
 		itemStyle: {
 			 color"#2a6fd9",
   shadowBlur4,
   shadowColor"#2a6fd9",
 		}
 		}
 	})
 	},
 	//被攻击点
 	{
 	type'scatter',
 	coordinateSystem'geo',
 	zlevel2,
 	label: {
 		normal: {
 		showfalse,
 		position'right',
 		color'red',
 		formatter'{b}',
 		textStyle: {
 			color"red"
 		}
 		},
 		emphasis: {
 		showtrue,
 		color"red"
 		}
 	},
 	symbol'pin',
 	symbolSize0,
 	data: [{
 		name'山东',
 		value: chinaGeoCoordMap['山东'].concat([10]),
 	}],
 	}
 );

 let option = {
 	tooltip: {
 		show: true,
 		trigger: 'item',
 		backgroundColor: '#2e65fd',
 		borderColor: '#FFFFCC',
 		showDelay: 0,
 		hideDelay: 0,
 		enterable: true,
 		transitionDuration: 0,
 		extraCssText: 'z-index:100',
 		formatter: function (params, ticket, callback{
 			console.log(params)
 			// 根据业务自己拓展要显示的内容
 			var res = ''
 			var name = params.name
 			var value1 = params.value[params.seriesIndex + 3] || 0
 			var value2 = params.value[params.seriesIndex + 4] || 0
 			var value3 = params.value[params.seriesIndex + 5] || 0
 			var value4 = params.value[params.seriesIndex + 6] || 0
 			var value5 = params.value[params.seriesIndex + 7] || 0
 			var value6 = params.value[params.seriesIndex + 8] || 0
 			var value7 = params.value[params.seriesIndex + 9] || 0
 			res = "<span style='color:#fff'>" + name + '</span>' +
 					'<br/>' +
 					'<i class="icon icon-xuesheng"></i> 学生:' + value1+
 					'<br/>' +
 					'<i class="icon icon-laoshi_huaban"></i> 老师:'+value2+
 					'<br/>' +
 					'<i class="icon icon-baoanxiehui"></i> 青企协:'+value3+
 					'<br/>' +
 					'<i class="icon icon-rencaizhengce"></i> 青年企业家:'+value4+
 					'<br/>' +
 					'<i class="icon icon-investmentinstitutions"></i> 十强产业:'+value5+
 					'<br/>' +
 					'<i class="icon icon-caozuoyaoqingjiabin"></i> 峰会嘉宾:'+value6+
 					'<br/>' +
 					'<i class="icon icon-rencai"></i> 高端人才:'+value7
 			return res
 		}
 	},
 	  regions: [
   //隐藏南海
   {
   name: "南海诸岛",
   itemStyle: {
    normal: {
    borderColor: "red",
    borderWidth: 20//设置外层边框
    opacity: 0// 为 0 时不绘制该图形
    },
   },
   label: {
    show: false// 隐藏文字
   },
   },
 	 ],
  backgroundColor: "rgba(0, 0, 0, 0.1)",
 	geo: {
 	map: 'china',
 	zoom: 1.2,
 	label: {
 		normal: {
 		color: '#1e2d4c'
 		},
 		emphasis: {
 		show: false
 		}
 	},
 	roam: false// 是否允许缩放
 	  itemStyle: {
   normal: {
   //地图便框设置
   borderColor: "#003262",
   borderWidth: 11//设置外层边框
   },
   emphasis: {
   areaColor: "#003262",
   shadowColor: "#003262",
   },
  },
 	itemStyle: {
 		normal: {
 		color: ''// 地图背景色
 		borderColor: '#5ea8ff'// 省市边界线00fcff 516a89
 		borderWidth: 1
 		},
 		emphasis: {
 			color: '#81acff' // 悬浮背景
 		}
 	}
 	},
 	series: seriesA
 }
 }
 </script>

初始化echarts就可以了

this.myEchart = echarts.init(this.$refs.myEchart);
this.myEchart.setOption(option);

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×