基于 eCharts 的百度地图学生籍贯统计

简介: 基于 eCharts 的百度地图学生籍贯统计

完整代码:https://download.csdn.net/download/weixin_55771290/87394063


1. 需求分析


设计一个在百度地图上统计学生籍贯所在地。实现在百度地图上的显示,学生的 jiguan 显示在地图等功能,具体要求如下:


1.1. 显示百度地图


打开网页显示百度


1.2. 显示学生


每个来自不同地区的学生会显示在百度地图上面如图 1-1,每一个在百度地图上的点都代表一个学生,每个点会显示学生的信息如图 1-2。


a0aaf5a7aaeac869630084ea90670166.jpg


图 1-1:需求界面

f1f8d28264f8da16a83aeebd3e60a5f6.jpg


图 1-2:学生信息


2. 系统设计


2.1. 用例图

例如下图 2-1 所示:

          ![](https://www.writebug.com/myres/static/uploads/2021/10/30/f350fcc24170a3f24f0ebdbf336fb469.writebug) ![](https://www.writebug.com/myres/static/uploads/2021/10/30/6b1f363f6631ba3155fcca1a8e608d3f.writebug)

图 2-1 用例图

2.2. ER 图

数据库设计 1 张表与 ER 图如图 2-2 所示:



57295889664c37ff46ff3360f6a3237f.jpg



0804ff9e7d0fe11dc4319faddc1b72cc.jpg


图 2-2 数据库设计表和数据库 ER 图


2.3. UML 类图(Class Diagram)


对于用户功能模块,共设计如下 6 个类。

n 控制层类 SydController 类:前端控制器。


n Commonceng 的 R 类:返回的结果


n mapper 层接口 SydMapper:主要定义数据操作的接口


n config 层的 MybatisPulsConfig 类:配置 MyBatis


n service 层 SydService 接口: 业务逻辑层的接口


n 应用开关 DituApplication 类:启动 Spring boot 开发的启动类。


n 各类的结构及类之间的关系如图 2-3 所示:



4a87f3ba0e78a0bfe88fcf74fcfe48fd.jpg


图 2-3:UML 类图

2.4. UML 时序图(Sequence Diagram)



c47a2f246f2422731d48894df0eeb30b.jpg

2.5. UML 活动图(Activity Diagram)

用户会打开网页会看到百度地图,学生数据会在百度地图上形成一个散点图,具体活动图 2-4 所示。


b1089479748eee9dab41aa26e5480f9b.jpg


图 2-4 显示流程图

3. 系统实现


3.1. 项目结构


项目结构如下图 3-1 所示:

d8ac1637014e649891d1e2a827099180.jpg

图 3-1:系统结构

3.2. 配置文件

3.2.1. application.properties 文件

该配置文件主要是配置数据库连接用户名和密码、MyBatis 配置检索路径和文件

# 数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url= jdbc:mysql://localhost:3306/hw1?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.type-aliases-package=com.test.ditu.entity
mybatis-plus.mapper-locations=classpath:mapper/*.xml


3.2.2.SydController.java 文件

前端控制器

4.packagecom.test.ditu.controller;importcom.test.ditu.common.R;importcom.test.ditu.entity.Syd;importcom.test.ditu.service.SydService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.bind.annotation.RestController;importjava.util.List;/*<p>*前端控制器*</p>**@author关注公众号:MarkerHub*@since2020-12-17*/@Controller@RequestMapping("/syd")publicclassSydController{@AutowiredprivateSydServicesydService;@GetMapping("/all")@ResponseBodypublicRall(){List<Syd>syds=sydService.getBaseMapper().selectList(null);returnR.fail(200,"操作成功",syds);}@GetMapping("/")publicStringto(){return"hw";}}

3.2.3. common 层的 R.java

packagecom.test.ditu.common;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importlombok.experimental.Accessors;importjava.io.Serializable;/*这里我们用到了一个Result的类,这个用于我们的异步统一返回的结果封装。*一般来说,结果里面有几个要素必要的*<p>*是否成功,可用code表示(如200表示成功,400表示异常)*结果消息*结果数据*/@Data@Accessors(chain=true)@AllArgsConstructor@NoArgsConstructorpublicclassRimplementsSerializable{privateintcode;//200是正常  非200表示异常
privateStringmsg;privateObjectdata;publicstaticRsucc(intcode,Stringmsg,Objectdata){Rr=newR().setCode(code).setData(data).setMsg(msg);returnr;}publicstaticRfail(inti,Stringmessage,Objectdata){Rr=newR().setCode(i).setData(data).setMsg(message);returnr;}}

3.2.4. Mapper 层 Mapper 接口

packagecom.test.ditu.mapper;importcom.test.ditu.entity.Syd;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;/*<p>*Mapper接口*</p>**@author关注公众号:MarkerHub*@since2020-12-17*/publicinterfaceSydMapperextendsBaseMapper<Syd>{}

3.2.5.接口映射文件 SydMapper.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.test.ditu.mapper.SydMapper"></mapper>

3.2.6.Service 层接口 SydService

5.packagecom.test.ditu.service;importcom.test.ditu.entity.Syd;importcom.baomidou.mybatisplus.extension.service.IService;/*<p>*服务类*</p>**@author关注公众号:MarkerHub*@since2020-12-17*/publicinterfaceSydServiceextendsIService<Syd>{}

3.2.7entity 层 Syd.java

packagecom.test.ditu.entity;importcom.baomidou.mybatisplus.annotation.TableName;importjava.io.Serializable;importlombok.Data;importlombok.EqualsAndHashCode;importlombok.experimental.Accessors;/*<p>**</p>**@author关注公众号:MarkerHub*@since2020-12-17*/@Data@EqualsAndHashCode(callSuper=false)@Accessors(chain=true)@TableName("t_syd")publicclassSydimplementsSerializable{privatestaticfinallongserialVersionUID=1L;privateStringname;privateDoublexvalue;privateDoubleyvalue;privateStringtext;}

3.3 前端配置


hw.Html 的百度 API 调用和 echarts 的组件里的两个脚本文件

<scripttype="text/javascript"src="http://api.map.baidu.com/api?v=2.0&ak=78hQX88IBEYa78XqOHE52w9ouaYFobrM"></script><scriptsrc="/js/echarts.min.js"></script><scriptsrc="/js/bmap.min.js"></script>
百度自定义
mapStyle: { // 百度地图自定义样式
   styleJson: [{
      "featureType": "land",// 陆地
      "elementType": "all",
      "stylers": {
         "color": "#073763"
      }
   },{
      "featureType": "water",// 水系
      "elementType": "all",
      "stylers": {
         "color": "#073763",
         "lightness": -54
      }
   },{
      "featureType": "highway",// 国道与高速
      "elementType": "all",
      "stylers": {
         "color": "#45818e"
      }
   },{
      "featureType": "boundary",// 边界线
      "elementType": "all",
      "stylers": {
         "color": "#ffffff",
         "lightness": -62,
         "visibility": "on"
      }
   },{
      "featureType": "label",// 行政标注
      "elementType": "labels.text.fill",
      "stylers": {
         "color": "#ffffff",
         "visibility": "on"
      }
   },{
      "featureType": "label",
      "elementType": "labels.text.stroke",
      "stylers": {
         "color": "#444444",
         "visibility": "on"
      }
   }
   ]
}


4. 系统测试


设计测试用例,给出程序每个功能模块的运行结果截图。

运行 hw.work 文件,会使服务运行,在浏览输入 http://localhost:8080/syd/打开界面如下图 4-1:


97a3b5222a267a3dfd9e9643e52a231e.jpg

图 4-1:主界面



241b2e542886d0d21396a781ac3a4da0.jpg


图 4-2:显示学生学籍信息


5.系统总结


7.1 echarts 图表的初始化和显示:


echarts 对象:在标签式引入的方式中,有 echarts 对象,所有图表的初始化、事件的绑定...等等都通过 echarts 这个对象来处理。


一个简单的 echarts 图表显示总结起来有四步(可参考官网中 demo 的例子:http://echarts.baidu.com/doc/start.html):


· 准备一个 DOM:


这是存放 echarts 图表的 DOM,切记在此需要指定 DOM 的 width 和 height 属性(即官网所说的”具备大小的 DOM“),否则图表不会显示的。


初始化图表: var bmapChart = echarts.init(document\.getElementById('map-wrap'));


组织 option(图表的核心对象:数据、样式...):


这里就是定义所需要的图表,echarts 图表编程其实就是写 option ,组织数据、定义样式、各种控件...的显示,看 API 。echarts 就是基于 JSON 对象和数组的,option 对象的各个属性很规范。


加载数据: bmapChart.setOption(option);

相关文章
|
前端开发 JavaScript
百度统计失效,referrer背锅了
前段时间遇到一个问题,就是我的个人网站需要接入第三方百度统计,因为我的文章图片有来自第三方微信后台上传的文章,所以使用&lt;meta name=&quot;referrer&quot; content=&quot;no-referrer&quot;&gt;解决图片访问403的问题,但是此时这个导致我百度统计失效了,于是去查询了一下referrer这个特性。
342 0
百度统计失效,referrer背锅了
|
9月前
|
JSON 前端开发 JavaScript
Echarts实战案例代码(15):月收入年龄分段等MYSQL分类统计PHP后台数据管理接口API数据的解决方案
Echarts实战案例代码(15):月收入年龄分段等MYSQL分类统计PHP后台数据管理接口API数据的解决方案
131 0
|
9月前
|
定位技术
echarts引入百度地图通过脚本bmap.min.js解决关闭底图可点功能的底层解决方案
echarts引入百度地图通过脚本bmap.min.js解决关闭底图可点功能的底层解决方案
70 0
|
9月前
|
存储 JSON 数据可视化
数据可视化大屏电商数据展示平台开发实录(Echarts柱图曲线图、mysql筛选统计语句、时间计算、大数据量统计)
数据可视化大屏电商数据展示平台开发实录(Echarts柱图曲线图、mysql筛选统计语句、时间计算、大数据量统计)
437 0
|
9月前
|
编解码 监控 数据可视化
数据可视化大屏应急管理综合指挥调度系统完整案例详解(PHP-API、Echarts、百度地图)
数据可视化大屏应急管理综合指挥调度系统完整案例详解(PHP-API、Echarts、百度地图)
215 0
|
9月前
|
JavaScript 前端开发 BI
百度地图POI多信息点标注开发说明文档(php+layui+mysql+百度javascript API2.0+echarts4.8)
百度地图POI多信息点标注开发说明文档(php+layui+mysql+百度javascript API2.0+echarts4.8)
105 0
|
9月前
|
前端开发
|
9月前
|
搜索推荐 定位技术
Echarts与bmap结合使用百度地图系统自带的12个个性化模板mapStyle列表
Echarts与bmap结合使用百度地图系统自带的12个个性化模板mapStyle列表
310 0
|
9月前
|
定位技术
街道社区网格化信息管理Echarts集成百度地图bmap样式表冲突导致的无法显示地图的解决方案
街道社区网格化信息管理Echarts集成百度地图bmap样式表冲突导致的无法显示地图的解决方案
98 0
|
10月前
|
定位技术
bMap+Echarts+百度地图jssdk
bMap+Echarts+百度地图jssdk
69 0