renderItem函数
开发者使用自定义的图形元素渲染,是通过 renderItem函数实现的。
series: [{
type: 'custom',
renderItem: function (params, api) {
// ...
},
data: data
}]渲染data数组中的每一项数据时都会调用renderItem函数,而后函数就返回一个(或者一组)
图形元素定义,echarts会根据这些图形元素定义渲染出图形元素。
若想要使用该函数直接绘制图形,则在函数内return 构建dataItem的图形元素定义。例如:
// 这里返回为这个 dataItem 构建的图形元素定义。
return rectShape && {
// 表示这个图形元素是矩形。还可以是 'circle', 'sector', 'polygon' 等等。
type: 'rect',
shape: rectShape,
// 用 api.style(...) 得到默认的样式设置。这个样式设置包含了
// option 中 itemStyle 的配置和视觉映射得到的颜色。
style: api.style()
};但是,自定义还用echarts内置的属性还是有些限制啊!需要实现的效果并不是很随心(→_→)。
所以我们可以利用 renderItem 提供的参数api 获取到dataItem要显示的位置(及坐标[x,y]),将自定好的效果直接定位上,岂不是效果更随心些(←_→)
下面我们来看看renderItem为我们提供的两个参数:params、api
params
该参数包含了当前数据信息和坐标系的信息。
actionType: null
context: {}
coordSys: {type: 'geo', x: 126, y: 18.35, width: 15038655.192776125, height: 7087856.39616931, …}
dataIndex: 0
dataIndexInside: 0
dataInsideLength: 1
encode: {lng: Array(1), lat: Array(1)}
seriesId: "\u0000自定义\u00000"
seriesIndex: 2 //在series数组内的索引
seriesName: "自定义"api
是一些开发者可调用的方法集合。
value :得到给定维度的数据值。
coord:将数据值映射到坐标系上。
renderItem: (params, api) => {
if (!this.customApi) {
this.customApi = api
}
},
var coord = this.customApi.coord([dataItem.value, index])(可通过全局属性将api方法集 提取出来,再自定义时调用获取坐标即可)
获取到位置信息,即可将自定义效果定位到需求位置实现Echarts组件之外的效果。
版权声明:本文为heal_l原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。