autoOption.autoShow&&(setInterval(function () { //控制轮播
step = (step+1)%length;
var showPoint={
x:pointData[step][0]+x,
y:y-pointData[step][2]
}
var tag =indicator[step];
var text = tag.name+':'+m.round(data[step]*100/tag.max)+"%";
(!hovering)&&hoverLabel(label,showPoint,text,style);
},autoOption.time||1000));
target.addEventListener('click',function(event){
console.log(event);
});
添加hover事件
autoOption.hoverEnable&&(target.addEventListener('mousemove',function(event){ //控制hover
const canvas= target.querySelector('canvas');
const mouse = getMousePos(canvas, event);
let point={};
let index =-1;
const r =5;
point.x=mouse.x-x;
point.y=y-mouse.y;
for(let i=0;i<pointData.length;i++) {
let item = pointData[i];
if (point.x > (item[0] - r) && point.x < (item[0] + r) && point.y > (item[1] - r) && point.y < (item[1] + r)) {
index = i;
break;
}
}
if(index!==-1){
var tag =indicator[index]
var text = tag.name+':'+m.round(data[index]*100/tag.max)+"%";
hovering =true;
hoverLabel(label,mouse,text,style);
}else{
hovering =false;
removeLabel(label);
}
}))
}
至于调用,那就简单了
// 第一步:
var ele = document.getElementById('chart');
var draw = echarts.init(ele);
// 第二步:配置你的option
var option ={};
// 第三步画出你的雷达图
draw.setOption(option);
// 第四步:绑定事件:
addHover(ele,option,{autoShow:true,hoverEnable:true});
写于:2017-11-09
今天要用到的理论在前两篇都讲过,如果你错过了前两篇,你应该先看看。 从0开始写一个支持单轴轮播的雷达图之首篇 从0开始写一个支持单轴轮播的雷达图之中篇
前言
通过前面我们自己实现了一个Radar图,并对其实现了单轴轮播和hover,我们已经明白了其中的坐标变换,在工作中,我们用自己写的雷达图来做产品的可能性不大,毕竟精力有限,而且和Echarts的图表相比,展示效果和鲁棒性都没法比。但是我们可否用Echarts生成一个radar图,自己为其写一个tooltip呢,答案是肯定的。
但一切的一切前提是,要支持单轴hover轮播,这个Radar图只有一个系列。其实现的核心思想:通过实例化Echarts对象的option,我们可以获取画布大小,获取标签和值,生成坐标系,算出要hover点的坐标,然后添加上面说的hover事件和自动轮播事件,直接上源码:
第一步绘制对应坐标系
创建hover事件和自动轮播显示标签
创建标签
添加轮播事件
添加hover事件
至于调用,那就简单了
上面,其实只是一个简易的版本,在实际应用中,我们需要考虑很多问题。
至此,我们就完全解决了Echarts单轴轮播问题。 如果你嫌上面讲的太琐碎,不直观,可以直接取github看我的试验源码,文件是radarAutoTip.html,欢迎star
本文首发于:http://closertb.site ,转载请注明