cxy0210

说在前面:ECharts 实现中国疫情地图 自动读取数据 接口为:腾讯数据

一丶

运行效果图:

 

 

 

实现代码:

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4   <meta charset="UTF-8">
  5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6   <title>疫情地图展示</title>
  7   <style>
  8     .container {
  9       width: 1200px;
 10       margin: 0 auto;
 11     }
 12 
 13     #myEcharts {
 14       width: 800px;
 15       height: 500px;
 16       border: solid 1px red;
 17       margin: 0 auto;
 18     }
 19   </style>
 20   <script src="https://www.echartsjs.com/examples/vendors/jquery/jquery.js"></script>
 21   <!-- 引入 echarts.js -->
 22   <script src="https://www.echartsjs.com/examples/vendors/echarts/echarts.min.js?_v_=1578305236132"></script>
 23   <!--引入中国的地图数据js文件,引入后会自动注册地图名字和数据-->
 24   <script src="https://www.echartsjs.com/examples/vendors/echarts/map/js/china.js?_v_=1578305236132"></script>
 25 
 26 </head>
 27 
 28 <body>
 29   <div class="container">
 30     <h3>累计确诊人数如下:</h3>
 31     <!--为echarts准备一个dom容器-->
 32     <div id="myEcharts"></div>
 33   </div>
 34 
 35 
 36   <script>
 37     //初始化echarts实例
 38     var myChart = echarts.init(document.getElementById(\'myEcharts\'));
 39     // 指定图表的配置项和数据
 40     option = {
 41       title: {
 42         text: \'中国疫情图\',
 43         left: \'center\'
 44       },
 45       tooltip: {
 46         trigger: \'item\'
 47       },
 48       legend: {
 49         orient: \'vertical\',
 50         left: \'left\',
 51         data: [\'中国疫情图\']
 52       },
 53       visualMap: {
 54         type: \'piecewise\',
 55         pieces: [
 56           { min: 1000, max: 1000000, label: \'大于等于1000人\', color: \'#372a28\' },
 57           { min: 500, max: 999, label: \'确诊500-999人\', color: \'#4e160f\' },
 58           { min: 100, max: 499, label: \'确诊100-499人\', color: \'#974236\' },
 59           { min: 10, max: 99, label: \'确诊10-99人\', color: \'#ee7263\' },
 60           { min: 1, max: 9, label: \'确诊1-9人\', color: \'#f5bba7\' },
 61         ],
 62         color: [\'#E0022B\', \'#E09107\', \'#A3E00B\']
 63       },
 64       toolbox: {
 65         show: true,
 66         orient: \'vertical\',
 67         left: \'right\',
 68         top: \'center\',
 69         feature: {
 70           mark: { show: true },
 71           dataView: { show: true, readOnly: false },
 72           restore: { show: true },
 73           saveAsImage: { show: true }
 74         }
 75       },
 76       roamController: {
 77         show: true,
 78         left: \'right\',
 79         mapTypeControl: {
 80           \'china\': true
 81         }
 82       },
 83       series: [
 84         {
 85           name: \'确诊数\',
 86           type: \'map\',
 87           mapType: \'china\',
 88           roam: false,
 89           label: {
 90             show: true,
 91             color: \'rgb(249, 249, 249)\'
 92           },
 93           data: []
 94         }
 95       ]
 96     };
 97 
 98     //使用指定的配置项和数据显示图表
 99     myChart.setOption(option);
100 
101     //获取数据
102     function getData() {
103       $.ajax({
104         url: "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5",
105         dataType: "jsonp",
106         success: function (data) {
107           //  console.log(data.data)
108           var res = data.data || "";
109           res = JSON.parse(res);
110           var newArr = [];
111           //newArr的数据格式为:
112           // [{
113           //   name: \'北京11\',
114           //   value: 212
115           // }, {
116           //   name: \'天津\',
117           //   value: 60
118           // }]
119           if (res) {
120             //获取到各个省份的数据
121             var province = res.areaTree[0].children;
122             for (var i = 0; i < province.length; i++) {
123               var json = {
124                 name: province[i].name,
125                 value: province[i].total.confirm
126               }
127               newArr.push(json)
128             }
129             console.log(newArr)
130             console.log(JSON.stringify(newArr))
131             //使用指定的配置项和数据显示图表
132             myChart.setOption({
133               series: [
134                 {
135                   name: \'确诊数\',
136                   type: \'map\',
137                   mapType: \'china\',
138                   roam: false,
139                   label: {
140                     show: true,
141                     color: \'rgb(249, 249, 249)\'
142                   },
143                   data: newArr
144                 }
145               ]
146             });
147           }
148         }
149 
150       })
151     }
152     getData();
153 
154   </script>
155 </body>
156 </html>

 

二 : 自我尝试

 

1。 首先困扰的问题是怎么将读取的数据与调用的js 文件对接 ?

解决 方法 : 调用dateset 自定义管理数据,然后通过namemap 将数据映射,让地名一一对应(如不对应则数据无法显示)。

2.点击对应的省份进入到省级的地图:emmm  目前没有解决。

效果展示:

 

 

我的参考+修改+瞎搞 代码如下:

其余代码与 之前一篇类似--->

主要是jsp 代码:

  1 <%@ page language="java" contentType="text/html; charset=UTF-8"
  2     pageEncoding="UTF-8"%>
  3 <%@page import="com.Bean.infos"%>
  4 <%@page import="java.util.List"%>
  5 <!DOCTYPE html>
  6 <html lang="en">
  7 <head>
  8   <meta charset="UTF-8">
  9   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 10   <title>疫情地图展示</title>
 11   <style>
 12     #myEcharts {
 13       width: 800px;
 14       height: 500px;
 15       border: solid 1px red;
 16       margin: 0 auto;
 17     }
 18   </style>
 19   <!-- 引入 echarts.js  直接在Echarts 网站找到的线上的js文件 不需要下载 下面一样 -->
 20   <script src="https://www.echartsjs.com/examples/vendors/echarts/echarts.min.js?_v_=1578305236132"></script>
 21   <!--引入中国的地图数据js文件,引入后会自动注册地图名字和数据-->
 22   <script src="https://www.echartsjs.com/examples/vendors/echarts/map/js/china.js?_v_=1578305236132"></script>
 23 
 24 </head>
 25 
 26 <body>
 27  <%        
 28  //使用Java 
 29 request.setCharacterEncoding("utf-8");
 30  //将获取的数据传递到此
 31 List <infos> list =(List<infos>) request.getAttribute("list"); 
 32 
 33 int i=0;
 34 %>
 35 
 36 
 37 
 38   <!--为echarts准备一个dom容器-->
 39   <div id="myEcharts"></div>
 40   <script>
 41     //初始化echarts实例
 42     var myChart = echarts.init(document.getElementById(\'myEcharts\'));
 43     // 指定图表的配置项和数据
 44     option = {
 45     //标题组件
 46       title: {
 47         text: \'中国疫情图\',
 48         left: \'center\'
 49       },
 50       //提示框组件
 51       tooltip: {
 52         trigger: \'item\'
 53       },
 54       //图例
 55      /* legend: {
 56         orient: \'vertical\',
 57         left: \'left\',
 58         data: [\'中国疫情图\']
 59       },*/
 60       //视觉映射组件
 61       visualMap: {
 62         type: \'piecewise\',
 63         pieces: [
 64 //           { min: 1000, max: 1000000, label: \'大于等于1000人\', color: \'#372a28\' },
 65           { min: 10000, max: 99999, label: \'确诊10000-99999人\', color: \'#4e160f\' },
 66           { min: 1000, max: 9999, label: \'确诊1000-9999人\', color: \'#974236\' },
 67           { min: 100, max: 999, label: \'确诊100-999人\', color: \'#ee7263\' },
 68           { min: 1, max: 99, label: \'确诊1-99人\', color: \'#f5bba7\' },
 69         ],
 70         color: [\'#E0022B\', \'#E09107\', \'#A3E00B\']
 71       },
 72       //工具栏 自定义各种工具
 73       toolbox: {
 74         show: true,
 75         orient: \'vertical\',
 76         left: \'right\',
 77         top: \'center\',
 78         feature: {
 79           mark: { show: true },
 80           dataView: { show: true, readOnly: false },
 81           restore: { show: true },
 82           saveAsImage: { show: true }
 83         }
 84       },
 85       //地图缩放快捷键
 86       roamController: {
 87         show: true,
 88         left: \'right\',
 89         mapTypeControl: {
 90           \'china\': true
 91         }
 92       },
 93       
 94       dataset:{
 95           
 96           source:[
 97               
 98               //将读取到的数据传递到source当中,并在图标显示
 99               <%
100               if(list!=null){
101                   
102               for(infos info:list){
103                   i++;
104               
105                                   
106               
107               
108               %>
109               
110               [\'<%=info.getDate()%>\',<%=Integer.parseInt(info.getConfirmed_num())%>],
111               
112               
113               
114               <%
115               System.out.println(info.getDate()+info.getConfirmed_num());
116               //if(i>33) break;
117               }
118               }
119               %>
120               
121               
122               
123               
124                   /*[\'北京\',1],
125                   [\'天津\',2],
126                   [\'上海\',3],
127                   [\'重庆\',4],
128                   [\'河北\',5],
129                   [\'河南\',6],
130                   [\'云南\',7],
131                   [\'辽宁\',8],
132                   [\'黑龙江\',9],
133                   [\'湖南\',10],
134                   [\'安徽\',11],
135                   [\'山东\',12],
136                   [\'新疆\',13],
137                   [\'江苏\',14],
138                   [\'浙江\',15],
139                   [\'江西\',16],
140                   [\'湖北\',17],
141                   [\'广西\',18],
142                   [\'甘肃\',19],
143                   [\'山西\',20],
144                   [\'内蒙古\',21],
145                   [\'陕西\',22],
146                   [\'吉林\',23],
147                   [\'福建\',24],
148                   [\'贵州\',25],
149                   [\'广东\',26],
150                   [\'青海\',27],
151                   [\'西藏\',28],
152                   [\'四川\',29],
153                   [\'宁夏\',30],
154                   [\'海南\',3],
155                   [\'台湾\',32],
156                   [\'香港\',33],
157                   [\'澳门\',34],*/
158           ]
159       },
160       
161       
162       
163       
164       
165       
166       
167       
168       
169       
170       
171       series: [
172         {
173           name: \'确诊数\',
174           type: \'map\',
175           mapType: \'china\',
176           roam: false,
177           label: {
178             show: true,
179             color: \'rgb(249, 249, 249)\'
180           },
181           // 默认地名与数据库的地面不一致 ,进行映射操作
182           nameMap:{
183               
184               "南海诸岛" : "南海诸岛",
185                \'北京\'   :\'北京市\',
186                \'天津\'   :\'天津市\',
187                \'上海\'   :\'上海市\',
188                \'重庆\'   :\'重庆市\',
189                \'河北\'   :\'河北省\',
190                \'河南\'   :\'河南省\',
191                \'云南\'   :\'云南省\',
192                \'辽宁\'   :\'辽宁省\',
193                \'黑龙江\'  :  \'黑龙江省\',
194                \'湖南\'   :\'湖南省\',
195                \'安徽\'   :\'安徽省\',
196                \'山东\'   :\'山东省\',
197                \'新疆\' :\'新疆维吾尔自治区\',
198                \'江苏\' :\'江苏省\',
199                \'浙江\' :\'浙江省\',
200                \'江西\' :\'江西省\',
201                \'湖北\' :\'湖北省\',
202                \'广西\' : \'广西壮族自治区\',
203                \'甘肃\' :\'甘肃省\',
204                \'山西\' :\'山西省\',
205                \'内蒙古\' : "内蒙古自治区",
206                \'陕西\'  :\'陕西省\',
207                \'吉林\'  :\'吉林省\',
208                \'福建\'  :\'福建省\',
209                \'贵州\'  :\'贵州省\',
210                \'广东\'  :\'广东省\',
211                \'青海\'  :\'青海省\',
212                \'西藏\'  :\'西藏自治区\',
213                \'四川\'  :\'四川省\',
214                \'宁夏\' :\'宁夏回族自治区\',
215                \'海南\' :\'海南省\',
216                \'台湾\' :\'台湾\',
217                \'香港\' :\'香港\',
218                \'澳门\' :\'澳门\'
219           }
220           
221           
222           
223           
224           
225           
226           /*data: [
227             {
228               name: \'北京\',
229               value: 212
230             }, {
231               name: \'天津\',
232               value: 60
233             }, {
234               name: \'上海\',
235               value: 208
236             }, {
237               name: \'重庆\',
238               value: 337
239             }, {
240               name: \'河北\',
241               value: 126
242             }, {
243               name: \'河南\',
244               value: 675
245             }, {
246               name: \'云南\',
247               value: 117
248             }, {
249               name: \'辽宁\',
250               value: 74
251             }, {
252               name: \'黑龙江\',
253               value: 155
254             }, {
255               name: \'湖南\',
256               value: 593
257             }, {
258               name: \'安徽\',
259               value: 480
260             }, {
261               name: \'山东\',
262               value: 270
263             }, {
264               name: \'新疆\',
265               value: 29
266             }, {
267               name: \'江苏\',
268               value: 308
269             }, {
270               name: \'浙江\',
271               value: 829
272             }, {
273               name: \'江西\',
274               value: 476
275             }, {
276               name: \'湖北\',
277               value: 13522
278             }, {
279               name: \'广西\',
280               value: 139
281             }, {
282               name: \'甘肃\',
283               value: 55
284             }, {
285               name: \'山西\',
286               value: 74
287             }, {
288               name: \'内蒙古\',
289               value: 34
290             }, {
291               name: \'陕西\',
292               value: 142
293             }, {
294               name: \'吉林\',
295               value: 42
296             }, {
297               name: \'福建\',
298               value: 179
299             }, {
300               name: \'贵州\',
301               value: 56
302             }, {
303               name: \'广东\',
304               value: 797
305             }, {
306               name: \'青海\',
307               value: 15
308             }, {
309               name: \'西藏\',
310               value: 1
311             }, {
312               name: \'四川\',
313               value: 282
314             }, {
315               name: \'宁夏\',
316               value: 34
317             }, {
318               name: \'海南\',
319               value: 79
320             }, {
321               name: \'台湾\',
322               value: 10
323             }, {
324               name: \'香港\',
325               value: 15
326             }, {
327               name: \'澳门\',
328               value: 9
329             }
330           ]*/
331         }
332       ]
333     };
334 
335     //使用指定的配置项和数据显示图表
336     myChart.setOption(option);
337   </script>
338 </body>
339 
340 </html>

 

二: (网上找到的示例,正在学习ing)

Echarts实现中国疫情地图

分类:

技术点:

相关文章: