范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Vue3Echarts5绘制带有立体感流线中国地图,建议收藏

  本文绘制的地图效果图如下:
  一、Echarts 使用五部曲
  1、下载并引入 echarts
  Echarts 已更新到了 5.0 版本,安装完记得检查下自己的版本是否是 5.0 。npm install echarts --save
  下载地图的 json 数据
  可以下载中国以及各个省份地图数据。免费的文件下载地址:
  http://datav.aliyun.com/portal/school/atlas/area_selector#&lat=30.332329214580188&lng=106.72278672066881&zoom=3.5
  记得收藏哦!免得浪费加班时间。
  引入:import * as echarts from "echarts" import chinaJSON from "../../assets/json/china.json"
  2、准备容器
  给元素定义宽高确定的容器用来装地图。
  3、实例化 echarts 对象import * as echarts from "echarts" import chinaJson from "../../assets/json/china.json" var myChart = echarts.init(document.getElementById("chinaMap")) // 创建了一个 myChart 对象
  4、指定配置项和数据var option = {  // 存放需要绘制图片类型,以及样式设置 }
  5、给 echarts 对象设置配置项myChart.setOption(option)
  就这么简单几步还用你告诉我吗?不瞒你说,官网也有这东东。虽然这些你都知道,但是并不影响你还是不知道流线图是怎么绘制出来的。下面我们看看是如何绘制的。二、开始绘制流线中国地图
  第一步:先绘制一个中国地图
  import * as echarts from "echarts" import chinaJson from "../../assets/json/china.json" import { onMounted, ref } from "vue" const chinaMap = ref() onMounted(() => {  drawChina() }) function drawChina() {  var myChart = echarts.init(chinaMap.value)  echarts.registerMap("china", chinaJson) //注册可用的地图  var option = {   geo: {    show: true,    //设置中心点    center: [105.194115019531, 35.582111640625],    map: "china",    roam: true, //是否允许缩放,拖拽    zoom: 1, //初始化大小    //缩放大小限制    scaleLimit: {     min: 0.1, //最小     max: 12, //最大    },    //各个省份模块样式设置    itemStyle: {     normal: {      areaColor: "#3352c7",//背景色      color: "red",//字体颜色      borderColor: "#5e84fd",      borderWidth: 2,     },    },    //高亮状态    emphasis: {     itemStyle: {      areaColor: "#ffc601",     },     label: {      show: true,      color: "#fff",     },    },    // 显示层级    z: 10,   },  }  myChart.setOption(option) }
  一个简单的地图就绘制好了,继续研究如何添加流线。
  第二步:添加流线
  通过 series 属性来设置发色点的样式,接受点的样式,以及线条和线条上的动画。
  设置 series 的值:// 中国地理坐标图 var chinaGeoCoordMap: Object = {  西安: [108.906866, 34.162109],  拉萨: [91.140856, 29.645554], } //发射点 var chinaDatas = [  [   {    name: "拉萨",    value: 2,   },  ], ] //投射点 const scatterPos = [108.906866, 34.162109] // 数据转换 var convertData = function (data: any) {  var res = []  for (var i = 0; i < data.length; i++) {   var dataItem = data[i]   var fromCoord = chinaGeoCoordMap[dataItem[0].name]   var toCoord = scatterPos   if (fromCoord && toCoord) {    res.push([     {      coord: fromCoord,      value: dataItem[0].value,     },     {      coord: toCoord,      },     ])   }  }  return res }  var series: Array = [] ;[["西安", chinaDatas]].forEach(function (item, i) {  series.push(   //设置指向箭头信息   {    type: "lines",    zlevel: 2,    effect: {     show: true,     period: 4, //箭头指向速度,值越小速度越快     trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重     symbol: "arrow", //箭头图标     symbolSize: 8, //图标大小    },    lineStyle: {     normal: {      color: "#adffd0",      width: 1, //尾迹线条宽度      opacity: 1, //尾迹线条透明度      curveness: 0.3, //尾迹线条曲直度     },    },    data: convertData(item[1]),   },  // 发射点位置涟漪等效果  {   type: "effectScatter",   coordinateSystem: "geo",   zlevel: 2,   rippleEffect: {   //涟漪特效   period: 4, //动画时间,值越小速度越快   brushType: "stroke", //波纹绘制方式 stroke, fill   scale: 4, //波纹圆环最大限制,值越大波纹越大   },   label: {    normal: {    show: true,    position: "right", //显示位置    offset: [5, 0], //偏移设置    formatter: function (params) {     //圆环显示文字     return params.data.name    },    fontSize: 13,   },   emphasis: {    show: true,   },  },  symbol: "circle",  symbolSize: function (val: Array) {   return 5 + val[2] * 5 //圆环大小  },  itemStyle: {  normal: {   show: false,   color: "#f8f9f5",   },  },  data: item[1].map(function (dataItem: any) {   return {    name: dataItem[0].name,    value: chinaGeoCoordMap[dataItem[0].name].concat([dataItem[0].value]),    }   }),  },  //被攻击点  {   type: "effectScatter",   coordinateSystem: "geo",   zlevel: 2,   rippleEffect: {    //涟漪相关    period: 2,    brushType: "stroke",    scale: 5,    },   label: {    normal: {     show: true,     position: "right",     color: "#0f0",     formatter: "{b}",     textStyle: {      color: "#fff",      fontSize: 12,      },     },     emphasis: {      show: true,      color: "#f60",     },    },    itemStyle: {     normal: {     color: "#f00",    },   },   symbol: "circle",   symbolSize: 10, //圆圈大小   data: [    {     name: item[0],     value: chinaGeoCoordMap[item[0]].concat([10]),     },    ],   },  ) })
  给上边的 option 添加 series 属性。
  第三步:添加立体投影
  添加立体投影的时候,由于并没有这样的属性,所以需要通过设置边框投影,再加一个偏移。
  实现原理:绘制两个地图,设置中心点是一样的,然后一个设置边框投影+偏移,它的层级设置小一点,上边再绘制一个地图不设置投影,这样就能够实现上述效果。// series 添加一个对象,绘制新地图 {  //绘制一个新地图  type: "map",  map: "china",  zoom: 1,  center: [105.194115019531, 35.582111640625],  z: -1,  aspectScale: 0.75, //  itemStyle: {   normal: {    areaColor: "#f00",    borderColor: "#090438",    borderWidth: "2",    shadowColor: "#090438",    shadowOffsetX: 0,    shadowOffsetY: 15,    },  }, }
  上述效果的完整源码: 

斯科尔斯凯恩在热刺很开心,如果曼联完全押注他是一种风险直播吧4月8日讯在BTSport的节目中,曼联名宿斯科尔斯谈到了热刺前锋凯恩的情况,他认为凯恩在热刺很开心,如果曼联去引进他,这将是一种风险。斯科尔斯这样谈道我认为曼联的进球是个问罗体穆帅仍在考虑沙特两年1。2亿报价,教练团队中有人想去来自罗马体育报罗马跟队记者JacopoAliprandi的报道,在收到沙特方面的巨额报价后,穆里尼奥已经与教练团队进行了交流,团队中有一部分人倾向于前往沙特赚钱,穆里尼奥本人仍然在中国首届!今天在金安开幕4月8日,由中国网球协会主办,六安市金安区人民政府承办的首届中国大众网球联赛大区联赛金安站,在位于大别山(六安)悠然南山旅游度假区的安徽省小球训练基地中心球场顺利举行。本次比赛吸引媒体人归化问题中国篮协确实有在考虑但并不急迫直播吧4月8日讯根据此前的报道,中国男篮有意归化森林狼球员凯尔安德森。据国内媒体人王健更博谈到归化说道关于中国男篮归化的问题,篮协有专门的项目组,去年就有篮协相关人士联系过我,询问老叔运筹帷幄,暗藏两大杀器,季后赛恐把山东斩落马下12进八的CBA季后赛附加赛,马上就要开演了。在山东高速对决广州新世纪,浙江东阳光对决山西猛龙,上海大鳖鱼对决江苏肯帝亚,以及北京首钢对决吉林东北虎的四组对决中,我最看好广州新世纪感谢太阳!湖人成NBA历史第六逆袭球队!詹姆斯直言难以置信!北京时间4月8日,NBA常规赛的倒数第二场,面对三巨头轮休的太阳队,湖人尽管赢得有些跌跌撞撞,但最终还是拿下了,最终以121107笑到了最后,赛后詹姆斯感慨万千,他终于实现了自己的CBA消息曝万科入主广东宏远王薪凯或被顶替季后赛门票哄抢曝广东宏远迎来新赞助商北京时间4月8日,据广东体育媒体的报道,广东宏远俱乐部已经获得了新赞助商的支持,他就是有着地产巨头之称的万科,关于这个消息将会在近日官进行发布。在此之前很多球连环套!NBA西部收官战,四队竟形成一环套一环的局势文水清清北京时间4月8日,今日NBA11场比赛战罢,西部的58排名仍然存有悬念,更罕见的形势,面对最后一轮收官战,四支球队竟然形成一环套一环的连环套局势。今天比赛战罢,西部58排名近40个月首次变脸包揽单打排名榜前五!中国女乒还有对手吗?国际乒联公布的本周世界排名榜,国乒包揽女子单打前5名,个体整体优势一目了然。有必要提醒的是,这是2019年12月以来第一次出现这一幕,此迹象是否预示今后几年中国女乒必然一统天下?东如何评价利拉德?达米安利拉德,1990年出生于美国奥克兰,2012年在NBA选秀中被开拓者用6号签选中,职业生涯一直在开拓者效力。截止目前利拉德在20172018赛季入选过最佳阵容一阵,两次二阵,教你家常美味的莴笋炒肥肠,简单易学又有营养,上桌一盘不够吃头条创作挑战赛欢迎大家,我是中原辣哥,喜欢美食的朋友,可以关注一下我们哦。有时候,一家人在一起,美食就像一根看不见的绳,牵住了所有人。那浓浓的香味里也许融合着那些化不开的思念,解不
老人突发脑出血,几步骤做好能救命,脑出血前3种表现,建议收藏在现有的三大代谢疾病中,无论是高血压,高血糖,高血脂,都有一定概率会诱发心脑血管疾病,继而导致大脑血管堵塞,引起脑出血。而老人因为年龄增长,身体代谢能力随着年龄下降,患有高血压等疾中国男篮5大潜力新星,未来将带领中国男篮重返世锦赛和奥运会东京奥运会上没有出现中国男篮的身影令球迷们有些难受,毕竟在2008年北京奥运会的时候中国还是世界八强然而在东京奥运会,中国男篮连站在赛场上的机会都没有获得,因此培养优秀的年轻球员势解开围棋名将丁伟身上的几大人生谜团龙飞虎造就的江湖传奇围棋名将丁伟身上有几个大的谜团,众所周知,他是围棋界的七小龙之一,那么他在围棋界的定位应是怎样的呢?有的人说这还有什么可疑惑的,常昊罗洗河一个序列(世界冠军),周鹤洋王磊一个序列(中超冠军的火神杯长什么样?可以永久保留?名字刻满了怎么办?目前联赛已经接近尾声而泰山队本轮拿下河北队后将成功拿下今年的联赛冠军!你还记得泰山队高举火神杯的场景吗?让我们一步步揭秘联赛的冠军奖杯为啥是火神杯?火神杯到底长什么模样?火神杯是不米尔斯哈登编了个新发型他已为圣诞大战做好准备直播吧12月25日讯包括哈登在内,篮网有多位球员解除了健康安全协议,球队将启程前往洛杉矶备战对阵湖人的圣诞大战。米尔斯在接受采访时谈到球队重新集结时这样说道感觉上一次我们在一起已经历史规模最大,美国将派295名选手参加北京冬奥会,巴赫祝贺发声美国参加本次冬奥会了吗?元旦节即将到来,这也意味着北京冬奥会开幕式进入到了倒计时。冬季的奥运会对比夏季奥运会不同的地方,在于比赛项目和天气温度不同,但同样都是一场盛会,各个国家也会绝佳争冠拼图?勇士雷霆曝1换1地震交易,2413大将助库里冲冠近日,有媒体报道,雷霆大前锋穆斯卡拉在接受媒体采访时表示,自己现在状态很好,希望可以有更多的出场机会,但就目前而言,雷霆队很显然是想要字本赛季培养年轻球员,而已经30岁的穆斯卡拉几冯莱首秀2315王哲林2010上海17分大逆转擒北控送对手3连败北京时间12月26日,CBA常规赛,上海以10283大胜北控,送对手3连败。上海队在最多落后17分的情况下,成功上演大逆转。上海队冯莱23分15篮板5抢断2盖帽,王哲林20分10篮中超1擒广州城实现赛季双杀埃里克破门儒尼奥尔轰入制胜球北京时间12月26日18时,中超联赛第二阶段争冠组第19轮,长春亚泰对战广州城。历经一番角逐,长春亚泰21逆转广州城从而实现赛季双杀。此役,温永骏率先为广州城破门,埃里克为亚泰追平深受病痛折磨的8位明星,各有各的苦衷,有人因病遗憾离世12日凌晨,国家一级演员涂们,因食道癌去世,享年61岁。著名演员惠英红发文悼念我情愿相信老兽只是睡着了。涂们,在上个月查出是食道癌晚期。查出后仅1个月的时间,就离世了。去世速度之快意大利足坛传噩耗!前世界足球先生癌症复发,今夏率队捧起欧洲杯就在世界各国足坛人士都在欢度圣诞节的时候,意大利足坛传来了一则噩耗,著名的光头射手意大利足坛传奇巨星维亚利公开承认,自己再次身患癌症,接下来将会开始相关治疗。而就在不久前,多家媒体