Echarts地图省市关联下钻,读取数据库中数据

js文件

$(function() {
    // $('.chart').resize(function () {
    //     myChart.resize();
    // });
    $.ajax({
        type: "post",
        async: false,
        //同步执行
        url: "/test/getCityDateAjax.ajax",
        data: {
            cityName: ""
        },
        //显示省级数据
        dataType: "json",
        //返回数据形式为json
        success: function(result) {
            dataname = result.dataname;
            datavalue = result.datavalue;

            // for(var i=0;i<result.dataname.length;i++){
            //     dataname.push(result.dataname[i]);
            // }
            // for(var i=0;i<result.datavalue.length;i++){
            //     datavalue.push(result.datavalue[i]);
            // }
            // myChartProe.setOption({        //加载数据图表
            //     series: [{
            //         data : [{
            //             // 根据名字对应到相应的系列
            //             name: result.dataname,
            //             value: result.datavalue
            //         }]
            //     }]
            // });
            // alert("返回数据长度dataname11111!"+dataname.length);
            // alert("返回数据长度datavalue11111!"+datavalue.length);
            // if (dataname) {
            //     for (var i = 0; i < dataname.length; i++) {
            //         alert("返回数据!"+dataname[i]);
            //     }
            // }
        },
        error: function(errorMsg) {
            alert("图表请求数据失败!");
            myChart.hideLoading();
        }
    })

    var myChartProe = echarts.init(document.getElementById('proe_map'), 'wonderland'); //在id为mainMap的dom元素中显示地图
    window.onresize = myChartProe.resize;
    //显示省地图
    $.get('../resources/js/test/json/河南.json',
    function(mapJson) {
        echarts.registerMap('henan', mapJson);

        myChartProe.setOption({
            title: {
                text: '告警地图',
                //subtext:'',
                x: 'center',
                y: '30px',
                textAlign: 'left'
            },
            tooltip: {
                trigger: 'item',
                formatter: function(result) { //回调函数,参数params具体格式参加官方API
                    return result.name + '<br />报警数:' + result.value;
                }
            },
            visualMap: {
                min: 0,
                max: Math.max.apply(null, datavalue),
                //最大值根据数据库中获取的来确定
                x: 'left',
                y: '250px',
                // splitNumber:0,
                text: ['高', '低'],
                calculable: true,
                // orient: 'horizontal',
                color: ['orangered', 'yellow', 'lightskyblue']
            },
            toolbox: {
                show: true,
                orient: 'horizontal',
                x: '30px',
                y: '30px',
                feature: {
                    mark: {
                        show: true
                    },
                    dataView: {
                        show: true,
                        readOnly: false
                    },
                    restore: {
                        show: true
                    },
                    saveAsImage: {
                        show: true
                    }
                }
            },

            series: [{
                name: '-----省内危险数-----',
                type: 'map',
                map: 'henan',
                //要和echarts.registerMap()中第一个参数一致
                scaleLimit: {
                    min: 0.8,
                    max: 1.9
                },
                //缩放
                itemSytle: {
                    normal: {
                        label: {
                            show: true
                        }
                    },
                    emphasis: {
                        label: {
                            show: true
                        }
                    }
                },
                label: {
                    normal: {
                        show: true
                    },
                    emphasis: {
                        show: true
                    }
                },
                //加载ajax查询出的数据
                data: (function() {
                    var res = [];
                    var len = dataname.length;

                    while (len--) {
                        res.push({
                            name: dataname[len],
                            value: datavalue[len]
                        });
                    }
                    return res;
                })()
            }]
        }),

        //点击省地图中的市
        myChartProe.on('click',
        function(result) { //回调函数,点击时触发,参数params格式参加官方API
            setTimeout(function() {
                $('#proe_map').css('display', 'none');
                $('#city_map').css('display', 'block');
                $('#retPro').css('display', 'block');
            },
            500);
            //选择省的单击事件
            var selectCity = result.name;

            //再次执行查询,参数是市的名称
            $.ajax({
                type: "post",
                async: false,
                //同步执行
                url: "/test/getCityDateAjax.ajax",
                data: {
                    cityName: selectCity
                },
                //查询条件
                dataType: "json",
                //返回数据形式为json
                success: function(result2) {
                    datanameCity = result2.dataname;
                    datavalueCity = result2.datavalue;
                },
                error: function(errorMsg) {
                    alert("图表请求数据失败!");
                    myChart.hideLoading();
                }
            })

            //    调取后台数据
            $.get('../resources/js/test/json/河南/' + selectCity + '.json',
            function(Districtmap) {
                echarts.registerMap(selectCity, Districtmap);
                var myChartCity = echarts.init(document.getElementById('city_map'));
                myChartCity.setOption({
                    tooltip: {
                        trigger: 'item',
                        formatter: function loadData(result) { //回调函数,参数params具体格式参加官方API
                            return result.name + '<br />报警数:' + result.value;
                        }
                    },
                    dataRange: {
                        min: 0,
                        max: Math.max.apply(null, datavalueCity),
                        x: 'left',
                        y: '250px',
                        splitNumber: 0,
                        text: ['高', '低'],
                        calculable: true,
                        color: ['orangered', 'yellow', 'lightskyblue']
                    },
                    title: {
                        text: selectCity + '数据总览',
                        //subtext:'',
                        x: 'center',
                        y: '30px',
                        textAlign: 'left'
                    },
                    toolbox: {
                        show: true,
                        orient: 'horizontal',
                        x: '30px',
                        y: '30px',
                        feature: {
                            mark: {
                                show: true
                            },
                            dataView: {
                                show: true,
                                readOnly: false
                            },
                            restore: {
                                show: true
                            },
                            saveAsImage: {
                                show: true
                            }
                        }
                    },
                    series: [{
                        name: '-----' + selectCity + '危险数' + '------',
                        type: 'map',
                        map: selectCity,
                        //要和echarts.registerMap()中第一个参数一致
                        scaleLimit: {
                            min: 0.8,
                            max: 1.9
                        },
                        //缩放
                        mapLocation: {
                            y: 10
                        },
                        itemSytle: {
                            emphasis: {
                                label: {
                                    show: true
                                }
                            }
                        },
                        label: {
                            normal: {
                                show: true
                            },
                            emphasis: {
                                show: true
                            }
                        },
                        data: (function() {
                            var res = [];
                            var len = datanameCity.length;

                            while (len--) {
                                res.push({
                                    name: datanameCity[len],
                                    value: datavalueCity[len]
                                });
                            }
                            return res;
                        })()
                    }]
                }),
                myChartDistrict.on('click',
                function(rel) {
                    setTimeout(function() {},
                    500);
                })
            });
        });
    });

});

ajax调用Servlet方法

@RequestMapping(value = "/getCityDateAjax.ajax")
    @ResponseBody
    public String getCityDateInfo(HttpServletRequest request,HttpServletResponse response) throws Exception{
        JSONObject json=new JSONObject();
        String cityName = request.getParameter("cityName");

        //EchartCityForm 是实体类
        List<EchartCityForm> listEcahrtCitys=echartCityService.getAllEchartCity(cityName);
        //将数据放到两个List中
        List dataname= new ArrayList();
        List datavalue= new ArrayList();
        //市级数据为空时,地图会错乱,加了一条空数据处理
        if(listEcahrtCitys.size()==0){
            dataname.add("此地区没有数据");
            datavalue.add(0);
        }else
        {
            for (EchartCityForm listEcahrtCity:listEcahrtCitys) {

                dataname.add(listEcahrtCity.getCityName());
                datavalue.add(listEcahrtCity.getCityData());
            }
        }

        //将List放到json中返回给前端
        json.put("dataname", dataname);
        json.put("datavalue", datavalue);
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write(json.toString());
        return null;

    }

使用了mybatis处理Sql

<!--获取城市数据,判断cityName来获取省级或者市级的数据-->
    <select id="getAllEchartCity" resultMap="echartCityMap">
        SELECT id,cityName,cityData,cityParent,citycode FROM echartCity
        where 1=1
        <if test="cityName!=null and cityName!=''">
            AND cityParent=(select id from echartcity where cityName=#{cityName} and cityParent=0)
        </if>
        <if test="cityName==null or cityName==''">
            AND cityParent=0
        </if>
    </select>

DIV层

<div id="chart" style="float:left;width:410px; height:450px;border:0px solid #ccc;position: relative;">
            <div id="proe_map" style="width:400px;height:450px;margin-top:-20px; display: block; "></div>
            <div id="city_map" style="width:400px;height:450px;margin-top:-20px; display: none;"></div>
            <div id="retPro" style="position: absolute;top:15px;left:280px;display: none;">
                <a href="javascript:void(0);" onclick="goBackProeMap()" style="height:30px;background:#fff;line-height: 10px;border:1px solid #ccc;padding:5px 5px;border-radius:5px;cursor: pointer;color:#393939;text-decoration:none;">
                    返回省级地图
                </a>
            </div>
        </div>

省地图
这里写图片描述

市地图
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值