首先要导入对应的包。下钻用到各个省份的json文件等内容导入之后进行相关的操作。

首先是从数据库中读取相应的数据文件。通过list方式。只有在ser出转化为json文件。在jsp页面通过ajax来进行数据的获取。返回json对象。

获取数据库中的信息保存到list对象集合之中简单如下:

  1. public static ArrayList<heibeicity> findDate(String Date)
  2. {
  3. // TODO Auto-generated method stub
  4. String sql = "select * from hebei_city_info where Date ='" +Date+ "'";
  5. ArrayList<heibeicity> list =new ArrayList<heibeicity>();
  6. Connection con=null;
  7. PreparedStatement psts=null;
  8. ResultSet rs=null;
  9. try
  10. {
  11. con=DBUtil.getConn();
  12. psts=con.prepareStatement(sql);
  13. rs=psts.executeQuery();//记录返回的结果
  14. while(rs.next())
  15. {
  16. heibeicity user1=new heibeicity();
  17. user1.setCity(rs.getString("City"));
  18. user1.setNew_confirmed_num(rs.getString("new_confirmed_num"));
  19. user1.setConfirmed_num(rs.getString("confirmed_num"));
  20. user1.setDead_num(rs.getString("dead_num"));
  21. user1.setZhong_num(rs.getString("zhong_num"));
  22. user1.setCured_num(rs.getString("cured_num"));
  23. user1.setDate(rs.getString("date"));
  24. list.add(user1);
  25. }
  26.  
  27. DBUtil.close(rs, psts, con);
  28. return list;
  29. } catch (SQLException e) {
  30. // TODO 自动生成的 catch 块
  31. e.printStackTrace();
  32. }
  33. return list;
  34. }

之后将这个list转换成json类型返回ajax:

  1. response.setContentType("text/plain; charset=UTF-8");
  2. userdao userdao=new userdao();
  3.  
  4. ArrayList<info1> info_list=userdao.findpro();
  5.  
  6. HttpSession session = request.getSession();
  7. session.setAttribute("info_list",info_list);
  8.  
  9. Gson gson = new Gson();
  10.  
  11. String json = gson.toJson(info_list);
  12.  
  13. response.getWriter().write(json);

之后就是生成整个地图进行显示各个省份的内容:

代码中的主要部分如下:

  1. for(var i=0;i<;i++){
  2. var d = {
  3.  
  4. };
  5. d["name"] = data[i].Province;//.substring(0, 2);
  6.  
  7. d["value"] = data[i].Confirmed_num;
  8. d["Yisi_num"] = data[i].Yisi_num;
  9. d["Cured_num"] = data[i].Cured_num;
  10. d["Dead_num"] = data[i].Dead_num;
  11. mydata.push(d);
  12. }
  1. tooltip : {
  2. trigger: 'item',
  3. formatter : function(params) {
  4. return params.name + '<br/>' + '确诊人数 : '
  5. + params.value + '<br/>' + '死亡人数 : '
  6. + params['data'].Dead_num + '<br/>' + '治愈人数 : '
  7. + params['data'].Cured_num + '<br/>'+ '疑似患者人数 : '
  8. + params['data'].Yisi_num;
  9. }//数据格式化
  10. },

第一个一定要有name\value的复制,name帮助判断是哪个省市。之后value来进行判断省份的颜色。,第一个中的例如

a={}相当于 a = new Object();

下边的tooltip是显示提示信息的;

主要的代码如下:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <%@page import="com.yiqing.users.*"%>
  5. <%@page import="java.util.ArrayList"%>
  6.  
  7. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  8. <!DOCTYPE html>
  9. <html>
  10. <head>
  11. <meta name="viewport" content="width=device-width, initial-scale=1">
  12. <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
  13. <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
  14. <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
  15. <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
  16. <style>
  17. #myEcharts {
  18. width: 800px;
  19. height: 500px;
  20. border: solid 1px red;
  21. margin: 0 auto;
  22. }
  23. </style>
  24. <!-- 引入 echarts.js -->
  25. <script src="https://www.echartsjs.com/examples/vendors/echarts/echarts.min.js?_v_=1578305236132"></script>
  26. <!--引入中国的地图数据js文件,引入后会自动注册地图名字和数据-->
  27. <script src="https://www.echartsjs.com/examples/vendors/echarts/map/js/china.js?_v_=1578305236132"></script>
  28. <meta charset="utf-8">
  29. <title>中国疫情图</title>
  30. <!-- 引入 echarts.js -->
  31. <script src="${pageContext.request.contextPath}/resource/echarts.js"></script>
  32. </head>
  33. <body>
  34. <!--为echarts准备一个dom容器-->
  35. <div id="myEcharts"></div>
  36. <script>
  37. window.onload=function(){
  38. $.ajax({//()里面是JSON数据,外层要加上{}。
  39. url:"lianxi2",//处理页面地址,表示ajax要用哪个页面处理
  40. data:{code:"n001"},//传递到处理页面的值,也是JSON数据,要用{}。如果传2个值就在{}里面加逗号,再写另外1个值。
  41. type:"POST",//传值方式,一般用POST方式,注意POST要大写。
  42. dataType:"JSON",//返回值的类型。1.TEXT文本,字符串。2.JSON数据 3.XML可扩展标记语言,主要用在数据传递。
  43. async:true,
  44. success:function(data){//表示处理成功之后做什么,后面跟一个匿名函数。回调函数,表示处理页面处理完数据以后执行这个函数。data表示处理页面返回的值,用形参接收。
  45. var mydata = new Array(0);
  46. alert(data[0].Province+data[0].Cured_num);
  47. for(var i=0;i<32;i++){
  48. var d = {
  49.  
  50. };
  51. d["name"] = data[i].Province;//.substring(0, 2);
  52.  
  53. d["value"] = data[i].Confirmed_num;
  54. d["Yisi_num"] = data[i].Yisi_num;
  55. d["Cured_num"] = data[i].Cured_num;
  56. d["Dead_num"] = data[i].Dead_num;
  57. mydata.push(d);
  58. }
  59. //初始化echarts实例
  60. var myChart = echarts.init(document.getElementById('myEcharts'));
  61. // 指定图表的配置项和数据
  62. var option = {
  63. tooltip : {
  64. trigger: 'item',
  65. formatter : function(params) {
  66. return params.name + '<br/>' + '确诊人数 : '
  67. + params.value + '<br/>' + '死亡人数 : '
  68. + params['data'].Dead_num + '<br/>' + '治愈人数 : '
  69. + params['data'].Cured_num + '<br/>'+ '疑似患者人数 : '
  70. + params['data'].Yisi_num;
  71. }//数据格式化
  72. },
  73. title: {
  74. text: '中国疫情图',
  75. left: 'center'
  76. },
  77.  
  78. legend: {
  79. orient: 'vertical',
  80. left: 'left',
  81. data: ['中国疫情图']
  82. },
  83. visualMap: {
  84. type: 'piecewise',
  85. pieces: [
  86. { min: 1000, max: 1000000, label: '大于等于1000人', color: '#372a28' },
  87. { min: 500, max: 999, label: '确诊500-999人', color: '#4e160f' },
  88. { min: 150, max: 499, label: '确诊150-499人', color: '#974236' },
  89. { min: 50, max: 149, label: '确诊50-149人', color: '#ee7263' },
  90. { min: 1, max: 49, label: '确诊1-49人', color: '#f5bba7' },
  91. ],
  92. color: ['#E0022B', '#E09107', '#A3E00B']
  93. },
  94. toolbox: {
  95. show: true,
  96. orient: 'vertical',
  97. left: 'right',
  98. top: 'center',
  99. feature: {
  100. mark: { show: true },
  101. dataView: { show: true, readOnly: false },
  102. restore: { show: true },
  103. saveAsImage: { show: true }
  104. }
  105. },
  106. roamController: {
  107. show: true,
  108. left: 'right',
  109. mapTypeControl: {
  110. 'china': true
  111. }
  112. },
  113. series: [
  114. {
  115. name: '确诊数',
  116. type: 'map',
  117. mapType: 'china',
  118. nameMap : {
  119. '南海诸岛' : '南海诸岛',
  120. '北京' : '北京市',
  121. '天津' : '天津市',
  122. '上海' : '上海市',
  123. '重庆' : '重庆市',
  124. '河北' : '河北省',
  125. '河南' : '河南省',
  126. '云南' : '云南省',
  127. '辽宁' : '辽宁省',
  128. '黑龙江' : '黑龙江省',
  129. '湖南' : '湖南省',
  130. '安徽' : '安徽省',
  131. '山东' : '山东省',
  132. '新疆' : '新疆维吾尔自治区',
  133. '江苏' : '江苏省',
  134. '浙江' : '浙江省',
  135. '江西' : '江西省',
  136. '湖北' : '湖北省',
  137. '广西' : '广西壮族自治区',
  138. '甘肃' : '甘肃省',
  139. '山西' : '山西省',
  140. '内蒙古' : "内蒙古自治区",
  141. '陕西' : '陕西省',
  142. '吉林' : '吉林省',
  143. '福建' : '福建省',
  144. '贵州' : '贵州省',
  145. '广东' : '广东省',
  146. '青海' : '青海省',
  147. '西藏' : '西藏自治区',
  148. '四川' : '四川省',
  149. '宁夏' : '宁夏回族自治区',
  150. '海南' : '海南省',
  151. '台湾' : '台湾',
  152. '香港' : '香港',
  153. '澳门' : '澳门'
  154. },
  155. roam: false,
  156. label: {
  157. show: true,
  158. color: 'rgb(249, 249, 249)'
  159. },
  160. data: mydata
  161. }
  162. ]
  163. };
  164.  
  165. //使用指定的配置项和数据显示图表
  166. myChart.setOption(option);
  167. myChart.on('click', function (params) {
  168. alert(params.name);
  169. var url = "lianxi3?city_name="+ params.name;
  170. window.location.href =url;
  171. });
  172.  
  173. },
  174. error:function(){//处理页面出错以后执行的函数。
  175.  
  176. }
  177. });
  178. }
  179.  
  180. </script>
  181. </body>
  182. </html>

之后就是对下钻的操作了。添加province的对应的json文件。之后代码如下:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  9. <meta name="viewport" content="width=device-width, initial-scale=1">
  10. <link href="${pageContext.request.contextPath }/css/bootstrap.min.css" rel="stylesheet">
  11. <script type="text/javascript" src="${pageContext.request.contextPath }/js/echarts.min(1).js"></script>
  12. <script type="text/javascript" src="${pageContext.request.contextPath }/js/china.js"></script>
  13. <script src="${pageContext.request.contextPath }/js/china.js"></script>
  14.  
  15. <script src="${pageContext.request.contextPath }/js/jquery-3.3.1.min.js"></script>
  16. <script src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
  17. <title>Insert title here</title>
  18.  
  19. </head>
  20. <body>
  21. <div id="ditu2" style="width: 700px;height: 700px;margin: 0 auto;"></div>
  22. </body>
  23. <script type="text/javascript">
  24.  
  25. $.ajax({
  26. url:"lianxi33",
  27. async:true,
  28. type:"POST",
  29. dataType:"json",
  30. data:{"City":"${city_name}",
  31. },
  32. success:function(data){
  33. alert(data[1].City+data[1].Dead_num);
  34. alert(data.length);
  35. var mydata2= new Array(0);
  36.  
  37. for(var i=1;i<data.length;i++){
  38. var d2 = {};
  39. d2["name"] = data[i].City+'市';
  40. d2["value"] = data[i].Confirmed_num;
  41. d2["Dead_num"] = data[i].Dead_num;
  42.  
  43. mydata2.push(d2);
  44. }
  45.  
  46. var chart = echarts.init(document.getElementById("ditu2"));
  47. $.getJSON('json/province/${city_name}.json', function(data) {
  48. echarts.registerMap('${city_name}', data);
  49. chart.setOption(option = {
  50. tooltip: {
  51. trigger: 'item',
  52. formatter:
  53. function(params) {
  54.  
  55. return params.name + '<br/>' + '确诊人数 : ' + params.value + '<br/>' + '死亡人数 : ' + params['data'].Dead_num;
  56. }//数据格式化 *
  57. },
  58. //左侧小导航图标
  59. visualMap: {
  60. show : true,
  61. x: 'left',
  62. y: 'center',
  63. splitList: [
  64. {start: 500, end:100000},{start: 400, end: 500},
  65. {start: 300, end: 400},{start: 200, end: 300},
  66. {start: 100, end: 200},{start: 0, end: 100},
  67. ],
  68. color: ['#5475f5', '#9feaa5', '#85daef','#74e2ca', '#e6ac53', '#9fb5ea']
  69. },
  70. series : {
  71. type : 'map',
  72. map : '${city_name}',
  73. roam: true,
  74. layoutCenter : [ '50%', '50%' ],
  75. layoutSize : '100%',
  76. label : {
  77. normal : {
  78. show : true,
  79. textStyle : {
  80. color : '#fff'
  81. }
  82. },
  83. emphasis : {
  84. show : false,
  85. textStyle : {
  86. color : '#fff'
  87. }
  88. }
  89. },
  90. itemStyle : {
  91. normal : {
  92. areaColor : 'rgba(24,65,91,0.3)',
  93. borderColor : '#9DDCEB',
  94. borderWidth : 3,
  95. shadowColor : '#9DDCEB',
  96. shadowBlur : 20
  97. },
  98. emphasis : {
  99. areaColor : 'rgba(24,65,91,0.3)'
  100. }
  101. },
  102. data:mydata2
  103. }
  104. })
  105. });
  106. },
  107. error:function(){
  108. alert("请求失败");
  109. },
  110.  
  111. });
  112. </script>
  113. </html>

点击湖北时,得到的界面如下:

echarts以地图形式显示中国疫情情况实现点击省份下钻的更多相关文章

  1. 数据视化Echarts+百度地图API实现市县区级下钻

    开始 这两天公司有个页面需要做数据可视化的展示,数据视化采用的是Echarts+百度地图API做展示,需要用到县级区级下钻的一个联动效果发现网上关于Echarts做到县区级下钻的资料很少,有的话也不是 ...

  2. 如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。

    原文:如何在WindowsPhone Bing Map控件中显示必应中国中文地图.谷歌中国中文地图. 最近正好有点业余时间,所以在做做各种地图.Bing Map控件本身就能显示必应地图,但是很遗憾微软 ...

  3. 【FusionCharts学习-3】显示中国地图

    概述 使用FusionCharts显示中国地图 资源获取 地图下载地址:http://www.fusioncharts.com/download/maps/definition/   将下载的地图拷贝 ...

  4. echarts map 地图在react项目中的使用

    需求 展示海南省地图,点击市高亮展示,并在右侧展示对应市的相关数据. 准备工作 Echarts 海南地图json 效果图 代码 index.tsx import React, { useRef, us ...

  5. echarts使用------地图生成----省市地图的生成及其他相关细节调整

    为使用多种业务场景,百度echarts地图示例只有中国地图,那么在使用省市地图的时候,就需要我们使用省市的地图数据了 以下为陕西西安市的地图示例: 此页面引用echarts的js:http://ech ...

  6. ECharts 实现地图散点图上(转载)

    转载来源:https://efe.baidu.com/blog/echarts-map-tutorial/ ECharts 实现地图散点图(上)  小红  2016-04-28  ECharts, 教 ...

  7. openlayers-统计图显示(中国区域高亮)

    openlayers版本: v3.19.1-dist 统计图效果:         案例下载地址:https://gitee.com/kawhileonardfans/openlayers-examp ...

  8. iOS_地图之显示附近微博

          1.首先需要新建一个MKMapView地图对象,在storyBoard中拖拽一个,在工程中导入MapKit.framework: 2.遵守MKMapViewDelegate协议,设定显示地 ...

  9. 百度地图API显示多个标注点,解决提示信息问题以及给标注增加地图旁的文字连接提示的另一种解决办法

    原文:百度地图API显示多个标注点,解决提示信息问题以及给标注增加地图旁的文字连接提示的另一种解决办法 公司的网站改版要求在一个页面显示百度地图.上面要同时显示很多标注点,标注点当然要有提示信息嘛,提 ...

随机推荐

  1. 数据结构 - List 接口

    简介 List接口继承自Collection接口,是Collection三大延伸接口之一.List中的元素都是有序的,并且都支持用索引访问.同时List中的元素允许重复. public interfa ...

  2. ret.data[0]._highlight = true iview table表格高亮

    ret.data[0]._highlight = true iview table表格高亮

  3. ASP.NET MVC5实现芒果分销后台管理系统(二):Code First快速集成EntityFramework

    在上一篇文章中,我们已经搭建了整个芒果后台管理系统整个工程架构,并集成了AutoMapper,日志组件等,接下来我们将使用Entity Framework完善系统的持久化存储部分.这篇EF的构造,我将 ...

  4. Journal of Proteome Research | Clinically Applicable Deep Learning Algorithm Using Quantitative Proteomic Data (分享人:翁海玉)

    题目:Clinically Applicable Deep Learning Algorithm Using Quantitative Proteomic Data 期刊:Journal of Pro ...

  5. 面试刷题11:java系统中io的分类有哪些?

    随着分布式技术的普及和海量数据的增长,io的能力越来越重要,java提供的io模块提供了足够的扩展性来适应. 我是李福春,我在准备面试,今天的问题是: java中的io有哪几种? java中的io分3 ...

  6. Symantec(赛门铁克)非受管检测

    为了查找局域网内没有安装赛门铁克客户端的IP,采用Symantec Endpoint Protect Manager 的非受管检测机制进行网段扫描. 非受管检测机制的原理是:每台电脑开机时都会向同网段 ...

  7. 解决WSL在执行32位程序时报错“Exec format error”的问题

    当你尝试在WSL上运行32位的程序时,shell将会报错:cannot execute binary file: Exec format error. 这是因为WSL目前暂不支持32位的ELF可执行文 ...

  8. Contest 154

    2019-09-16 17:22:28 总体感受:这次比赛的模版题也太多了吧,两条模版题没有想出来.总的来说,还是自己的刷题量还是严重的不够. 注意点: 1)提升刷题量和覆盖率非常重要: 2)在碰到大 ...

  9. 【Unity游戏开发】跟着马三一起魔改LitJson

    一.引子 在游戏开发中,我们少不了和数据打交道,数据的存储格式可谓是百花齐放,xml.json.csv.bin等等应有尽有.在这其中Json以其小巧轻便.可读性强.兼容性好等优点受到广大程序员的喜爱. ...

  10. leetcode签到 892. 三维形体的表面积

    题目 三维形体的表面积 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上. 请你返回最 ...