echarts实现地图定时切换散点与多图表级联联动详解

前端之家收集整理的这篇文章主要介绍了echarts实现地图定时切换散点与多图表级联联动详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1. 摘要

最近做项目遇到个统计相关需求,一个页面中大概四个或更多图形统计百度地图、饼图、柱状图、线型图。百度地图上显示所有店面在全国各地大概位置,目前暂定每省一个,在地图上显示散点。如默认显示郑州散点闪动,其他图形显示郑州相关数据;5秒切换下一个区域点,其他的图表数据对应改变。先上个图,各位有需要的可以再接着往下

2. 引入ECharts以及地图相关json

ECharts 3 开始不再强制使用 AMD 的方式按需引入,代码里也不再内置 AMD 加载器。因此引入方式简单了很多,只需要像普通的 JavaScript 库一样用 script 标签引入。

<Meta charset="utf-8">

5. 定时循环jquery实现

地图上的散点闪动5秒切换一次,所有地图信息参与轮询。具体js代码如下:

/** * 调用本地的ashx * @file 文件名 * @param get参数 (a=1&b=2&c=3) * @fn 回调函数 : 服务端返回 result=xxx; 回调函数直接处理result变量。 */ $.ashx = function (file,param,fn,er) { var sUrl = file; $.ajax({ type: "GET",contentType: "application/json",cache: false,url: sUrl,data: param,dataType: "json",success: fn,error: er }); }; var globalIndex = 0; //地图点击时间 function redoMethod(deptname) {

if (!deptname) {
deptname = data[globalIndex].name;
globalIndex++;
if (globalIndex == data.length) {
globalIndex = 0;
}
}
//alert(name);
$.ashx("ajax的URL地址","action=xx&deptname=" + deptname,function (result) {
if (result) {
if (result.results == "") {
return;
}
//debugger;
//alert(result.results.politcal);
var option = myChart.getOption();
//动态改变图形
option.series[0].data = convertData(data);//地图
option.series[0].symbolSize = function (val,params) {//标记的大小
//alert(name.name);
if (deptname == params.name) {
return 35;//地图闪动
} else {
return 20;
}
};
option.series[0].itemStyle.color = function (params) {
if (deptname == params.name) {
return "rgba(245,214,1)";
} else {
return "#F4E925";
}
};
option.series[1].data = result.results[0].politcal;//政治面貌
option.series[2].data = result.results[1].ageScale;//年龄占比
option.series[3].itemStyle.color = function (params) {
if (deptname == params.name) {
return "rgba(245,1)";
} else {
var colorList = ['#c23531','#c4ccd3'];
return colorList[params.dataIndex];
}
}

option.series[4].data = [2,7,12,6,3];//请假
option.series[5].data = [11,5,21,10,8,5];//迟到
option.series[6].data = [6,11,13];//早退
option.series[7].data = [7,22,9];//调休
option.series[8].data = [20,23,7];//加班
option.series[9].data = [33,24,9,1];//旷工

myChart.setOption(option);
}
},function (er) {
//alert("请求失败");
});
}
$(function () {
//定时循环
var interval = setInterval("redoMethod()",5000);//每隔一秒执行一次redoMethod()
//假如有两个按钮:继续、暂停
$("#btnSet").click(function () {//点击暂停按钮
if (interval) {
clearInterval(interval);
interval = null;
}
if ($(this).attr("title") == "点击停止") {
$(this).attr("title","点击开始");
$(this).attr("class","btnPlay");
} else {
$(this).attr("title","点击停止");
$(this).attr("class","btnPause");
interval = setInterval("redoMethod()",5000);
}

});
});

6. 总结

以上就是我在处理同页面多图形统计且有级联关系处理时的思路及采坑代码,文中代码均是从项目中复制出来的,完整率99.99%,代码略乱,开发中整理的思路注释什么的未处理,见谅。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程之家的支持

原文链接:https://www.f2er.com/js/31169.html

猜你在找的JavaScript相关文章