ECharts实现中国疫情地图
说在前面: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)