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


1. 需求分析


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

1.1. 显示百度地图

打开网页显示百度

1.2. 显示学生

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

图 1-1:需求界面

图 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 所示:

图 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 所示:

图 2-3:UML 类图

2.4. UML 时序图(Sequence Diagram)

2.5. UML 活动图(Activity Diagram)

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

图 2-4 显示流程图

3. 系统实现


3.1. 项目结构

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

图 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:

图 4-1:主界面

图 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);

河南地图学生籍贯统计是基于 echarts 的一种数据可视化分析方式。通过 echarts 提供的功能,我们可以将河南地图背景与学生籍贯数据进行结合,从而形成一张直观有趣的统计图。 首先,我们需要准备数据。可以通过收集学生籍贯信息,然后根据每个地区的数量进行统计。这样,我们就能得到一个完整的数据集,包含了各个地区的学生人数。 接下来,我们将数据与 echarts 进行结合。通过 echarts 提供的地图可视化功能,可以将河南地图加载到页面上,并在地图上标记出不同地区的学生人数。我们可以使用不同的颜色来表示学生人数的多少,让观察者可以直观地看出每个地区的人数差异。 此外,可以通过在地图上添加交互功能,例如点击某个地区,显示该地区学生的详细信息,或者通过鼠标悬停在某个地区上时显示该地区的具体人数。这样,观察者可以更加深入地了解每个地区学生的具体情况。 最后,可以将这张地图嵌入到网页中,方便大家浏览和使用。通过这种方式,我们可以直观地展示河南地区学生籍贯分布情况,为教育决策和学生管理提供参考依据。 总结来说,基于 echarts 的河南地图学生籍贯统计可以通过采集和处理学生籍贯数据,结合 echarts 的地图可视化功能,给观察者展示河南地区学生籍贯分布情况,为教育管理和决策提供数据支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员奇奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值