| | |
| | |
|
| | | }
|
| | | [x: string]: any;
|
| | |
|
| | | |
| | | public isShow = true;
|
| | | colors = ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'];
|
| | | |
| | | public option = {
|
| | | title: {
|
| | | text: '',
|
| | |
| | | }
|
| | | ]
|
| | | };
|
| | | 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();
|
| | | }
|
| | |
| | | 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')
|
| | |
| | | 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'));
|
| | |
| | | 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 + '(湿度)';
|
| | |
| | | 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 + '(气压)';
|
| | |
| | | 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 + '(紫外线)';
|
| | |
| | | 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 = [];
|
| | |
| | | this.option.yAxis.name = '单位:℃';
|
| | | this.option['legend'] = {
|
| | | right: '10%',
|
| | | top: '10%',
|
| | | data: ['白天温度', '夜晚温度']
|
| | | };
|
| | | this.option.series[0].data = temp_day;
|
| | |
| | | }
|
| | | };
|
| | | 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();
|
| | | });
|
| | | });
|
| | | }
|
| | |
|
| | |
| | | const PM2_5 = []; const PM10 = []; const CO = []; const NO2 = []; const O3 = []; const SO2 = [];
|
| | | const title = '空气质量因子';
|
| | | this.option.xAxis.data = [];
|
| | | this.http.get(environment.SERVER_BASH_URL + 'demo/list').subscribe((res: any) => {
|
| | | const params = {size: '7'};
|
| | | this.http.get(environment.SERVER_BASH_URL + 'demo/list', {params: params}).subscribe((res: any) => {
|
| | | res.forEach(data => {
|
| | | const json = JSON.parse(data.aqi_json);
|
| | | PM2_5.push(json.PM2_5);
|
| | |
| | | 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)';
|
| | |
| | | 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)';
|
| | |
| | | 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)';
|
| | |
| | | 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)';
|
| | |
| | | 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)';
|
| | |
| | | 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();
|
| | | });
|
| | | });
|
| | | }
|
| | | }
|