Python Flask定时调度疫情大数据爬取全栈项目实战使用-14中国地图ajax动态获取数据

中国地图

一、复制中国地图option,导入china.js

ec_center.js定义了option,复制到项目的js文件夹中

//初始化echarts实例
var ec_center = echarts.init(document.getElementById("c2"),"dark");
var mydata = []
var optionMap = {
		title: {
			text: '',
			subtext: '',
			x: 'left'
		},
		tooltip: {
			trigger: 'item'
		},
		//左侧小导航图标
		visualMap: {
			show: true,
			x: 'left',
			y: 'bottom',
			textStyle: {
				fontSize: 8
			},
			splitList: [{
					start: 1,
					end: 9
				},
				{
					start: 10,
					end: 99
				},
				{
					start: 100,
					end: 999
				},
				{
					start: 1000,
					end: 9999
				},
				{
					start: 10000
				}
			],
			color: ['#8A3310','#C64918', '#E55B25','#F2AD92', '#F9DCD1']
		},

			//配置属性
			series: [{
				name: '累积确诊人数',
				type: 'map',
				mapType: 'china',
				roam: false,
				itemStyle: {
					normal: {
						borderWidth: .5,
						borderColor: '#009fe8',
						areaColor: '#ffefd5'
					},
					emphasis: {
						borderWidth: .5,
						borderColor: '#4b0082',
						areaColor: '#fff'
					}
				},
				label: {
					normal: {
						show: true, //省份名称
						fontSize: 8
					},
					emphasis: {
						show: true,
						fontSize: 8
					}
				},
				data: mydata //数据
			}]
		};

		//使用制定的配置项和数据显示图表
		ec_center.setOption(optionMap);

main.html引入echarts.min.js china.js

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>疫情监控</title>
		<script src="../static/js/jquery.js"></script>
		<script src="../static/js/echarts.min.js"></script>
		<script src="../static/js/china.js"></script>

body中 把ec_center.js引入进来

		<div id="r1">我是右1</div>
		<div id="r2">我是右2</div>
		<script src="../static/js/ec_center.js"></script>

优化main.html代码 把js抽取出来

新建一个controller.js

			function gettime(){
				$.ajax({
					url:"/time",
					timeout:10000,//超时时间设置为10秒;
					success:function(data){
						$("#time").html(data)
					},
					error:function(xhr,type,errorThrown){
						
					}
				});
			}

			function get_c1_data(){
			    $.ajax({
                        url:"c1",
                        success:function(data){
						    $(".num h1").eq(0).text(data.confirm);
						    $(".num h1").eq(1).text(data.suspect);
						    $(".num h1").eq(2).text(data.heal);
						    $(".num h1").eq(3).text(data.dead);
                        },
                        error:function(xhr,type,errorThrown){

                        }
                })
            }
			//setInterval(get_c1_data, 1000)
			// setInterval(gettime, 1000)

main.html 引入controller.js

		<div id="c2">我是中2</div>
		<div id="r1">我是右1</div>
		<div id="r2">我是右2</div>
		<script src="../static/js/ec_center.js"></script>
		<script src="../static/js/controller.js"></script>

添加controllers.js获取后台数据

function get_c2_data(){
	$.ajax({
			url:"c2",
			success:function(data){
				optionMap.series[0].data = data.data
				ec_center.setOption(optionMap)
			},
			error:function(xhr,type,errorThrown){
	
			}
	})
}

二、 前后台数据交流

utils.py添加数据库获取函数

def get_c2_data():
    """
    :return 返回各省数据
    """
    sql= "select province,sum(confirm) from details" \
            " where update_time=(select update_time from  details order by update_time desc limit 1)" \
            " group by province"
    res = query(sql)
    return  res

app.py 添加c2接口路由:

@app.route('/c2')
def get_c2_data():
    res = []
    for tup in utils.get_c2_data():
        print(tup)
        res.append({"name":tup[0],"value":int(tup[1])})
    return jsonify({"data": res})

更改前端调用方式 只是调用1次:

function get_c2_data(){
	$.ajax({
			url:"c2",
			success:function(data){
				optionMap.series[0].data = data.data
				ec_center.setOption(optionMap)
			},
			error:function(xhr,type,errorThrown){
	
			}
	})
}
gettime()
get_c1_data()
get_c2_data()

最后的运行结果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚坏叔叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值