效果图如上

前提是安装Echarts并引入

并且配置中国地图json文件这些都在同账号另一篇博客上有说明,查看请自行移步

下展示代码

<template>
<div class="managingPatientSize">
<el-row>
<el-col :span="6">1</el-col>
<el-col :span="12">
<div id="china-map"></div>
</el-col>
<el-col :span="6">1</el-col>
</el-row>
</div>
</template> <script>
export default {
data() {
return {
};
},
mounted() {
this.china_map();
},
methods: {
/*
和后台联动思路:后台传数据给你,也就是我这边模拟的lineData这个数组的数据格式一样就行。如果字段名字变动,自己前台更改一下就可以了。
lineData这个结构解释一下:
val:数据,也就是你想展示的数据可以放里面。鼠标移动上去后可以看到
blat:发射点,也就是你要从哪里发射一个射线出去,就给个这个地方的坐标就行了。后台的坐标你可以直接发送这个chinaGeoCoordMap数组的给他,让他用这个坐标来
elon:接收点,就是你发射出去的射线哪个省接收这个射线,写一个接收省的坐标
bcitysim:发射省的名字
ecitysim:接收省的名字
*/
china_map() {
let mapChart = this.$echarts.init(document.getElementById("china-map"));//图表初始化,china-map是绑定的元素
window.onresize = mapChart.resize;//如果容器变大小,自适应从新构图
let series = [];//存放循环配置项
let res = [];//存放射线的起始点和结束点位置
let province = [];//存放有射线的省的名字,以此来拿到对应省份的坐标
//提前存好的所有省份坐标,用于后面根据名字拿到对应的左边
let chinaGeoCoordMap = {
新疆: [86.9023, 41.148],
西藏: [87.8695, 31.6846],
内蒙古: [110.5977, 41.3408],
青海: [95.2402, 35.4199],
四川: [102.9199, 30.1904],
黑龙江: [128.1445, 46.7156],
甘肃: [102.7129, 38.166],
云南: [101.0652, 24.6807],
广西: [108.7813, 23.6426],
湖南: [111.5332, 27.3779],
陕西: [108.5996, 33.7396],
广东: [113.8668, 22.8076],
吉林: [126.1746, 43.5938],
河北: [115.4004, 38.1688],
湖北: [112.2363, 30.8572],
贵州: [106.6113, 26.6385],
山东: [118.2402, 36.2307],
江西: [115.7156, 27.99],
河南: [113.0668, 33.8818],
辽宁: [123.0438, 41.0889],
山西: [112.4121, 36.6611],
安徽: [117.2461, 31.0361],
福建: [118.3008, 25.9277],
浙江: [120.498, 29.0918],
江苏: [119.8586, 32.915],
重庆: [107.7539, 29.8904],
宁夏: [105.9961, 37.1096],
海南: [109.9512, 19.2041],
台湾: [120.8254, 23.5986],
北京: [116.4551, 40.2539],
天津: [117.4219, 39.4189],
上海: [121.4648, 31.2891],
香港: [114.6178, 22.3242],
澳门: [113.5547, 21.6484],
};
//后台给的数据
let lineData = [
{
val: 32, //数据
blat: [86.9023, 41.148], //发射点
elon: [87.8695, 31.6846], //接收点
bcitysim: "新疆",//发射省的名字
ecitysim: "西藏",//接收省的名字
},
{
val: 32,
blat: [87.8695, 31.6846],
elon: [95.2402, 35.4199],
bcitysim: "西藏",
ecitysim: "青海",
},
{
val: 32,
blat: [86.9023, 41.148],
elon: [95.2402, 35.4199],
bcitysim: "新疆",
ecitysim: "青海",
},
];
//循环拿到处理好的数据
for (var i = 0; i < lineData.length; i++) {
province.push(lineData[i].bcitysim);//存进去每个省的名字
province.push(lineData[i].ecitysim);//存进去每个省的名字
res.push({
fromName: lineData[i].bcitysim, //发射的省名,保存用于弹框显示
toName: lineData[i].ecitysim, //接收的省名,保存用于弹框显示
coords: [
lineData[i].blat, //发射
lineData[i].elon, //接收
],
count: lineData[i].val, //数据
});
}
let index_data = new Set(province);//把省的名字去重
let data_res = [];//定义一个新的变量存放省的坐标 //注意这里一定要用name和value的形式。不是这个格式的散点图显示不出来
index_data.forEach((item) => {
data_res.push({
name: item,//每个省的名字
value: chinaGeoCoordMap[item],//每个省的坐标
});
});
//循环往series内添加配置项
series.push(
{
//射线效果图层
type: "lines", //类型:射线
zlevel: 1, //类似图层效果
effect: {
show: true,//是否显示图标
symbol: "arrow",//箭头图标
symbolSize: 5,//图标大小
trailLength: 0.02,//特效尾迹长度[0,1]值越大,尾迹越长重
},
label: {
show: true,
},
lineStyle: {
color: "#fff",
normal: {
color: "#fff",
width: 1,//尾迹线条宽度
opacity: 0.5,//尾迹线条透明度
curveness: 0.1,//尾迹线条曲直度
},
},
//提示框信息
tooltip: {
formatter: function (param) {
return (
param.data.fromName +
">" +
param.data.toName +
"<br>数量:" +
param.data.count
);
},
},
data: res, //拿到射线的起始点和结束点
},
//散点图
{
type: "effectScatter",//散点图
coordinateSystem: "geo",//这个不能删,删了不显示
zlevel: 1,
rippleEffect: {
//涟漪特效
period: 4, //动画时间,值越小速度越快
brushType: "stroke", //波纹绘制方式 stroke, fill
scale: 4, //波纹圆环最大限制,值越大波纹越大
},
//设置文字部分
label: {
normal: {
show: true, //省份名显示隐藏
position: "right", //省份名显示位置
offset: [5, 0], //省份名偏移设置
formatter: function (params) {
//圆环显示省份名
return params.name; //这个名字是根据data中的name来显示的
},
fontSize: 12,//文字大小
},
emphasis: {
show: true,
},
},
symbol: "circle",//散点图
symbolSize: 5,//散点大小
itemStyle: {//散点样式
normal: {
show: true,
color: "#fff",
},
},
data: data_res, //处理好后的散点图坐标数组
},
//点击高亮
{
type: "map",
mapType: "china",
zlevel: 1,
roam: true,
geoIndex: 0,
tooltip: {
show: true,
},
itemStyle: {
areaColor: "#00196d",
borderColor: "#0a53e9",
},
emphasis: {
show: true,
label: {
normal: {
show: true, // 是否显示对应地名
textStyle: {
color: "#fff",
},
},
},
itemStyle: {
areaColor: "#00196d",
borderColor: "#0a53e9",
},
},
}
);
//配置
let option = {
//title可要可不要 // title: {
// text: "查查的地图",
// textStyle: {
// color: "#ffffff",
// },
// },
legend: {
show: true,
selected: {},
x: "left",
orient: "vertical",
textStyle: {
color: "white",
},
data: [],
},
//鼠标移上去的弹框
tooltip: {
trigger: "item",
show: true,
},
//geo:这是重点
geo: {
map: "china", //中国地图
zoom: 1.2, //缩放倍数
roam: true, //是否允许缩放和拖拽地图
label: {
normal: {
show: false, // 是否显示省份名字,现在是隐藏的状态,因为和散点图的名字重叠了。如果需要就true
textStyle: {//名字的样式
color: "#fff",
},
},
emphasis: {
show: true,
},
},
//地图样式
itemStyle: {
normal: {
borderColor: "#293171", //地图边框颜色
borderWidth: "2", //地图边框粗细
areaColor: "#0A0F33", //地图背景色
},
//省份地图阴影
emphasis: {
areaColor: null,
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowBlur: 20,
borderWidth: 0,
shadowColor: "#fff",
},
},
},
series: series,//图表配置
};
mapChart.setOption(option);//生成图表
},
},
};
</script> <style lang="scss" scoped>
.managingPatientSize {
height: 100%;
background-color: #111b41;
color: #fff;
.el-row {
height: 100%;
.el-col {
height: 100%;
position: relative;
#china-map {
height: 100%;
}
}
}
}
</style>

  转自CSND博主:接口写好了吗

Vue+echarts实现中国地图射线效果的更多相关文章

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

    Demo 安装依赖 vue中安装echarts npm install echarts -S 在main.js中引用 import echarts from 'echarts'Vue.prototyp ...

  2. 小程序Echarts 构建中国地图并锚定区域点击事件

    小程序Echarts 构建中国地图并锚定区域点击事件 Step1 效果展示 使用的绘图框架为 Echarts for Wexin 具体API文档地址请点击 ----> Step2 条件准备 1. ...

  3. vue使用echart中国地图

    /* 引入 ECharts (按需加载) 文档:http://echarts.baidu.com/tutorial.html#%E5%9C%A8%20webpack%20%E4%B8%AD%E4%BD ...

  4. vue中echarts引入中国地图

    <div id="myChartChina" :style="{width: '100%', height: '500px'}"></div& ...

  5. echarts.制作中国地图,点击对应的省市链接到该省份的详细介绍

    今天花了一天的时间,用echart弄了一个效果,是从中国地图点进去身份并把改省份的数据渲染出来的效果,刚开始完全没有头绪,只能硬着头皮去看百度echart的api,和博客,看了半天,好家伙,终于给我找 ...

  6. echarts实现中国地图数据展示

    在项目中运用到图形展示数据太常见了,echarts是一款使用率非常高的插件工具,很多大平台都是使用echarts: 一般运用到条形.折线.扇形图,今天说一说在中国地图上展示各地数据: 首先要准备中国地 ...

  7. echarts画中国地图并上色

    任务是画一个中国地图,并在指定区域上颜色,学姐说用arcgis画,乖乖,4个g的安装文件,算了, 还是echarts大法好..如果想熟悉这个牛X的工具,请移步https://www.w3cschool ...

  8. Vue 实现一个中国地图

    参考:https://www.cnblogs.com/mazey/p/7965698.html 重点:如何引入中国地图js文件,china.js require('echarts/map/js/chi ...

  9. 基于Echarts的中国地图数据展示

    发布时间:2018-10-31   技术:javascript+html5+canvas   概述 基于echarts的大数据中国地图展示,结合API定制,开发样式,监听鼠标事件,实现带参数路由跳转等 ...

  10. 用echarts绘制中国地图

    在项目中运用到图形展示数据太常见了,echarts是一款使用率非常高的插件工具,很多大平台都是使用echarts: 一般运用到条形.折线.扇形图,今天说一说在中国地图上展示各地数据: 首先要准备中国地 ...

随机推荐

  1. constexpr 和常量表达式

    常量表达式(是const expression) 是指值不会改变并且在编译过程中就能得到计算结果的表达式.显然,字面值属于常量表达式,用常量 表达式初始化的const 对象也是常量表达式.后面将会提到 ...

  2. OSS 解锁

    一.解开LSKEYF00的编辑锁定  进入SE30,点击Tips & Tricks按钮,输入以下代码     UPDATE PROGDIR SET EDTX = ''       WHERE ...

  3. 修改密码 MVC

    控制器site public function actionPassword(){ $model = new PasswordForm(); /*判断请求属性 if ($request->isA ...

  4. unity 开发小技巧之C#篇 ----持续更新

    1.ToString()方法是可以重写的 2.Start()方法可以主动调用 3.接口可以直接使用 jiekou?.Invoke() 来调用所有继承该接口的方法 4.Json 列表和服务器需要的数据不 ...

  5. NX二次开发获取当前DLL路径函数

    string GetPath();//输出程序路径 string YiNingToolPath(string DLLDir); //分割程序路径获取工具目录 HMODULE GetSelfModule ...

  6. 我在迁移我的IDEA的项目、模块等东西的过程中发生过的一部分问题的我的一部分的记录以及我的解决方案如下

    使用idea2019阶段报的一些错: 1.'xxxServlet' is not assignable to 'javax.servlet.Servlet' 解决方案:把tomcat加入classpt ...

  7. You need to run build with JDK or have tools.jar on the classpath.If this occures during eclipse build make sure you run eclipse under JDK as well 错误

    我打开项目报错是这样的  pom.xml jdk配置什么的都是好的    但是还是报错 解决错误 : 1.打开你eclipse的根目录,找到eclipse.ini  这个文件夹打开 2.打开是这个样子 ...

  8. 解决ssh $host jps bash: jps: command not found 问题

    问题描述 使用 ssh $host jps 命令报错,连本机也会有这样的情况,但是分开使用并没有问题,即ssh $host下执行jps命令并不会报错. 原因 因为ssh远程连接到服务器的环境变量中不包 ...

  9. Python项目案例开发从入门到实战-1.4Python图形界面设计

    Python提供了多个图形开发界面的库,常用的Python GUI库如下. -Tkinter:Python内置模块 -wxPython -Jython 1.4.1创建Windows窗口 import ...

  10. debian 系统中安装 broadcom 无线网卡驱动

    首先要修改 apt 的配置文件,允许安装 non-free 软件.即在 /etc/apt/sources.list 中生效的行的最后加上 contrib non-free,再使用 apt-get up ...