SSM框架中实现地图查询及ECharts直方图功能

​ 最近一个项目【SSM框架搭建后台】中需要在地图中显示检测点以及以直方图的形式展示mysql数据库中的数据。

下面是一个简单Demo。

效果如下:
在这里插入图片描述
后面会将代码整理放在github。

jsp文件如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <style type="text/css">
        body, html {width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
        #allmap{width:50%;height:500px;float:left;margin-top:50px;}
        p{margin-left:5px; font-size:14px;}
        #main{width:50%;height:500px;float:left;margin-top:100px;}
        #bg{width:100%;height:100%;background-image: url("${pageContext.request.contextPath}/picture/bg.png");}
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=Wk9u6A7tTbX6Xsx2xG1Pl4UDZcbGhH7P" charset="UTF-8"></script>
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" charset="UTF-8"></script>
    <title>地图查询</title>
    <!-- 引入 echarts.js -->
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/echarts.common.min.js"></script>
    <!-- 引入jquery.js -->
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.2.1.min.js"></script>
</head>

<body>
	<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
	<div id="bg">
		<div id="main"></div>
		<div id="allmap" ></div>
	</div>
	<script type="text/javascript">
	//百度地图API功能
	map = new BMap.Map("allmap");
	// 百度坐标系坐标(地图中需要使用这个)
	var bPoints = new Array();
	//设置中心点
	map.centerAndZoom(new BMap.Point(112.925998, 27.910548), 15);	//坐标中心是湖南科技大学
	//后台数据
	/* var data_info = [[116.417854,39.921988,"地址:北京市东城区王府井大街88号乐天银泰百货八层"],
	    [116.406605,39.921585,"地址:北京市东城区东华门大街"],
	    [116.412222,39.912345,"地址:北京市东城区正义路甲5号"]
	];  */
	var data_info = [];

 $(function(){
	        $.ajax({
	            url:"${pageContext.request.contextPath }/infoWithLoLa/getAll",
	            type:"get",
				dataType:"json",
	            success:function(result){
	                $.each(result, function(index, item) {
						var arr = new Array();
						arr[0] = item.longitude;
						arr[1] = item.latitude;
						arr[2] = item.address;
    	                var point = new BMap.Point(arr[0], arr[1]); 
    	                var content = "地址:" + arr[2] + "<br/>" + "坐标:" + arr[0] + "," + arr[1];
    					bPoints.push(point); // 添加到百度坐标数组 用于自动调整缩放级别 
    	                var marker = new BMap.Marker(point);      // 创建标注    
    	                map.addOverlay(marker);
    	                addClickHandler(content, marker); //点击标记点,弹出信息窗口
	                });
	            }
	        });
	    });
	    
	//信息窗口样式
	var opts = {
	    width : 250,     // 信息窗口宽度
	    height: 120,     // 信息窗口高度
	    title : "<p style='color: red;'>信息窗口</p>" , // 信息窗口标题
	    enableMessage:true//设置允许信息窗发送短息
	};
	
	function addClickHandler(content,marker){
	    marker.addEventListener("click",function(e){
	        openInfo(content,e)}
	    );
	}
	function openInfo(content,e){
	    var p = e.target;
	    var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
	    var infoWindow = new BMap.InfoWindow(content,opts);  // 创建信息窗口对象
	    map.openInfoWindow(infoWindow,point); //开启信息窗口
	}
	// 根据点的数组自动调整缩放级别
	function setZoom(bPoints) {
	    var view = map.getViewport(eval(bPoints));
	    var mapZoom = view.zoom;
	    var centerPoint = view.center;
	    map.centerAndZoom(centerPoint, mapZoom);
	}
	map.addControl(new BMap.MapTypeControl());
	map.enableScrollWheelZoom(true);	//开启鼠标滚轮缩放
	setTimeout(function () {
	    setZoom(bPoints);
	}, 1000)

    var myChart = echarts.init(document.getElementById('main'));
    // 显示标题,图例和空的坐标轴
    myChart.setOption({
        title: {
            text: '弯道会车检测点信息'
        },
        tooltip: {},
        legend: {
            data: ['日弯道车流量']
        },
        xAxis: {
            data: []
        },
        yAxis: {},
        series: [{
            name: '日弯道车流量',
            type: 'bar',
            data: []
        }]
    });

    myChart.showLoading();    //数据加载完之前先显示一段简单的loading动画

    var addresses = [];    //类别数组(实际用来盛放X轴坐标值)
    var nums = [];    //销量数组(实际用来盛放Y坐标值)

    $.ajax({
        type: "get",
        async: true,            //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
        url: "${pageContext.request.contextPath}/getAllInfoByAddress",    //请求发送到TestServlet处
        data: {},
        dataType: "json",        //返回数据形式为json
        success: function (result) {
            //请求成功时执行该函数内容,result即为服务器返回的json对象
            if (result) {
                for (var i = 0; i < result.length; i++) {
                    addresses.push(result[i].address);    //挨个取出类别并填入类别数组
                }
                for (var i = 0; i < result.length; i++) {
                    nums.push(result[i].vehicleflow);    //挨个取出销量并填入销量数组
                }
                myChart.hideLoading();    //隐藏加载动画
                myChart.setOption({        //加载数据图表
                    xAxis: {
                        data: addresses
                    },
                    series: [{
                        // 根据名字对应到相应的系列
                        name: '日弯道车流量',
                        data: nums
                    }]
                });

            }

        },
        error: function (errorMsg) {
            //请求失败时执行该函数
            alert("图表请求数据失败!");
            myChart.hideLoading();
        }
    })
</script>
</body>
</html>

参考文档:

ECharts官方文档

百度地图API示例

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、简介 通过这个课程带大家从零开发一款功能全面的后台管理系统,包括项目搭建、功能实现到最后的Linux系统部署全过程。本课程使用SpringMVC + Spring + Mybatis作为主体框架,使用AdminLTE作为前端框架,使用主流关系型数据库Mysql作为存储数据库,使用非关系型数据库Redis作为缓存数据库,并集成SpringSecuriy安全框架做权限的动态管理,集成Swagger2自动生成接口文档,集成Druid连接池进行SQL性能监控,集成ActiveMQ消息间件进行异步解耦,提高性能。最后使用linux系统进行服务部署,并搭建nginx反向代理服务器提高网站性能。 二、学习目标 通过本课程的学习带大家掌握SSM框架的开发流程,并熟练使用SpringSecurity做为安全框架进行权限管理,整合相关优秀的开源框架进行功能开发。还在项目带大家学习前端相关的Jquery、Bootstrap等知识。课程结束之后希望大家能做到独立进行开发项目的目的,增强解决问题的能力,具备功能落地实现的能力。 三、课程涉及知识点 SpringMVC源码分析Mybatis源码分析通用MapperMysql数据库Redis缓存实现ActiveMQ消息间件SpringSecurity鉴权Swagger2接口文档生成自定义注解AOP切面编程自定义过滤器Logback日志整合Druid性能监控Linux系统Nginx反向代理Ajax异步请求技术Jquery基本使用AdminLTE前端框架Chart图表-线状图和饼状图百度地图定位城市BootStrap前端框架BootStrap-Table插件BootStrap-Treeview插件Markdown编辑器403、404、500错误页面配置数据库事务消息提示插件toastr.js图片上传插件bootstrap fileinput数字滚动效果pv/uv流量统计...四、课程部分内容截图如下 1、首页 2、菜单管理 3、图床管理 4、图标管理 5、留言反馈管理 6、druid监控 7、登录日志

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值