option = {
...,
series: [{ // 浪高
type: 'line',
yAxisIndex: 1
}, { // 风向箭头
type: 'custom',
renderItem: renderArrow,
encode: {
x: dims.time,
y: dims.windSpeed
},
data: data,
z: 10
}, { // 风速虚线
type: 'line',
symbol: 'none',
encode: {
x: dims.time,
y: dims.windSpeed
},
data: data
}, { // 天气图标
type: 'custom',
renderItem: renderWeather,
data: weatherData
}],
visualMap: {
seriesIndex: 1,
dimension: 1,
...
}
}
// 绘制风向箭头
function renderArrow(param, api) {
var point = api.coord([
api.value(dims.time),
api.value(dims.windSpeed)
]);
return {
type: 'path',
shape: {
pathData: 'M31 16l-15-15v9h-26v12h26v9z',
x: -arrowSize / 2,
y: -arrowSize / 2,
width: arrowSize,
height: arrowSize
},
rotation: directionMap[api.value(dims.R)],
position: point,
style: api.style({
stroke: '#555',
lineWidth: 1
})
};
}
// 绘制天气图标
function renderWeather(param, api) {
var point = api.coord([
api.value(dims.time) + + 3600 * 24 * 1000 / 2,
0
]);
return {
type: 'group',
children: [{
type: 'image',
style: {
image: api.value(dims.weatherIcon),
x: -weatherIconSize / 2,
y: -weatherIconSize / 2,
width: weatherIconSize,
height: weatherIconSize
},
position: [point[0], 110]
}, {
type: 'text',
style: {
text: api.value(dims.minTemp) + ' - ' + api.value(dims.maxTemp) + '°',
textFont: api.font({fontSize: 14}),
textAlign: 'center'
},
position: [point[0], 80]
}]
};
}