zoukankan      html  css  js  c++  java
  • 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文件中的数据,保持和数据一致,当你打开浏览器查看地图时,发现地图上的区县名称没变,那么请先清除页面缓存,方可行

  • 相关阅读:
    系统集成项目管理工程师计算题(成本管理计算)
    系统集成项目管理工程师计算题(进度管理计算)
    系统集成项目管理工程师计算题(期望值)
    系统集成项目管理工程师计算题(三点估算)
    系统集成项目管理工程师计算题(沟通渠道)
    Asp.net core web Api 应用Jwt 验证
    Linux vmstat命令
    关于Java集合的小抄
    @Resource和@Autowire
    Servlet是线程安全的吗?
  • 原文地址:https://www.cnblogs.com/yixtx/p/8619675.html
Copyright © 2011-2022 走看看