echarts折线图实现风向功能(旋转单个symbol)

最近的项目中要使用echarts实现显示风向以及风级的功能,在开发的过程中遇到了一点小问题,如何将单个symbol设置样式呢?

需求

利用echarts组件实现出风级折线图,显示的值为风级,在每个拐点利用箭头显示当时风向。


需求图

要点

本次需要展示的有两点:

1、风级
2、风向

风级在制作的过程中很简单,就说在option中设置data的value值,在此就不多提。

风向的制作首先要了解拐点(symbol)的属性,将拐点样式设置为箭头图片(建议使用svg图),再使风向旋转对应的角度即可。

拐点(symbol)

拐点(symbol)是echarts里的一个配置项,顾名思义拐点就是折线图曲线发生变化的点。


拐点示意图
设置自定义图片

ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
可以通过 'image://url' 设置为图片,其中 URL 为图片的链接,或者 dataURI。
URL 为图片链接例如:'image://http://xxx.xxx.xxx/a/b.png'

在此,为了更清晰的显示风向,我不建议使用ECharts提供的 'triangle'三角形,容易造成误解。

使用自定义图片的部分代码如下:

                    if(this.airIndex == 'wdsp'){  //旋转风向
                        var arr = [];
                        seriesItem.symbol = 'image://img/arrow.svg';
                        seriesItem.data = arr;
                    }else{
                        seriesItem.symbolSize = 8;
                    }

                    this.selectedDevData.push(seriesItem);
部分代码
旋转拐点

查询了一番echarts文档后,终于找到了这个属性——symbolRotate,点我了解该属性

找到这个设置的我天真的以为立马就能实现这个功能,但是在设置symbolRotate之后,我发现了一个问题。
这种方法只能设置整条折现拐点的旋转角度(所有拐点旋转角度相同),而我们的需求显然需要对单个拐点进行旋转。

在此特意说明下我的思路:
1、自定义图片箭头,指向默认朝上(北)
2、接口提供每个拐点需要的旋转角度,如:东(angle:90)、南(angle:180)、东南(angle:135)
3、一共16个方向:南、北、东、西、东北、东南、西北、西南、东北偏北、东北偏东、西北偏西、西北偏北、西南偏西、西南偏南、东南偏东、东南偏南。

实现代码:

var symbolRotateNum = [90,45,50,12,10,0,150];// 旋转的度数
var valueNum = [820, 932, 901, 934, 1290, 1330, 1320];// 数值
var data = echarts.util.map(valueNum, function (item, index) {
    return {
        value: valueNum[index],
        symbolRotate:symbolRotateNum[index]
    };
});
部分代码

我在Echarts Gallery上传了实例,有现成代码在上面,点我查看实例

排坑

虽然实现了功能,但是在开发的过程中还是踩到了坑的,在此特意分享给大家。

1、symbolRotate 的旋转方向为逆时针旋转,value为正数则逆时针旋转,若为负数则顺时针旋转。此设定与我起初的思路相反,导致实现效果的时候发现旋转角度与实际风向不对。

2、风向的指向为风的方向,而我起初以为北风箭头应该指向北,实则应该指向南方

综合上面两点,为了使角度指对,应该使用360°减去接口提供的度数。

symbolRotate: 360-seriesItem.angle[index]

方向应该指向反向,所以需要再调整180°

symbolRotate:180-seriesItem.angle[index]

最终效果如下:


最终效果
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容

  • 最近用echarts做了一个血压心率的折线图,记录下项目中遇到的问题: 如图,当某一点的血压或者心率异常,需要将该...
    呦呦呦呦呦呵阅读 10,155评论 0 1
  • 之前自学的时候也使用过echarts来制作柱状图,折线图,地图,现在想想那时候做的简直是太LOW了,就是简单的在官...
    _信仰zmh阅读 82,147评论 23 66
  • 那天,市法院民事厅的女法官刚上班就接到任务,要做离婚调节。 来法院申请离婚的是一对二十多岁的男女。男的面黄肌瘦,女...
    一腔孤勇啊阅读 503评论 1 1
  • 〈一〉 做人做事须才能 成鬼成仙看德行 人海茫茫聚学问 众生芸芸学做人 学历得就大树茂 修养才是树之根 德才兼备是...
    卓君务阅读 298评论 0 2
  • 爱 文/王新 清洗,剁块,出水 这是生活的主题 我把鸡块捞起 盐,花椒,生姜,灵芝片,辣椒壳 这些富有情趣的...
    玛托娃阅读 389评论 0 3