From 89ba2c7490a743e383f3c991d993291dc9120b4c Mon Sep 17 00:00:00 2001 From: xufenglei <xufenglei> Date: Mon, 30 Jul 2018 08:49:40 +0800 Subject: [PATCH] 风向风速 功能展现 --- src/app/routes/forecasting-warning/forecasting-warning.component.ts | 150 +++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 137 insertions(+), 13 deletions(-) diff --git a/src/app/routes/forecasting-warning/forecasting-warning.component.ts b/src/app/routes/forecasting-warning/forecasting-warning.component.ts index 2e660eb..bd33a04 100644 --- a/src/app/routes/forecasting-warning/forecasting-warning.component.ts +++ b/src/app/routes/forecasting-warning/forecasting-warning.component.ts @@ -19,9 +19,10 @@ } [x: string]: any; - + public isShow = true; colors = ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3']; + public option = { title: { text: '', @@ -56,6 +57,114 @@ } ] }; + windOption = { + title: { + text: '������������������(������)', + left: 'center' + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'cross' + }, + formatter: function(params) { + const directionName = { + W: '���', + WSW: '������������', + SW: '������', + SSW: '������������', + S: '���', + SSE: '������������', + SE: '������', + ESE: '������������', + E: '���', + ENE: '������������', + NE: '������', + NNE: '������������', + N: '���', + NNW: '������������', + NW: '������', + WNW: '������������', + }; + return [ + params[0].value[0], + '���������' + params[0].value[1] + '���', + '���������' + directionName[params[0].value[2]] + ].join('<br>'); + } + }, + xAxis: { + type: 'category', + boundaryGap: true + }, + yAxis: { + name: '���������������' + }, + series: [ + { + type: 'custom', + renderItem: this.renderArrow, + data: [], + z: 10 + }, { + type: 'line', + smooth: true, + symbol: 'none', + itemStyle: { + color: '#6e7074' + }, + lineStyle: { + normal: { +// type: 'dotted' + } + }, + areaStyle: { + normal: {} + }, + data: [], + z: 1 + } + ] + }; + renderArrow(param, api) { + const directionMap = {}; + const direction = ['W', 'WSW', 'SW', 'SSW', 'S', 'SSE', 'SE', 'ESE', 'E', 'ENE', 'NE', 'NNE', 'N', 'NNW', 'NW', 'WNW']; + + direction.forEach((data, i) => { + directionMap[data] = Math.PI / 8 * i; + }); + + const dims = { + time: 0, + windSpeed: 1, + R: 2 + }; + const arrowSize = 18; + const 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 + }) + }; + } + + + public type = 'warning'; ngOnInit() { this.initWarning(); } @@ -78,6 +187,7 @@ const pressure = []; const uvi = []; const title = '������������������'; + const windDirDatas = []; zip( this.http.get('http://sapi.7drlb.com/api/mj?cityID=1102&apiKey=forecast15days'), this.http.get('http://sapi.7drlb.com/api/mj?cityID=1102&apiKey=forecast24hours') @@ -90,7 +200,9 @@ humidity.push(data.humidity); pressure.push(data.pressure); uvi.push(data.uvi); - this.option.xAxis.data.push(data.date.substring(data.date.length - 2) + '���' + data.hour + '���'); + const formatTime = data.date.substring(data.date.length - 2) + '���' + data.hour + '���'; + windDirDatas.push([formatTime, data.windSpeed, data.windDir]); + this.option.xAxis.data.push(formatTime); } }); const forecasting_tempChart = echarts.init(document.getElementById('forecasting_temp')); @@ -98,7 +210,6 @@ this.option.yAxis.name = '������������'; this.option.series[0].data = temp; this.option.series[0].itemStyle.color = this.colors[0]; forecasting_tempChart.setOption(this.option, false); - window.onresize = forecasting_tempChart.resize; const forecasting_humidityChart = echarts.init(document.getElementById('forecasting_humidity')); this.option.title.text = title + '(������)'; @@ -106,7 +217,6 @@ this.option.series[0].data = humidity; this.option.series[0].itemStyle.color = this.colors[1]; forecasting_humidityChart.setOption(this.option, false); - window.onresize = forecasting_humidityChart.resize; const forecasting_pressureChart = echarts.init(document.getElementById('forecasting_pressure')); this.option.title.text = title + '(������)'; @@ -114,7 +224,6 @@ this.option.series[0].data = pressure; this.option.series[0].itemStyle.color = this.colors[2]; forecasting_pressureChart.setOption(this.option, false); - window.onresize = forecasting_pressureChart.resize; const forecasting_uviChart = echarts.init(document.getElementById('forecasting_uvi')); this.option.title.text = title + '(���������)'; @@ -122,7 +231,11 @@ this.option.series[0].data = uvi; this.option.series[0].itemStyle.color = this.colors[3]; forecasting_uviChart.setOption(this.option, false); - window.onresize = forecasting_uviChart.resize; + + const forecasting_windChart = echarts.init(document.getElementById('forecasting_wind')); + this.windOption.series[0].data = windDirDatas; + this.windOption.series[1].data = windDirDatas; + forecasting_windChart.setOption(this.windOption, false); const daydatas = daysRes['data'].forecast; const temp_day = []; @@ -159,7 +272,15 @@ } }; forecasting_temp_dayChart.setOption(this.option, false); - window.onresize = forecasting_temp_dayChart.resize; + + window.addEventListener('resize', function() { + forecasting_tempChart.resize(); + forecasting_humidityChart.resize(); + forecasting_pressureChart.resize(); + forecasting_uviChart.resize(); + forecasting_windChart.resize(); + forecasting_temp_dayChart.resize(); + }); }); } @@ -188,7 +309,6 @@ this.option.series[0].data = PM2_5; this.option.series[0].itemStyle.color = this.colors[0]; warning_PM25Chart.setOption(this.option, false); - window.onresize = warning_PM25Chart.resize; const warning_PM10Chart = echarts.init(document.getElementById('warning_PM10')); this.option.title.text = title + '(PM10)'; @@ -196,7 +316,6 @@ this.option.series[0].data = PM10; this.option.series[0].itemStyle.color = this.colors[1]; warning_PM10Chart.setOption(this.option, false); - window.onresize = warning_PM10Chart.resize; const warning_COChart = echarts.init(document.getElementById('warning_CO')); this.option.title.text = title + '(CO)'; @@ -204,7 +323,6 @@ this.option.series[0].data = CO; this.option.series[0].itemStyle.color = this.colors[2]; warning_COChart.setOption(this.option, false); - window.onresize = warning_COChart.resize; const warning_NO2Chart = echarts.init(document.getElementById('warning_NO2')); this.option.title.text = title + '(NO2)'; @@ -212,7 +330,6 @@ this.option.series[0].data = NO2; this.option.series[0].itemStyle.color = this.colors[3]; warning_NO2Chart.setOption(this.option, false); - window.onresize = warning_NO2Chart.resize; const warning_O3Chart = echarts.init(document.getElementById('warning_O3')); this.option.title.text = title + '(O3)'; @@ -220,7 +337,6 @@ this.option.series[0].data = O3; this.option.series[0].itemStyle.color = this.colors[4]; warning_O3Chart.setOption(this.option, false); - window.onresize = warning_O3Chart.resize; const warning_SO2Chart = echarts.init(document.getElementById('warning_SO2')); this.option.title.text = title + '(SO2)'; @@ -228,7 +344,15 @@ this.option.series[0].data = SO2; this.option.series[0].itemStyle.color = this.colors[6]; warning_SO2Chart.setOption(this.option, false); - window.onresize = warning_SO2Chart.resize; + + window.addEventListener('resize', function() { + warning_PM25Chart.resize(); + warning_PM10Chart.resize(); + warning_COChart.resize(); + warning_NO2Chart.resize(); + warning_O3Chart.resize(); + warning_SO2Chart.resize(); + }); }); } } -- Gitblit v1.8.0