hightChart 的一些實現


<%--
@(#)appversion.html 2016/4/18
@author cwq
--%>
<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8"%>
<%@ include file="/WEB-INF/taglib.jsp"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta charset="utf-8" />
    <title><jc:title /></title>

    <meta name="description" content="overview &amp; stats" />

    <link rel="stylesheet" href="/res/ace-1.3.3/assets/css/bootstrap.css" />
    <link rel="stylesheet" href="/res/ace-1.3.3/assets/css/font-awesome.css" />

    <link rel="stylesheet" href="/res/ace-1.3.3/assets/css/jquery-ui.css" />
    <link rel="stylesheet" href="/res/ace-1.3.3/assets/css/datepicker.css" />
    <link rel="stylesheet" href="/res/ace-1.3.3/assets/css/ui.jqgrid.css" />

    <link rel="stylesheet" href="/res/ace-1.3.3/assets/css/ace-fonts.css" />

    <link rel="stylesheet" href="/res/ace-1.3.3/assets/css/ace.css" class="ace-main-stylesheet" id="main-ace-style" />

    <!--[if lte IE 9]>
    <link rel="stylesheet" href="/res/ace-1.3.3/assets/css/ace-part2.css" class="ace-main-stylesheet" />
    <![endif]-->

    <!--[if lte IE 9]>
    <link rel="stylesheet" href="/res/ace-1.3.3/assets/css/ace-ie.css" />
    <![endif]-->

    <!-- inline styles related to this page -->

    <!-- ace settings handler -->
    <script src="/res/ace-1.3.3/assets/js/ace-extra.js"></script>

    <!-- HTML5shiv and Respond.js for IE8 to support HTML5 elements and media queries -->

    <!--[if lte IE 8]>
    <script src="/res/ace-1.3.3/assets/js/html5shiv.js"></script>
    <script src="/res/ace-1.3.3/assets/js/respond.js"></script>
    <![endif]-->
</head>

<body class="no-skin">

<%--頂部--%>
<div id="navbar" class="navbar navbar-default navbar-fixed-top">
    <script type="text/javascript">
        try{ace.settings.check('navbar' , 'fixed')}catch(e){}
    </script>

    <div class="navbar-container" id="navbar-container">
        <jsp:include page="/WEB-INF/view/common/top.jsp"/>
    </div>
</div>
<%--end 頂部--%>

<div class="main-container" id="main-container">
    <script type="text/javascript">
        try{ace.settings.check('main-container' , 'fixed')}catch(e){}
    </script>

    <!-- #下拉 -->
    <div id="sidebar" class="sidebar sidebar-fixed responsive">
        <script type="text/javascript">
            try{ace.settings.check('sidebar' , 'fixed')}catch(e){}
        </script>

        <div class="sidebar-shortcuts" id="sidebar-shortcuts">
            <div class="sidebar-shortcuts-large" id="sidebar-shortcuts-large">
                <button class="btn btn-success">
                    <i class="ace-icon fa fa-signal"></i>
                </button>

                <button class="btn btn-info">
                    <i class="ace-icon fa fa-pencil"></i>
                </button>

                <!-- #section:basics/sidebar.layout.shortcuts -->
                <button class="btn btn-warning">
                    <i class="ace-icon fa fa-users"></i>
                </button>

                <button class="btn btn-danger">
                    <i class="ace-icon fa fa-cogs"></i>
                </button>

                <!-- /section:basics/sidebar.layout.shortcuts -->
            </div>

            <div class="sidebar-shortcuts-mini" id="sidebar-shortcuts-mini">
                <span class="btn btn-success"></span> <span class="btn btn-info"></span>

                <span class="btn btn-warning"></span> <span class="btn btn-danger"></span>
            </div>
        </div>
        <!-- /.sidebar-shortcuts -->

        <!-- 菜單 -->
        <jc:menu />
        <!-- /.nav-list -->

        <!-- #section:basics/sidebar.layout.minimize -->
        <div class="sidebar-toggle sidebar-collapse" id="sidebar-collapse">
            <i class="ace-icon fa fa-angle-double-left"
               data-icon1="ace-icon fa fa-angle-double-left"
               data-icon2="ace-icon fa fa-angle-double-right"></i>
        </div>

        <!-- /section:basics/sidebar.layout.minimize -->
        <script type="text/javascript">
            try{ace.settings.check('sidebar' , 'collapsed')}catch(e){}
        </script>
    </div>

    <!-- /section:basics/sidebar -->
    <div class="main-content">
        <div class="main-content-inner">
            <!-- #section:basics/content.breadcrumbs -->
            <div class="breadcrumbs breadcrumbs-fixed" id="breadcrumbs">
                <script type="text/javascript">
                    try{ace.settings.check('breadcrumbs' , 'fixed')}catch(e){}
                </script>
                <jc:breadcrumb />
            </div>
            <div class="page-content">
                <div class="clearfix"></div>
                <div class="row" style="margin: 20px 0px">
                    <div class="col-sm-10">
                         <div id="ID_container" style="min-width:400px;height:400px"></div>
                    </div>
                    <div class="col-sm-2">
                        <div class="row"style="margin-top:10px;margin-bottom: 10px ">
                           統計方式:
                            <select id="ID_userCount">
                                <option value="0">按日統計</option>
                                <option value="1">按月統計</option>
                                <option value="2">按年統計</option>
                            </select>
                        </div>
                        <div class="row" style="margin-top:10px;margin-bottom: 10px ">
                           選擇頁碼:第 <select id="ID_userPage">
                            </select></div>
                    </div>
                </div>
                <div class="clearfix"></div>
                <div class="row" style="margin: 20px 0px">
                    <div id="ID_container_shop" style="min-width:400px;height:400px"></div>
                </div>
                <div class="clearfix"></div>
                <div class="row" style="margin: 20px 0px">
                    <div class="col-sm-10">
                        <div id="ID_container_order" style="min-width:400px;height:400px"></div>
                    </div>
                    <div class="col-sm-2">
                        <div class="row"style="margin-top:10px;margin-bottom: 10px ">
                            統計方式:
                            <select id="ID_userCount_order">
                                <option value="0">按日統計</option>
                                <option value="1">按月統計</option>
                                <option value="2">按年統計</option>
                            </select>
                        </div>
                        <div class="row" style="margin-top:10px;margin-bottom: 10px ">
                            選擇頁碼:第 <select id="ID_userPage_order">
                        </select></div>
                    </div>
                </div>
                <div class="row" style="margin: 20px 0px">
                    <div class="col-lg-6">
                        <iframe id="ID_map"class="col-lg-12" style="height: 600px;"></iframe>
                    </div>
                    <div class="col-lg-6">
                        <div id="ID_area" style="min-width:400px;height:400px"></div>
                    </div>
                </div>
                <div class="row" style="margin: 20px 0px">
                    <div id="ID_sex" style="min-width:400px;height:400px"></div>
                </div>
                <div class="row" style="margin: 20px 0px">
                    <div id="ID_showFz" style="min-width:400px;height:400px"></div>
                </div>
            </div>
        </div>
    </div>
    <!-- /.main-content -->

    <jsp:include page="/WEB-INF/view/common/footer.jsp" flush="true" />

    <a href="#" id="btn-scroll-up" class="btn-scroll-up btn btn-sm btn-inverse">
        <i class="ace-icon fa fa-angle-double-up icon-only bigger-110"></i>
    </a>
    <!-- /.main-container -->

     <jsp:include page="/WEB-INF/view/common/basejs.jsp"/>
    <%--// jQuery--%>
    <%--<script src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script>--%>
    <%--// Highcharts--%>
    <script src="/res/highcharts/highcharts.js"></script>

    <script type="text/javascript">
        var Y = [];//y週數組
//        var showUserDataTotalPage = 0 ;//第一個報表所有的行數
        $(document).ready(function () {
            showUserData(0,1);
            showShopItem();
            showOrderData(0,1);
            toMap();
            showSex();
            showFz();
        });

        /*
        *
        * @showType 0是每天 1是每月 2是每年
        * @page 第幾頁
        * */

        var showUserData = function(showType,page){
            /*
             * type 1安裝用戶 , 註冊的用戶 , 美容師註冊 ,訂單成單量 2商品統計 3用戶區域 4性別 5膚質
             * show_type 0 安裝用戶 1 註冊的用戶 2 美容師註冊 3 訂單成單量
             * 按天統計
             * */
             var rows = 10;//日
             $.post("/statistics",{
                 type:1,
                 show_type:0,
                 page:page,
                 rows:rows,
                 selectType:showType
             },function(data1){//code 0
//                 console.log(data1);
                 if(data1&&data1.totalPage){
//                     showUserDataTotalPage = data1.totalPage;
//                     firstPage: true lastPage: true pageNumber: 1 pageSize: 20 totalPage: 1 totalRow: 2
                     for(var i=0;i<data1.totalPage;i++){
                         $("#ID_userPage").append("<option value="+(i+1)+">"+(i+1)+"</option>");
                     }
                 }
                $.post("/statistics",{
                    type:1,
                    show_type:1,
                    page:page,
                    rows:rows,
                    selectType:showType
                },function(data2){
                    $.post("/statistics", {
                        type:1,
                        show_type:2,
                        page:page,
                        rows:rows,
                        selectType:showType
                    },function(data3){
                        if(data1.list) {
                            var x,d1,d2,d3;
                            x= getXY(data1,showType).split(",");
                            d1 = Y;
                            x = getXY(data2,showType).split(",");
                            d2 = Y;
                            x = getXY(data3,showType).split(",");
                            d3 = Y;
                            var yAxis = [
                                {
                                    name:"安裝用戶",
                                    data:d1
                                },{
                                    name:"註冊用戶",
                                    data:d2
                                }, {
                                    name:"註冊美容師",
                                    data:d3
                                }
                            ]
//                            console.log(yAxis);
                            $("#ID_container").html("");
                            chart("ID_container","總體信息統計",x,"人",yAxis);
                        }
                    });
                });
            });
        }
        /*
        * 更改數據
        * */
        $("#ID_userCount").change(function(){
            showUserData($(this).val(),1);
        });

        $("#ID_userPage").change(function(){
            showUserData($("#ID_userCount").val(),$("#ID_userPage").val());
        });
         /*
        * 生成 數組 用"|"分割
        * @show_type 0 是每天 1是每月 2是每年
        * */
        var getXY = function(data1,show_type){
            var x="";//x 軸
            var y =[];
            for (var i = 0; i < data1.list.length; i++) {
                var timeStr = data1.list[i].data_time;
                var count = data1.list[i].count;
                if(show_type==0)timeStr = timeStr.substr(0, 4) + "年" + timeStr.substr(4, 2) + "月" + timeStr.substr(6, 2);
                if(show_type==1)timeStr = timeStr.substr(0, 4) + "年" + timeStr.substr(4, 2) + "月";
                if(show_type==2)timeStr = timeStr.substr(0, 4) + "年";
                x = i == 0 ? timeStr : x + "," + timeStr;
                y[i] = parseInt(count);
            }
            Y = y;
            return x;
        }

        /*
        *
        * 報表數據折線圖輸出
        * @id 輸出的id
        * @ xAxis x 軸一維數組
        * @title 標題
        * @yAxis json數組 [{name:"",data:[]},{}]
        * */

        var chart = function(id,title,xAxis,company,yAxis){
            $('#'+id).highcharts({
                title: {
//                    text: '總體信息統計',
                    text:title,
                    x: -20 //center
                },
                xAxis: {
                    categories: xAxis
                },
                yAxis: {
                    title: {
                        text: company
                    },
                    plotLines: [{
                        value: 0,
                        width: 1,
                        color: '#808080'
                    }]
                },
                tooltip: {
                    valueSuffix: company
                },
                legend: {
                    layout: 'vertical',
                    align: 'right',
                    verticalAlign: 'middle',
                    borderWidth: 0
                },
                series:yAxis
            });
            $("#"+id+" text:last").hide();
        }

        /*
        * 商品雙餅圖
        * */
         var showTwoArrData;
         var showTwokey;

        /*
        * @categoriesArrKey 關鍵字
        * @categoriesArrValue 分類總數據
        * */
         var f_getTwoData = function(categoriesArrKey,categoriesArrValue){
             var resultInt = [];
             var resultName = "";
             var i =0;
             $(showTwoArrData).each(function(key,value){
                 var boole = false;
                 $(value).each(function(k,v){
                     if(k==0) {
                         if(categoriesArrKey==v) boole=true;
                     }
                     if(k==1&&boole){
                         resultName = resultName==""?v:resultName+","+v;
                     }
                     if(k==2&&boole){
                         resultInt[i] = v;
                         i++;
                     }
                 });
             });
             showTwokey = resultInt;
             return resultName;
         }

         var showShopItem = function(){
//            ID_container_shop
            var categoriesArrKey = [];//第一個圓的name
            var categoriesArrValue = [];//第一個圓的數值
            var categoriesArrlenght = 0;
            $.post("/statistics",{
                type:2,
                queryType:1
            },function(data1){
                $(data1.data).each(function(key,value){
                    $(value).each(function(k,v){
                        if(k==0) categoriesArrKey[key] = v;
                        if(k==2){
                            categoriesArrValue[key] = v;
                            categoriesArrlenght = categoriesArrlenght+v;
                        }
                    });
                });
                $.post("/statistics",{
                    type:2,
                    queryType:0
                },function(data2){
                    showTwoArrData = data2.data;
                    var colors = Highcharts.getOptions().colors, categories = categoriesArrKey,data =[];
//                    console.log(categoriesArrKey);
                    for(var i =0;i<categoriesArrValue.length;i++){
//                        console.log( f_getTwoData(categoriesArrKey[i],categoriesArrValue[i]));
                        var tempStr = f_getTwoData(categoriesArrKey[i],categoriesArrValue[i]);
                         data[i]={
                            y:categoriesArrValue[i],
                            color: colors[i],
                            drilldown: {
                                name: categoriesArrKey[i],
                                categories:tempStr.split(",") ,
                                data:showTwokey,
                                color: colors[i]
                            }
                        };
                    }
                    var browserData = [],versionsData = [], i, j, dataLen = data.length, drillDataLen, brightness;
//                    return;
                    // Build the data arrays
                    for (i = 0; i < dataLen; i += 1) {
                        browserData.push({
                            name: categories[i],
                            y: data[i].y,
                            color: data[i].color
                        });
                        drillDataLen = data[i].drilldown.data.length;
                        for (j = 0; j < drillDataLen; j += 1) {
                            brightness = 0.2 - (j / drillDataLen) / 5;
                            versionsData.push({
                                name: data[i].drilldown.categories[j],
                                y: data[i].drilldown.data[j],
                                color: Highcharts.Color(data[i].color).brighten(brightness).get()
                            });
                        }
                    }

                    // Create the chart
                    $('#ID_container_shop').highcharts({
                        chart: {
                            type: 'pie'
                        },
                        title: {
                            text: '商品總體信息統計'
                        },
                        plotOptions: {
                            pie: {
                                shadow: false,
                                center: ['50%', '50%']
                            }
                        },
                        tooltip: {
                            valueSuffix: '%'
                        },
                        series: [{
                            name: '商品類',
                            data: browserData,
                            size: '60%',
                            dataLabels: {
                                formatter: function () {
                                    return this.y > 5 ? this.point.name : null;
                                },
                                color: 'white',
                                distance: -30
                            }
                        }, {
                            name: '商品',
                            data: versionsData,
                            size: '80%',
                            innerSize: '60%',
                            dataLabels: {
                                formatter: function () {
                                    // display only if larger than 1
                                    return this.y > 1 ? '<b>' + this.point.name + ':</b> ' + this.y + '%'  : null;
                                }
                            }
                        }]
                    });
                    $("#ID_container_shop text:last").hide();
                });
            });
        }


        /*
         *
         * @showType 0是每天 1是每月 2是每年
         * @page 第幾頁
         * */

        var showOrderData = function(showType,page){
            /*
             * type 1安裝用戶 , 註冊的用戶 , 美容師註冊 ,訂單成單量 2商品統計 3用戶區域 4性別 5膚質
             * show_type 0 安裝用戶 1 註冊的用戶 2 美容師註冊 3 訂單成單量
             * 按天統計
             * */
            var rows = 10;//日
            $.post("/statistics",{
                type:1,
                show_type:3,
                page:page,
                rows:rows,
                selectType:showType
            },function(data1){//code 0
//                 console.log(data1);
                if(data1&&data1.totalPage){
//                     showUserDataTotalPage = data1.totalPage;
//                     firstPage: true lastPage: true pageNumber: 1 pageSize: 20 totalPage: 1 totalRow: 2
                    for(var i=0;i<data1.totalPage;i++){
                        $("#ID_userPage_order").append("<option value="+(i+1)+">"+(i+1)+"</option>");
                    }
                }
                if(data1.list) {
                    var x,d1;
                    x= getXY(data1,showType).split(",");
                    d1 = Y;
                    var yAxis = [
                        {
                            name:"成單量",
                            data:d1
                        }
                    ]
//                            console.log(yAxis);
                    $("#ID_container_order").html("");
                    chart("ID_container_order","總體成單量統計",x,"成單量",yAxis);
                }
            });
        }
        /*
         * 更改數據
         * */
        $("#ID_userCount_order").change(function(){
            showOrderData($(this).val(),1);
        });

        $("#ID_userPage_order").change(function(){
            showOrderData($("#ID_userCount_order").val(),$("#ID_userPage_order").val());
        });


        /*
        * 生成地圖
        * */
        var mapId = 0;
        var toMap = function(){
            $("#ID_map").attr("src","/statistics/map");//地圖加載
            $.post("/statistics",{
                type:3,
                queryType:mapId
            },function(GetData) {
//                console.log(GetData);
                var brandsData = [];
                var brands = [];
                var toName="",toValue="",brandsDataLenth=0;
                if(GetData.data){
                    $(GetData.data).each(function(k,v){
                        $(v).each(function(key,value){
                            if(key==0) toName = toName==""?value:toName+","+value;
                            if(key==1){
                                toValue = toValue==""?value:toValue+","+value;
                                brandsDataLenth = brandsDataLenth+value;
                            }
                        });
                    });
                }
                var tempName = toName.split(",");
                var tempValue = toValue.split(",");
                for(var i=0;i<tempName.length;i++){
                    brandsData.push(
                            {
//                drilldown: "Microsoft Internet Explorer "
//                name: "Microsoft Internet Explorer "
//                y: 53.61
                                name:tempName[i].replace("省","").replace("市",""),
                                drilldown:tempName[i].replace("省","").replace("市",""),
//                                y:parseFloat((parseInt(tempValue[i])/brandsDataLenth).toFixed(2))
                                y:parseInt(tempValue[i])
                            }
                    );
                }
                getBar(brandsData);
            });

        }
        /*
        * 生成 區域柱狀圖
        * */
        var getBar = function(brandsData){
            $('#ID_area').highcharts({
                chart: {
                    type: 'bar'
                },
                title: {
                    text: '區域統計'
                },
                xAxis: {
                    type: 'category'
                },
                legend: {
                    enabled: false
                },
                yAxis: {
                    title: {
                        text: ''
                    }
                },
                plotOptions: {
                    series: {
                        borderWidth: 0,
                        dataLabels: {
                            enabled: true,
                            format: '{point.y:.1f}%'
                        }
                    }
                },

                tooltip: {
                    headerFormat: '<span style="font-size:11px">{series.name}</span><br>',
                    pointFormat: '<span style="color:{point.color}">{point.name}</span>: 佔<b>{point.y:.2f}%</b> <br/>'
                },

                series: [{
                    name: '區域',
                    colorByPoint: true,
                    data: brandsData
                }]
            });
            $("#ID_area text:last").hide();
        }

        /*
        * 男女比例
        * */

        var showSex = function(){
            $.post("/statistics",{
                type:4
            },function(GetData) {
//                console.log(GetData.data[0]);
//                0女 1 男
                var sexData = [];
                var toName="",toValue="";
                if(GetData.data){
                    $(GetData.data).each(function(k,v){
                        $(v).each(function(key,value){
//                            if(key==0) toName = toName==""?value:toName+","+value
                            if(key==1) toValue = toValue==""?value:toValue+","+value
                        });
                    });
                }
//                var tempName = toName.split(",");
                var tempValue = toValue.split(",");
                sexData.push(
                        ['女', parseInt(tempValue[0])],
                        {
                            name: '男',
                            y: parseInt(tempValue[1]),
                            sliced: true,
                            selected: true
                        }
                );
//                console.log(sexData)
                $('#ID_sex').highcharts({
                    chart: {
                        plotBackgroundColor: null,
                        plotBorderWidth: null,
                        plotShadow: false
                    },
                    title: {
                        text: '用戶男女比例'
                    },
                    tooltip: {
                        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
                    },
                    plotOptions: {
                        pie: {
                            allowPointSelect: true,
                            cursor: 'pointer',
                            dataLabels: {
                                enabled: true,
                                format: '<b>{point.name}</b>: {point.percentage:.1f} %',

                            }
                        }
                    },
                    series: [{
                        type: 'pie',
                        name: '佔',
                        data:sexData
//                        data: [
//                            ['男',   45.0],
//                            {
//                                name: '女',
//                                y: 12.8,
//                                sliced: true,
//                                selected: true
//                            }
//                        ]
                    }]
                });
                $("#ID_sex text:last").hide();
            });
        }

        /*
        * 膚質
        * */
        var showFz = function(){
            $.post("/statistics",{
                type:5
            },function(GetData) {
//                console.log(GetData);
                var sexData = [];
                var toName = "", toValue = "";
                if (GetData.data) {
                    $(GetData.data).each(function (k, v) {
                        $(v).each(function (key, value) {
                            if(key==0) toName = toName==""?value:toName+"|"+value
                            if (key == 1) toValue = toValue == "" ? value : toValue + "|" + value
                        });
                    });
                }
                var tempName = toName.split("|");
                var tempValue = toValue.split("|");
                for(var i=0;i<tempName.length;i++) {
                    if(i==0){
                        sexData.push(
                                {
                                    name: tempName[0],
                                    name2:subString(tempName[i],20,true),
                                    y: parseInt(tempValue[0]),
                                    sliced: true,
                                    selected: true
                                }
                        );
                    }else{
                        sexData.push(
                                {
                                    name: tempName[i],
                                    name2:subString(tempName[i],20,true),
                                    y: parseInt(tempValue[i])
                                }
                        );
                    }
                }
//                console.log(sexData)
                $('#ID_showFz').highcharts({
                    chart: {
                        plotBackgroundColor: null,
                        plotBorderWidth: null,
                        plotShadow: false
                    },
                    title: {
                        text: '膚質統計'
                    },
                    tooltip: {
                        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
                    },
                    plotOptions: {
                        pie: {
                            allowPointSelect: true,
                            cursor: 'pointer',
                            dataLabels: {
                                enabled: true,
                                format: '<b>{point.name2}</b>: {point.percentage:.1f} %',
                                style: {
                                    color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                                }
                            }
                        }
                    },
                    series: [{
                        type: 'pie',
                        name: '佔',
                        data: sexData
                    }]
                });
                $("#ID_showFz text:last").hide();
            });
        }

        //數字或字母
       var checknum =  function (value) {
            var Regx = /^[A-Za-z0-9]*$/;
            if (Regx.test(value)) {
                return true;
            }
            else {
                return false;
            }
        }
        //字段截取
        var subString = function (str, len, hasDot) {
            if(checknum(str)){
                var newLength = 1;
                var newStr = "";
                var singleChar = "";
                for (var i = 0; i < str.length; i++) {
                    singleChar = str.charAt(i).toString();
                    newLength++;
                    if (newLength > len) {
                        break;
                    }
                    newStr += singleChar;
                }
                if (hasDot && strLength > len) {
                    newStr += "...";
                }
                return newStr;
            }
            else{
                var newLength = 0;
                var newStr = "";
                var chineseRegex = /[^\x00-\xff]/g;
                var singleChar = "";
                var strLength = str.replace(chineseRegex, "**").length;
                for (var i = 0; i < strLength; i++) {
                    singleChar = str.charAt(i).toString();
                    if (singleChar.match(chineseRegex) != null) {
                        newLength += 2;
                    } else {
                        newLength++;
                    }
                    if (newLength > len) {
                        break;
                    }
                    newStr += singleChar;
                }
                if (hasDot && strLength > len) {
                    newStr += "...";
                }
                return newStr;
            }

        }
        //alert(subString("js233333333333333",20,true)

     </script>
</body>
</html>

map.jsp

<%--
  Created by IntelliJ IDEA.
  User: cwq
  Date: 2016/5/14
  Time: 14:46
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
  <title></title>
</head>
<body>
<script src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script>
<script src="https://code.highcharts.com/maps/highmaps.js"></script>
<script src="https://code.highcharts.com/maps/modules/exporting.js"></script>
<script src="/res/highcharts/cn-all-sar-taiwan.js"></script>
<div id="container_map" style="min-width:400px;height:400px"></div>
<script>
  $(function () {
    // Prepare demo data
    $.post("/statistics",{
      type:3,
      queryType:window.parent.mapId
    },function(GetData) {
//      console.log(GetData);
      var data = [];
      var toName="",toValue="";
      if(GetData.data){
        $(GetData.data).each(function(k,v){
          $(v).each(function(key,value){
            if(key==0) toName = toName==""?value:toName+","+value
            if(key==1) toValue = toValue==""?value:toValue+","+value
          });
        });
      }
      var tempName = toName.split(",");
      var tempValue = toValue.split(",");
      for(var i=0;i<tempName.length;i++){
        data.push(
                {
                  name:tempName[i].replace("省","").replace("市",""),
                  value:parseInt(tempValue[i])
                }
        );
      }
//      console.log(data);
//        {
//          name: "廣東",
//          value: 1
//        }, {
//          name: "北京",
//          value: 1
//        }
//      ];

      // Initiate the chart
      $('#container_map').highcharts('Map', {

        title: {
          text: '區域人數分佈'
        },

//      subtitle : {
//        text : 'Source map: <a href="https://code.highcharts.com/mapdata/countries/cn/custom/cn-all-sar-taiwan.js">China with Hong Kong, Macau, and Taiwan</a>'
//      },

        mapNavigation: {
          enabled: true,
          buttonOptions: {
            verticalAlign: 'bottom'
          }
        },

        colorAxis: {
          min: 0
        },

        series: [{
          data: data,
          mapData: Highcharts.maps,
          joinBy: 'name',
          name: '地區人數',
          states: {
            hover: {
              color: '#BADA55'
            }
          },
          dataLabels: {
            enabled: true,
            format: '{point.name}'
          }
        }]
      });
      $("#container_map text:last").hide();
    });
  });
</script>
</body>
</html>

cn-all-sar-taiwan.js
<script src="https://code.highcharts.com/mapdata/countries/cn/custom/cn-all-sar-taiwan.js"></script>


發佈了29 篇原創文章 · 獲贊 11 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章