基于 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);

<think>好的,用户想了解百度ECharts的使用指南和功能介绍,之前他们提到了Kafka的相关问题,但这次是关于数据可视化的工具。根据提供的引用资料,我需要整理出ECharts的基本介绍、特点、安装使用步骤、响应式设计、高级应用以及案例分析等内容。 首先,用户可能作为开发者,希望快速上手ECharts,所以需要清晰的步骤和示例代码。引用中提到了安装方式包括npm、CDN和下载本地文件,需要详细说明这些方法,并给出代码示例,比如初始化图表和配置项。同时,用户提到的响应式设计很重要,可能需要解释如何通过resize方法或监听窗口变化来实现自适应布局。 高级应用部分,引用里提到数据可视化、交互功能和自定义扩展。需要具体说明如何动态更新数据,添加事件监听,以及使用扩展插件或主题定制。案例分析可以举常见的图表类型,如折线图、地图可视化,并参考引用中的项目如go-echarts和ngx-echarts,说明ECharts在不同框架中的集成,比如Angular或Golang环境下的使用。 还要注意用户可能对官方文档和社区资源感兴趣,需要提供链接,方便他们进一步学习。同时,生成的相关问题要覆盖安装配置、图表类型、性能优化、框架集成和常见问题处理,这些都是开发者常见的问题点。确保回答结构清晰,分点明确,代码示例正确,符合用户的使用场景。</think>### 百度 ECharts 使用指南与功能介绍 #### 一、核心定义 **ECharts**(Enterprise Charts)是百度开源的高性能 JavaScript 数据可视化库,支持生成**交互式图表**(如折线图、柱状图、地图等),适用于 Web 数据分析与展示场景[^1][^2]。 --- #### 二、核心特性 | 特性 | 说明 | 技术优势 | |--------------------|----------------------------------------------------------------------|--------------------------------------------------------------------------| | **多图表支持** | 支持 30+ 图表类型(包括热力图、雷达图、3D 地球等) | 通过配置项自由组合图表元素 | | **动态数据更新** | 实时响应数据变化,无需重载页面 | 基于 `setOption` 方法实现增量数据渲染[^5] | | **跨平台兼容** | 支持 PC/移动端浏览器,兼容主流框架(Vue/React/Angular) | 提供 `ngx-echarts`(Angular)、`go-echarts`(Golang)等扩展库[^3][^4] | | **交互能力** | 支持数据筛选、区域缩放、提示框联动 | 内置 `dataZoom`、`tooltip.formatter` 等交互组件[^5] | --- #### 三、快速使用指南 ##### 1. **安装方式** - **CDN引入**(适合快速原型开发): ```html <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.2/dist/echarts.min.js"></script> ``` - **npm安装**(推荐工程化项目): ```bash npm install echarts --save ``` - **框架集成**(以 Angular 为例): ```typescript import { NgxEchartsModule } from 'ngx-echarts'; // 引用[4] ``` ##### 2. **基础使用示例** ```javascript // 1. 初始化容器 const chartDom = document.getElementById('chart-container'); const myChart = echarts.init(chartDom); // 2. 配置选项(核心) const option = { title: { text: '用户活跃趋势' }, xAxis: { data: ['周一', '周二', '周三'] }, yAxis: {}, series: [{ type: 'line', data: [120, 200, 150] }] }; // 3. 渲染图表 myChart.setOption(option); ``` ##### 3. **响应式设计** 通过监听窗口变化实现自适应: ```javascript window.addEventListener('resize', () => { myChart.resize(); // 引用[5] }); ``` --- #### 四、高级功能 1. **数据可视化扩展** - 使用 `dataset` 组件分离数据与配置 - 通过 `visualMap` 实现数据到颜色的映射 2. **交互事件处理** ```javascript myChart.on('click', (params) => { console.log('点击数据:', params.data); }); ``` 3. **自定义主题** 通过 `echarts.registerTheme()` 注册个性化配色方案[^5]。 --- #### 五、典型应用场景 1. **业务数据监控** 实时展示用户行为数据(如PV/UV趋势图)[^2] 2. **地理信息可视化** 结合 `geo` 组件绘制疫情分布地图 3. **大屏数据展示** 使用 `grid` 布局组合多图表,实现指挥中心看板 --- #### 六、学习资源推荐 1. [官方文档](https://echarts.apache.org/zh/index.html)(含完整API与示例) 2. 开源项目参考: - **go-echarts**:Golang 环境下的图表生成工具[^3] - **ngx-echarts**:Angular 集成方案[^4] --- ### 相关问题 1. 如何通过 ECharts 实现动态数据更新? 2. ECharts 在 Vue 项目中的集成方式是什么? 3. 如何优化 ECharts 在大数据量下的渲染性能? 4. ECharts 与 D3.js 的核心区别是什么? 5. 地图可视化中如何自定义区域颜色? (注:所有代码示例均基于 ECharts 5.x 版本,部分特性需注意版本兼容性)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员奇奇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值