使用echarts做一个空气质量指数仪表盘, 对接天气接口, 附源码

非常漂亮的空气质量仪表盘源码, 并且实现了空气质量数值和刻度正确匹配

效果如图
在这里插入图片描述

实现流程

  1. jquery请求天气api接口
  2. echart渲染仪表盘数据, 并显示当前城市名称和空气质量数值
点击网页链接可直接预览效果和另存下载链接:

http://tianqiapi.com/html/aqi_dashboard.html

附空气质量标准及健康指引
空气质量指数污染级别对健康的影响
0-50空气质量令人满意,基本无空气污染,对健康没有危害
51-100除少数对某些污染物特别敏感的人群外,不会对人体健康产生危害
101-150轻度污染敏感人群症状会有轻度加剧,对健康人群没有明显影响
151-200中度污染敏感人群症状进一步加剧,可能对健康人群的心脏、呼吸系统有影响
201-300重度污染空气状况很差,会对每个人的健康都产生比较严重的危害
>300严重污染空气状况极差,所有人的健康都会受到严重危害

源码如下:

<!--
	此示例需要注册天气api账号
-->
<!DOCTYPE html>
<html lang="zh-CN" style="height: 100%">
<head>
    <meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
<div id="container" style="height: 100%"></div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.0/echarts.min.js"></script>
<script type="text/javascript">
    $(function () {
        $.get('http://v1.yiketianqi.com/api?unescape=1&version=v61&appid=43656176&appsecret=I42og6Lm', function (tianqi) {
            console.log(tianqi);
            var dom = document.getElementById('container');
            var myChart = echarts.init(dom, null, {
                renderer: 'canvas',
                useDirtyRect: false
            });
            var app = {};
            var option;
            option = {
                series: [
                    {
                        type: 'gauge',
                        startAngle: 180,
                        endAngle: 0,
                        center: ['50%', '75%'],
                        radius: '90%',
                        min: 0,
                        max: 300,
                        splitNumber: 12,
                        axisLine: {
                            lineStyle: {
                                width: 10,
                                color: [
                                    [0.1666, '#9BCA7F'],
                                    [0.3332, '#F9DA65'],
                                    [0.4998, '#F29F39'],
                                    [0.6664, '#DB555E'],
                                    [0.8330, '#BA3779'],
                                    [1, '#F20000']
                                ]
                            }
                        },
                        pointer: {
                            icon: 'path://M12.8,0.7l12,40.1H0.7L12.8,0.7z',
                            length: '12%',
                            width: 20,
                            offsetCenter: [0, '-60%'],
                            itemStyle: {
                                color: 'auto'
                            }
                        },
                        axisTick: {
                            length: 12,
                            lineStyle: {
                                color: 'auto',
                                width: 2
                            }
                        },
                        splitLine: {
                            length: 20,
                            lineStyle: {
                                color: 'auto',
                                width: 5
                            }
                        },
                        axisLabel: {
                            color: '#464646',
                            fontSize: 20,
                            distance: -60,
                            rotate: 'tangential',
                            formatter: function (value) {
                                console.log(value)
                                if (value === 275) {
                                    return '严重污染';
                                } else if (value === 225) {
                                    return '重度污染';
                                } else if (value === 175) {
                                    return '中度污染';
                                } else if (value === 125) {
                                    return '轻度污染';
                                } else if (value === 75) {
                                    return '良';
                                } else if (value === 25) {
                                    return '优';
                                }
                                return '';
                            }
                        },
                        title: {
                            offsetCenter: [0, '-10%'],
                            fontSize: 20
                        },
                        detail: {
                            fontSize: 50,
                            offsetCenter: [0, '-35%'],
                            valueAnimation: true,

                            color: 'auto'
                        },
                        data: [
                            {
                                value: tianqi.air,
                                name: tianqi.city + '空气质量指数(AQI)\n\nTianqiapi.com'
                            }
                        ]
                    }
                ]
            };

            if (option && typeof option === 'object') {
                myChart.setOption(option);
            }
            window.addEventListener('resize', myChart.resize);
        })
    });

</script>
</body>
</html>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值