疫情地图公众号项目(二)

算法漫游
• 阅读 1350
  • 接下来我们进行疫情数据的分析与读取,并通过前后端程序的交互,将其部署到阿里云上。

阿里云服务器搭建流程
1.如果是新用户,可以选择白嫖的方式,我们先选择七天的这个,一个月的留下来方便以后继续白嫖。自行注册登陆后,新用户白嫖请点击这里:https://free.aliyun.com/?spm=...
疫情地图公众号项目(二)
2.按照需要设置地域、操作系统、带宽等。
疫情地图公众号项目(二)
3.购买成功后开始配置安全组。

  • 选择更多→网络和安全组→安全组配置

疫情地图公众号项目(二)

  • 点击配置规则后进入

疫情地图公众号项目(二)

  • 选择手动添加设置端口范围和授权对象。在这里我们要注意0.0.0.0/0表示任何人都可以访问,因此你可以使用自己的ip地址。

疫情地图公众号项目(二)
4.在浏览器中输入ecs服务器的公网ip:8888, 根据提示自定义你的管理员账号和密码。
如果不存在账号密码自定义页面, 可以按照下图流程获取默认账户和密码
疫情地图公众号项目(二)
疫情地图公众号项目(二)
疫情地图公众号项目(二)
输入 bt default获取默认账户密码
疫情地图公众号项目(二)
5.根据外网面板地址进入进入宝塔控制面板。
6.进入宝塔控制面板后 , 进入软件商店,搜索tomcat后点击安装。
7.设置端口号。
疫情地图公众号项目(二)
注意:设置完保存后要重启。
8.将你编写的将你编写的index.jsp,control.js文件上传到webapps/ROOT文件夹中 , 即可通过ip地址来访问你的JSP。

  • index.jsp源代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%> <%@page import="java.net.URL,java.net.URLConnection,java.io.InputStream,java.io.BufferedReader,java.io.InputStreamReader" %> <!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<title>疫情地图</title>
<script type="text/javascript"> <%
                //1. 创建一个url对象。u1
                URL u1 = new URL("https://zaixianke.com/yq/all");
                //2、(建立连接),通过网址u1,打开网络连接,并得到连接对象conn
                URLConnection conn = u1.openConnection();
                //3、(获取数据传输的流),通过连接对象conn,获取输入流is
                InputStream is = conn.getInputStream();
                //4、将输入流is,装饰为一次能读取一行的  缓冲字符输入流
                BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
                //5、读取内容
                String text1 = br.readLine();
                System.out.println(text1);
                //6、关闭流
                br.close();
        %> var data = <%=text1 %> </script>
<script class="lazy" data-src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/echarts/4.7.0/echarts.min.js"></script> 
<script src="http://cdn.zaixianke.com/china.js"></script>
<script src="http://cdn.zaixianke.com/world.js"></script>
</head>
<body>
<div id="main" style="width: 100%;height:600px;"></div> <br>
<div style="text-align:center">
        <a style="color:#333" class="control" align="center" href="javascript:updateMap(0)">国内累计</a>
        <a style="color:#333" class="control" align="center" href="javascript:updateMap(1)">国内新增</a>
        <a style="color:#333" class="control" align="center" href="javascript:updateMap(2)">全球累计</a>
        <a style="color:#333" class="control" align="center" href="javascript:updateMap(3)">全球新增</a>
</div>
<script src="control.js"></script>
</body>
</html>
  • control.js源代码:
var myChart = echarts.init(document.getElementById('main'));
function updateMap(num){
            $(".control").show();
            $(".control:eq("+num+")").hide();
            myChart.clear();
            var opt = null;
            switch(num){
                case 0:{
                    opt = {
                            // 设置标题和副标题及副标题跳转链接
                            title: {
                                text:'新冠疫情-国内累计数据',
                                sublink: 'https://www.kaikeba.com'
                            },
                            // 数据提示框
                            tooltip: {
                                trigger: 'item', // item放到数据区域触发
                                formatter: function (params, ticket, callback) {
                                    if(params.data)
                                        return params.name+'<br/>'+params.data.value+' (人)';
                                    else
                                        return params.name+'<br/>无疫情信息';
                                }
                            },
                            // 视觉映射方案:
                            // visualMap默认是连续映射,我们也可以设置为分段型,对于分布范围广的数据
                            // 使用透明度来区分疫情严重情况
                            visualMap: {
                                type: 'piecewise',
                                pieces: [
                                    {gt: 2000, color: 'darkred'},                        // (1500, Infinity]
                                    {gt: 1300, lte: 2000, color: 'red', colorAlpha: 1},  // (1000, 1500]
                                    {gt: 800, lte: 1300, color: 'red', colorAlpha: 0.8},
                                    {gt: 500, lte: 800, color: 'red', colorAlpha: 0.6},
                                    {gt: 200, lte: 500, color: 'red', colorAlpha: 0.4},
                                    {gt: 50, lte: 200, color: 'red', colorAlpha: 0.3},
                                    {lt: 50, color: 'red', colorAlpha: 0.2}          // (-Infinity, 100)
                                ],
                            },
                    
                            // 具体数据
                            series: [
                                {
                                    name: '国内各省确诊病例', // 系列名称
                                    zoom:1.2,//地图大小
                                    type: 'map', // 系列类型,地图
                                    map: 'china', // 要使用的地图,即上面注册的地图名称
                                    roam: true, // 开启鼠标缩放和平移漫游
                                    label: { // 图形上的文本标签,地图默认显示数据名
                                        show: true,
                                        formatter: '{b}', // b是数据名,c是数据值
                                        fontSize: 8
                                    },
                                    data: data.data,
                                }
                            ]
                        };
                    
                }
                break;
                case 1:{
                    opt = {
                            // 设置标题和副标题及副标题跳转链接
                            title: {
                                text: '新冠疫情-国内新增数据',
                                subtext: '数据来源--开课吧',
                                sublink: 'https://www.kaikeba.com'
                            },
                            // 数据提示框
                            tooltip: {
                                trigger: 'item', // item放到数据区域触发
                                formatter:  function (params, ticket, callback) {
                                    if(params.data)
                                        return params.name+'<br/>'+params.data.value+' (人)';
                                    else
                                        return params.name+'<br/>无疫情信息';
                                }
                            },
                    
                            // 视觉映射方案:
                            // visualMap默认是连续映射,我们也可以设置为分段型,对于分布范围广的数据
                            // 使用透明度来区分疫情严重情况
                            visualMap: {
                                type: 'piecewise',
                                pieces: [
                                    {gt: 50, color: 'darkred'},                        // (1500, Infinity]
                                    {gt: 30, lte: 50, color: 'red', colorAlpha: 1},  // (1000, 1500]
                                    {gt: 20, lte: 30, color: 'red', colorAlpha: 0.8},
                                    {gt: 10, lte: 20, color: 'red', colorAlpha: 0.6},
                                    {gt: 5, lte: 10, color: 'red', colorAlpha: 0.4},
                                    {gt: 1, lte: 5, color: 'red', colorAlpha: 0.3},
                                    {lt: 1, color: 'red', colorAlpha: 0.0}          // (-Infinity, 100)
                                ],
                            },
                    
                            // 具体数据
                            series: [
                                {
                                    name: '国内各省确诊病例', // 系列名称
                                    zoom:1.2,//地图大小
                                    type: 'map', // 系列类型,地图
                                    map: 'china', // 要使用的地图,即上面注册的地图名称
                                    roam: true, // 开启鼠标缩放和平移漫游
                                    label: { // 图形上的文本标签,地图默认显示数据名
                                        show: true,
                                        formatter: '{b}', // b是数据名,c是数据值
                                        fontSize: 8
                                    },
                                    data: data.today,
                                }
                            ]
                        };    
                }
                break;
                case 2:{
                    opt = {
                        // 设置标题和副标题及副标题跳转链接
                        title: {
                          text: '新冠疫情-全球累计数据',
                          subtext: '数据来源--开课吧',
                          sublink: 'https://www.kaikeba.com'
                        },
                        // 数据提示框
                        tooltip: {
                          trigger: 'item', // item放到数据区域触发
                          //formatter: '{b}<br/>{c} (人)' // 提示数据格式br表示换行,地图 : {a}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无)
                          formatter:function (params, ticket, callback) {
                            if(params.data)
                              return params.name+'<br/>'+params.data.value+' (人)';
                            else
                              return params.name+'<br/> 未公布感染人数';
                          }
                        },
                        // 视觉映射方案1:,疫情颜色根据传染病疫情等级分类为5个级别:黄色-橙色-深橙色-红色-深红色
                        // 为了是视觉分布更好,可以添加更多的颜色范围,然后适当调小max的值,因为美国和其它国家相差太大
                        /**/
                        visualMap: {
                          min: 1, // 颜色映射对应的最小值,即对应下面的lightskyblue
                          max: 500000, // 颜色映射对应的最大值,即对应下面的orangered
                          text: ['严重', '轻微'], // 映射图上下标记文本
                          realtime: true, // 是否显示拖拽手柄,映射条可以拖拽调整要映射的范围
                          calculable: true, // 拖拽时,是否实时更新地图
                          inRange: {
                            color: ['rgba(222,0,0,0.2)','rgba(160,0,0,1)'] // 颜色映射范围,最小值,过渡值,最大值
                          }
                        },
                    
                        
                    
                    
                        // 具体数据
                        series: [
                          {
                            name: '全球各国确诊病例', // 系列名称
                            zoom:1.2,//地图大小
                            type: 'map', // 系列类型,地图
                            map: 'world', // 要使用的地图,即上面注册的地图名称
                            roam: true, // 开启鼠标缩放和平移漫游
                            label: { // 图形上的文本标签,地图默认显示数据名
                              show: true,
                              fontSize:8,
                              //formatter: '{b}', // b是数据名,c是数据值
                              formatter:function (params, ticket, callback) {
                                //公布了数据 且 数据累计数据大于5万的显示国家名称
                                if(params.data && params.data.value>50000) {
                                  return params.name;
                                }else{
                                  return '';
                                }
                              }
                            },
                            data: data.g_data,
                          }
                        ]
                      };
                }
                break;
                case 3:{
                    opt = {
                        // 设置标题和副标题及副标题跳转链接
                        title: {
                          text: '新冠疫情-全球新增数据',
                          subtext: '数据来源--开课吧',
                          sublink: 'https://www.kaikeba.com'
                        },
                        // 数据提示框
                        tooltip: {
                          trigger: 'item', // item放到数据区域触发
                          formatter:function (params, ticket, callback) {
                            if(params.data)
                              return params.name+'<br/>'+params.data.value+' (人)';
                            else
                              return params.name+'<br/> 未公布感染人数';
                          }
                        },
                        // 视觉映射方案1:,疫情颜色根据传染病疫情等级分类为5个级别:黄色-橙色-深橙色-红色-深红色
                        // 为了是视觉分布更好,可以添加更多的颜色范围,然后适当调小max的值,因为美国和其它国家相差太大
                        /**/
                        visualMap: {
                          min: 0, // 颜色映射对应的最小值,
                          max: 20000, // 颜色映射对应的最大值
                          text: ['严重', '轻微'], // 映射图上下标记文本
                          realtime: true, // 是否显示拖拽手柄,映射条可以拖拽调整要映射的范围
                          calculable: true, // 拖拽时,是否实时更新地图
                          inRange: {
                            color: ['rgba(160,0,0,0)','rgba(160,0,0,1)'] // 颜色映射范围,最小值,过渡值,最大值
                          }
                        },
                        // 具体数据
                        series: [
                          {
                            name: '全球各国新增病例', // 系列名称
                            zoom:1.2,//地图大小
                            type: 'map', // 系列类型,地图
                            map: 'world', // 要使用的地图,即上面注册的地图名称
                            roam: true, // 开启鼠标缩放和平移漫游
                            label: { // 图形上的文本标签,地图默认显示数据名
                              show: true,
                              fontSize:8,
                              //formatter: '{b}', // b是数据名,c是数据值
                              formatter:function (params, ticket, callback) {
                                //公布了数据 且 数据累计数据大于5万的显示国家名称
                                if(params.data && params.data.value>1000 || params.name == '中国') {
                                  return params.name;
                                }else{
                                  return '';
                                }
                              }
                            },
                            data: data.g_today,
                          }
                        ]
                      };
                }
                break;
            }
             myChart.setOption(opt);
        }
        updateMap(0);

最终结果
疫情地图公众号项目(二)

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
GitHub神器,一个可以白嫖全网无损音乐的神器
!(https://oscimg.oschina.net/oscnet/a3397a6add254a1586ce94e3b39d10f3.png)如今在各大音乐平台上,大家是否发现许多正在听的或者是以前收藏的歌曲已经需要付费了?再加上各大音乐平台对歌曲版权的争夺,导致喜欢的歌曲必须在不同的音乐平台上收听。小编最近在逛Github发
通过python实现微信读书自由
互联网时代,关于阅读早已经不在是通过纸质方式获进行了,现在有各种看书app可以供大家选择。不知道用微信读书的朋友多不多,这里顺便安利一下哈。我目前看电子书的话基本都是在用微信读书,毕竟白嫖的无限卡真香。在微信读书上,不仅很多正版的Python书籍电子书可以直接看,还可以在阅读的同时看别人写的标注。但是无限卡对于有些书籍不太友好,只能阅读开头的章节,后面的章节
冴羽 冴羽
3年前
一篇域名从购买到备案到解析的详细教程
前言在中,我们使用VuePress搭建了一个博客,在中,我们将代码部署到服务器上,最终的效果查看:。但是在文章中,我们并没有涉及域名相关的内容,此篇专门写一篇域名的详细教程。1.域名购买因为使用的是阿里云服务器,所以我们直接到注册一个:选择合适的域名,加入清单,下单购买,注意,购买域名需要实名信息,一路跟着指示操作即可。购买完后,我们可以在查看到
有哪几个值得推荐的国外知名的免费云计算服务?
想要白嫖云服务器,并且还要求质量!!的确,无论国内还是国外云服务商拉新的需求,都会提供免费云服务器,但是免费的云服务器一般配置较低,而且免费服务器使用时间有限,顶多有一个月时间。对于个人测试尚可,但对于搭建长期业务的企业,光填充内容需要一定的时间,刚辛苦搭建完成,服务器就到期了,这就蛮尴尬的了!提到国外的主机服务商,那可真是琳琅满目了,随便介绍一下吧。首先是
李异 李异
2年前
推荐一个可以白嫖chatgpt的浏览器插件,无门槛使用
如果能在打开浏览器的时候就能使用chatgpt,那可以说是再方便不过了。前段时间我就发现我正在使用的WeTab新标签页刚好有了这个新功能,可以在新标签页上直接用gpt。
MaxSky MaxSky
4年前
Laravel 6 结合网易/阿里邮箱基本邮件发送功能使用
如果没有自建邮件服务器,直接结合网易、阿里邮箱可以非常简单方便的使用邮件发送功能。注册前首先得保证自己有一个域名,阿里最好是在当前账户下有一个已注册的域名。根据下方地址注册相应的账户信息,选择其中一个即可:网易:阿里:注册成功后,自行添加域名MX解析,直到生效。接着通过各自的后台管理添加需要来用作为发件人的邮箱地址,例如:添加商业客服:bus
Wesley13 Wesley13
3年前
@程序员,白嫖50元小红包!
发了50元的红包,这个星期五开奖!,中将人数25人!希望2021年前能涨到1万粉!在下面公众号内回复“粉丝”即可参与抽奖!(https://oscimg.oschina.net/oscnet/205b7877bf484aaf8badd8e46a6a708c.jpg)如图:!(https://oscimg
Wesley13 Wesley13
3年前
Vtiger CRM 几处SQL注入漏洞分析,测试工程师可借鉴
本文由云社区发表0x00前言干白盒审计有小半年了,大部分是业务上的代码,逻辑的复杂度和功能模块结构都比较简单,干久了收获也就一般,有机会接触一个成熟的产品(vtigerCRM)进行白盒审计,从审计的技术难度上来说,都比公司内的那些业务复杂得多,而真正要提高自己技术水平,更应该看的也是这些代码。vtigerCRM是一个客
Wesley13 Wesley13
3年前
5分钟白嫖常用的免费效率工具!
免费效率软件/工具推荐_如果碰到安装或其它的问题,先百度再google最后在Issue问,我基本每天都看Issue。因为本文只是推荐工具,所以具体的安装细节或步骤就不详细说明了,但是都会在每个软件介绍里面带上官方的文档地址,基本是够用的。_
LibraHeresy LibraHeresy
2年前
使用 Github Pages 部署 VitePress
前言自从用VitePress快速搭建博客系统以后,一直想部署在互联网上,然后去考察了阿里云和腾讯云,发现有点小贵。因为按照我的使用习惯,只是部署博客的话,有点小亏。这几天在掘金闲逛的时候,看到这篇文章,突然就想尝试一下,因为白嫖总是令人愉悦的。实现因为这篇
史鼎 史鼎
5个月前
免费!2000万Tokens大放送!这些AI神器你一定不能错过
全网最全AI算力福利清单来了!新用户狂薅2000万Token不算什么,企业/学生党居然能白嫖3000万!速速收藏这份「AI玩家必看攻略」,错过不再有!🔥平台TOP榜:手慢无!1️⃣【硅基流动】🚀✅个人注册立享2000万Tokens(≈14元)✅企业认