echarts在項目中的使用


1.場景

  在echarts的map中展示數據,項目中有個實驗室地圖模塊,展示重慶所有區縣的所擁有的實驗室機構,當鼠標點擊區縣時,會彈出信息框,展示該區縣所有的實驗室機構以及聯系電話列表展示,點擊實驗室機構名稱可跳轉到機構詳情頁面

2.所使用技術

  echarts的map組件、java的StringBuff拼接地圖實驗室的json格式數據、加載重慶市區縣地圖數據的json文件、freemarker做頁面展示

3.代碼

  freemarker頁面 

<#import "/WEB-INF/template/website/base_website.ftl" as base>
<@base.html title="實驗室地圖"; templateId>
<#if templateId=="head">
   <!--引入echarts-->
<script type="text/javascript" src="${Context}/js/website/echarts.min.js"></script> <style type="text/css"> .hover-div{ width: 350px; padding: 10px; background-color: #FFFFFF;} .hover-div .title{ overflow: hidden; font-size: 12px; color: #1DA7A9;} .hover-div .l{ float: left;} .hover-div .r{ float: right;} .hover-div ul{ padding: 10px 0;} .hover-div li{ overflow: hidden; font-size: 12px; color: #666666; line-height: 25px;} .hover-div .tip{ font-size: 12px; color: #999999;} </style> </#if> <#if templateId=="body"> <!--guide--> <div class="guide"> <div class="view-center"> <span>當前位置:</span> <a href="##">檢驗檢測機構信息</a> <a>></a> <a>實驗室地圖</a> </div> </div> <div class="main"> <div class="view-center bg-FFF pl-60px pr-60px"> <div class="lab-module"> <div class="tab-button"> <a class="active" href="laboratoryMap.action">實驗室地圖</a> <a href="laboratorList.action">實驗室名單</a> </div> <div class="map-box">
              <!--地圖容器--> <div id="map" style="height: 100%;"></div> </div> </div> </div> </div> <div style=" height: 260px;"></div> <div id="mapMain" style="position: fixed;z-index: 99999;top: 50%;left: 50%;border: 1px solid #c7c7c7;margin-top: -100px;margin-left: -150px;"></div> </#if> <script type="text/javascript"> $(function(){ $("body").click(function(){ $("#mapMain").html(""); }); });
          //點擊實驗室名稱跳轉詳情頁面方法
function mapfun(id){ event.stopPropagation(); window.location.href="${Context}/website/member/memberDisplay.action?userId="+id; }
          //拼接點擊地圖區縣時彈出的信息框方法
function loadList(data,oEvent){ var html = "<div class='hover-div'>" html += " <div class='title'>"; html += " <span class='l'>實驗室名稱</span>"; html += " <span class='r'>聯系電話</span>"; html += " </div>"; html += " <ul>"; for(var i = 0; i < data.length; i++){ html += " <li><span class='l' onclick= 'mapfun(\""+data[i].id+"\")'>"+data[i].name+"</span><span class='r'>"+data[i].tel+"</span></li>"; } html += " </ul>"; html += " <div class='tip'>該區縣共 "+data.length+" 家</div>"; html += "</div>"; $("#mapMain").html(html); oEvent.event.cancelBubble = true; oEvent.event.stopPropagation(); return html; } //初始化地圖容器 var myChart = echarts.init(document.getElementById('map'));
          //讀取地圖原始數據 $.get(
'${Context}/js/website/chongqing.json', function (geoJson) { echarts.registerMap('chongqing', geoJson); myChart.on('click', function (params,ev) { var oEvent = params.event; var data = []; var name = params.name;
                   //${dataSource} 是從后台穿過來的json字符串數據 data
= ${dataSource}[name]; return loadList(data,oEvent); });
            //匹配json文件中的數據,缺一不可 myChart.setOption(option
= { title: { }, series: [ { name: '重慶', type: 'map', mapType: 'chongqing', // 自定義擴展圖表類型 itemStyle:{ normal:{label:{show:true}}, emphasis:{label:{show:true}} }, data:[ {name:'萬州區',value:'cq'}, {name:'涪陵區',value:'cq'}, {name:'渝中區',value:'cq'}, {name:'大渡口區',value:'cq'}, {name:'江北區',value:'cq'}, {name:'沙坪壩區',value:'cq'}, {name:'九龍坡區',value:'cq'}, {name:'南岸區',value:'cq'}, {name:'北碚區',value:'cq'}, {name:'綦江區',value:'cq'}, {name:'大足區',value:'cq'}, {name:'渝北區',value:'cq'}, {name:'巴南區',value:'cq'}, {name:'黔江區',value:'cq'}, {name:'長壽區',value:'cq'}, {name:'江津區',value:'cq'}, {name:'合川區',value:'cq'}, {name:'永川區',value:'cq'}, {name:'南川區',value:'cq'}, {name:'璧山區',value:'cq'}, {name:'銅梁區',value:'cq'}, {name:'潼南區',value:'cq'}, {name:'榮昌區',value:'cq'}, {name:'梁平縣',value:'cq'}, {name:'城口縣',value:'cq'}, {name:'豐都縣',value:'cq'}, {name:'秀山土家族苗族自治縣',value:'cq'}, {name:'墊江縣',value:'cq'}, {name:'武隆縣',value:'cq'}, {name:'忠縣',value:'cq'}, {name:'石柱土家族自治縣',value:'cq'}, {name:'開縣',value:'cq'}, {name:'雲陽縣',value:'cq'}, {name:'奉節縣',value:'cq'}, {name:'彭水苗族土家族自治縣',value:'cq'}, {name:'酉陽土家族苗族自治縣',value:'cq'}, {name:'巫山縣',value:'cq'}, {name:'巫溪縣',value:'cq'} ] } ] }); }); </script> </@>

   json數據文件

    

  后台提供實驗室地圖數據

  

/**
     * 實驗室地圖頁面
     * @return
     * @throws Exception
     */
    public String laboratoryMap() throws Exception{
        HibernateBean bean = HibernateBeanFactory.createBean();
        String sql = "select * from client_user where isEnable=1 and membershipAuthority = 1";
        Map<String, Object>  map = new HashMap<String, Object>();
        String qx = "SELECT NAME FROM china WHERE parent_code = '500200' OR parent_code = '500100'";
        qxList = bean.findBySql(qx, map);
        StringBuffer sb = new StringBuffer("{");
        for (int i = 0; i < qxList.size(); i++) {
            sql +=" and county = :county";
            map.put("county", qxList.get(i)[0].toString());
            cuserList = bean.findBySql(sql, ClientUser.class, map);
            sb.append('"'+qxList.get(i)[0].toString()+'"' +":[");
            if(cuserList.size()==0){
                if(i==qxList.size()-1){
                    sb.append("]");
                }else{
                    sb.append("],");
                }
                
            }else{
                for (int j = 0; j < cuserList.size(); j++) {
                    if(i==qxList.size()-1){
                        sb.append("{\"id\":"+'"'+cuserList.get(j).getUserId()+'"'+",\"name\":"+'"'+cuserList.get(j).getUnitName()+'"'+",\"tel\":"+'"'+cuserList.get(j).getCellPhone()+'"'+"}]");
                    }
                    if(j == cuserList.size()-1){
                        sb.append("{\"id\":"+'"'+cuserList.get(j).getUserId()+'"'+",\"name\":"+'"'+cuserList.get(j).getUnitName()+'"'+",\"tel\":"+'"'+cuserList.get(j).getCellPhone()+'"'+"}],");
                    }else{
                        sb.append("{\"id\":"+'"'+cuserList.get(j).getUserId()+'"'+",\"name\":"+'"'+cuserList.get(j).getUnitName()+'"'+",\"tel\":"+'"'+cuserList.get(j).getCellPhone()+'"'+"},");    
                    }
                }
            }   
        }
        sb.append("}");
        dataSource = sb.toString();
        return "success";
    }

  得到的數據格式如下:

{"萬州區":[{"id":"402881f0622e776701622e779ef70000","name":"南京科技","tel":"15923522574"}],"涪陵區":[],"渝中區":[],"大渡口區":[],"江北區":[],"沙坪壩區":[],"九龍坡區":[],"南岸區":[],"北碚區":[],"綦江區":[],"大足區":[],"渝北區":[],"巴南區":[],"黔江區":[],"長壽區":[],"江津區":[],"合川區":[],"永川區":[],"南川區":[],"璧山區":[],"銅梁區":[],"潼南區":[],"榮昌區":[],"梁平縣":[],"城口縣":[],"豐都縣":[],"墊江縣":[],"武隆縣":[],"忠縣":[],"開縣":[],"雲陽縣":[],"奉節縣":[],"巫山縣":[],"巫溪縣":[],"石柱土家族自治縣":[],"秀山土家族苗族自治縣":[],"酉陽土家族苗族自治縣":[],"彭水苗族土家族自治縣":[]}

 

4、補充

  如果地圖展示區縣名稱和數據庫不一致,修改json文件中的數據,保持和數據一致,當你打開瀏覽器查看地圖時,發現地圖上的區縣名稱沒變,那么請先清除頁面緩存,方可行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM