echarts+vue遇到的问题总结

框架:echarts(最新版)+vue(2.5)
数据统计分析不可避免用到图表,所以选择了功能强大、免费的echarts
1、地图value值为数组,需要实现鼠标移上去浮动显示地图所有value值,并换行,如下图

gag.jpg

首先设置tooltip.formatter,可用方法(param={})其中param.data.value就是对应的省份的值(是个数组,有多个值),只需在此方法中拼接即可
tooltip : {
trigger: 'item',
formatter: (params) => {
let str=''
params.data.value.forEach(item=>{
str+=item.name+':'+item.value+'万元\n'
})
return str
},
extraCssText:'width:200px; white-space:pre-wrap'
},
若想换行:
方法一:直接在拼接时加上

方法二:拼接时加\n,并添加 extraCssText:'width:200px; white-space:pre-wrap'即可
2、若option中有使用到formatter函数,将option保存到后台,回显图表时会出现formatter无效;
错误示例:
option:JSON.stringify(this.option)---传给后台,
this.option=JSON.parse(option);this.myChart.setOption(this.option,true);---回显
解决办法:option以对象转成json字符串时方法无法转换,需要将方法提前转成字符串,再转成json字符串;反之接受时需要将字符串转成方法,才可以生效
image.png

image.png

其中方法转字符串的方法、字符串转方法的代码如下:
//将option中的function字符串类型转为函数
const CommonStrTOFunc = (option)=>{
if((typeof option)=="object"){
for(var o in option){
var opt=option[o];
if((typeof opt)=="string"){
if(opt.indexOf("function")!=-1){
//"string"转为"function" eval
var fmt=eval("("+opt+")");
option[o]=fmt;
}
}
CommonStrTOFunc(opt);
}
}
return option;
};
//将option中的function转为字符串
const CommonFuncTOStr=(option)=>{
if((typeof option)=="object"){
for(var o in option){
var opt=option[o];
if((typeof opt)=="function"){
option[o]=opt+'';
}
CommonFuncTOStr(opt);
}
}
return option;
};
3、echarts 换肤,下载的自定义主题“地图”无效果
问题描述:echarts自带颜色不符合客户要求,需要做到一键换肤的功能,echarts官网下载的自定义主题,基本图形都适用,发现地图没效果
症结:经过反复试验,下载的主题中地图部分格式不符合最新版地图api文档
解决办法:按着api文档的格式修改保存即可。
下载格式:
image.png

正确格式:
image.png

备注:init的时候的主题名字一定要和下载文件中的注册名字一致,否则无法生效
image.png

image.png

4、地图添加新区域(如贵州省添加贵安新区、成都市添加天府新区)
问题描述:echarts目前不提供地图下载,但是在node_modules/echarts/map/下有全国各省的经纬度数据(json\js);但是需求往往需要加上一个刚划分的区域,比如贵州省添加贵安新区(新划分的无法获取到经纬度);
因此查阅资料找到一种折中的办法
(1)首先通过http://geojson.io/#map=10/26.5031/106.3847
绘制贵安新区的区域,在右侧会出现你描出区域的经纬度数据
image.png

(2)通过压缩方法将geoJson进行压缩参考网站
https://blog.csdn.net/isea533/article/details/79194819
(3)将生成的js或json文件放到项目中,
import './assets/js/guizhou.js'
series: [ {
type: 'map',
mapType: '贵州',
................
}];
5、后台返回有数据,echarts画出的图有断裂,tooltip显示为NAN
原因:后台返回数据是千分位计数,如(10000---10,000)
解决办法:后台处理一下返回数据、或前端在绘制图形前格式化千分位计数
num.replace(/,/g, "")
image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,109评论 1 45
  • 官网奉上ECharts vue项目中可以引入echarts或者vue echarts,大致区别如下: echart...
    球_97阅读 24,281评论 2 12
  • 基于Vue的一些资料 内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 element★...
    尝了又尝阅读 4,884评论 0 1
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    你猜_3214阅读 13,828评论 0 118
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 9,772评论 0 0