echarts 地图 动态 展示 结合css+js
echarts地图展示功能非常强大,官网上静态展示的样例非常多了,动态的资料少。研究了下。我眼下实现的通过ajax从server获取数据动态展示地图。
另外,我们有时候希望在地图之上做些自己定义的东西,比方:通知框。或者其它的东西。我们能够通过css图层的方式在地图之上实现。我实现的效果例如以下:
附上源码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>ECharts</title> <style> .dn{ display:none; } .divcss5-1 { z-index: 10; border: 1px solid rgb(204, 204, 204); left: 900px; top: 100px; width: 400px; height: 540px; position: absolute; padding: 0 10px; } </style> </head> <body> <div id="board" class="divcss5-1"></div> <!--Step:1 Prepare a dom for ECharts which (must) has size (width & hight)--> <!--Step:1 为ECharts准备一个具备大小(宽高)的Dom--> <!--<div id="main" style="height:500px;border:1px solid #ccc;padding:10px;"></div>--> <div id="mainMap" style="height: 700px; border: 0px solid #ccc; padding: 10px;margin:25px 0;"></div> <!--Step:2 Import echarts.js--> <!--Step:2 引入echarts.js--> <script src="/js/echarts/dist/echarts-all.js"></script> <script src="/js/jquery-1.4.3.js"></script> <script type="text/javascript"> //var myChart = echarts.init(document.getElementById('mainMap')); // Step:4 require echarts and use it in the callback. // Step:4 动态载入echarts然后在回调函数中開始使用,注意保持按需载入结构定义图表路径 var option = { backgroundColor: '#ffffff', title : { text : '***网报进度', subtext : '(当前总数)', x : 'center' }, tooltip : { trigger : 'item', formatter : "{c}" }, legend : { orient : 'vertical', x : 'left', data : [ '注冊情况统计' ] }, dataRange : { x : 'left', y : 'bottom', //orient : 'horizontal', min : 0, max : 3000000, text : [ '300万', '0' ], // 文本,默觉得数值文本 splitNumber : 0 }, toolbox : { show : false, }, roamController : { show : false, }, series : [{ name : '注冊情况统计', type : 'map', mapType : 'china', mapLocation: { x: '100', y: 'center', height: '80%' }, roam : false, showLegendSymbol : false, itemStyle : { normal : { borderWidth : 1, borderColor : 'black', color : 'grey', label : { show : true, textStyle : { color : "black", fontWeight : "bold" } } }, emphasis : { label : { show : true } } }, data : [], geoCoord: { "海门":[121.15,31.89], "北京":[116.46,39.92] } }] }; //myChart.setOption(option); var mapDiv = document.getElementById('mainMap'); var myChart = echarts.init(mapDiv); myChart.showLoading({ text: '正在努力的读取数据中...', //loading话术 }); function getTotal(){ $.getJSON("/m/total.action", {xllb:'20'}, function(json){ var mapChart = echarts.init(mapDiv); var myOption = option; var cntAll = 0; for(var i=0;i<json.length;i++) { cntAll+=json[i].value; } myOption.title.subtext = "(当前总数"+cntAll+")"; //var series = myChart.getSeries(); myOption.series[0].data = json; //myChart.setSeries(series); mapChart.setOption(myOption, true); //console.log(json); } ); } var index = 0; function addMsg(){ $.getJSON("/m/msg.action", {xllb:'20',start:index}, function(json){ if(json.length>0) { var msg = json[0].msg; var $board = $("#board"); var $ps = $board.find("p"); if($ps.size()>13) { var $lastP = $ps.last() $lastP.hide("slow"); $lastP.remove(); //console.log("已满"); } var p = $("<p class='dn'>"+msg+"</p>"); $board.prepend(p); p.slideDown("slow"); index++; } } ); } setInterval("addMsg()",5000); setInterval("getTotal()",5000); //getTotal(myChart); </script> </body> </html>