AI智慧社区--百度地图

devtools/2025/2/7 20:53:06/

在这里插入图片描述

数据库:

在这里插入图片描述

前端实现

页面代码

javascript"><template><div class="app-container"><baidu-map class="bm-view" :center="center" :zoom="zoom" @ready="initMap"><!-- 定位 --><bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :show-address-bar="true" :auto-location="true" /><!-- 城市列表 --><bm-city-list anchor="BMAP_ANCHOR_TOP_LEFT" /><!-- 缩放工具 --><bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-navigation><!-- 视图切换 --><bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']" anchor="BMAP_ANCHOR_TOP_LEFT"></bm-map-type><!-- 标注 --><bm-markerv-for="(item, index) in mapData":key="index":position="{lng: item.lng, lat: item.lat}":clicking="false"animation="BMAP_ANIMATION_BOUNCE"><!-- 显示小区名称 --><bm-label :content="item.communityName" :label-style="{color: 'red', fontSize : '9px'}" :offset="{width: -25, height: 20}" /></bm-marker></baidu-map></div>
</template><script>
import { getCommunityMap } from '@/api/sys/community'
export default {name: 'Map',data() {return {listQuery: {gradeId: ''},center: {lng: 116.3755,lat: 39.80896},zoom: 12,mapData: []}},mounted() {},methods: {initMap({ BMap, map }) {this.center.lng = 116.4146this.center.lat = 40.11316map.enableScrollWheelZoom()map.enableKeyboard()map.enableDoubleClickZoom()getCommunityMap().then(res => {this.mapData = res.data})}}
}
</script><style lang="scss" scoped>.bm-view {width: 100%;height: 620px;}
</style>

调用的后端接口

javascript">export function getCommunityMap(data) {return request({url: '/sys/community/getCommunityMap',method: 'get'})
}

后端实现:

实体类:

java">package com.southwind.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;import lombok.Data;
import lombok.EqualsAndHashCode;/*** <p>** </p>** @author admin* @since 2023-07-26*/
@Data@EqualsAndHashCode(callSuper = false)public class Community implements Serializable {private static final long serialVersionUID=1L;@TableId(value = "community_id", type = IdType.AUTO)private Integer communityId;/*** 小区名称*/private String communityName;/*** 楼栋数量*/private Integer termCount;/*** 序号*/private Integer seq;/*** 创建人*/private String creater;/*** 创建时间*/@TableField(fill = FieldFill.INSERT)private Date createTime;/*** 经度*/private Float lng;/*** 维度*/private Float lat;}
java"> @GetMapping("/getCommunityMap")public Result getCommunityMap(){List<Community> list = this.communityService.list();if(list == null) return Result.error("没有小区数据");return Result.ok().put("data", list);}

如果有更深层次的需要,请访问官网
官网的地址:https://lbsyun.baidu.com/products/map

展示百度地图并在其上标注小区位置的流程:

前端部分

1. 组件加载与数据初始化

当包含百度地图的 Vue 组件被加载时,会首先执行 data 函数进行数据初始化:

  • listQuery:一个对象,初始时 gradeId 为空,可能后续用于筛选查询相关数据,但在当前流程未使用。
  • center:定义地图的初始中心点坐标,经度为 116.3755,纬度为 39.80896
  • zoom:设置地图的初始缩放级别为 12
  • mapData:一个空数组,用于存储从后端获取的小区数据。
2. 模板渲染

模板部分使用 baidu-map 组件创建地图容器,并设置其属性:

  • :center:绑定 center 数据,确定地图初始显示的中心点。
  • :zoom:绑定 zoom 数据,设置地图的缩放级别。
  • @ready:监听地图加载完成事件,当地图准备好后会触发 initMap 方法。

同时,在地图上添加了多个控件:

  • bm-geolocation:定位控件,位于地图右下角,可显示地址栏并自动定位。
  • bm-city-list:城市列表控件,位于地图左上角。
  • bm-navigation:缩放工具控件,位于地图右上角。
  • bm-map-type:视图切换控件,位于地图左上角,可在普通地图和混合地图之间切换。
3. 地图初始化与数据请求

当地图加载完成触发 initMap 方法时,会执行以下操作:

  • 更新地图中心点坐标为 lng: 116.4146lat: 40.11316
  • 启用地图的交互功能,包括鼠标滚轮缩放、键盘操作和双击缩放。
  • 调用 getCommunityMap 函数向后端发送 GET 请求,请求 /sys/community/getCommunityMap 接口。
  • 当请求成功返回后,将响应数据中的 data 赋值给 mapData
4. 小区标注显示

mapData 被赋值后,v-for 指令会遍历其中的每个小区数据项:

  • 为每个小区创建一个 bm-marker 标注,标注的位置由小区的经纬度 item.lngitem.lat 确定。
  • 标注设置了跳动动画 BMAP_ANIMATION_BOUNCE,且 clicking 属性为 false
  • 每个标注上添加一个 bm-label 标签,显示小区的名称 item.communityName,并设置标签的样式,如文字颜色为红色,字体大小为 9px,以及偏移量。

后端部分

1. 接口调用

前端调用 getCommunityMap 函数发送 GET 请求到 /sys/community/getCommunityMap 接口。

2. 数据查询

后端的 getCommunityMap 方法被触发,调用 communityServicelist 方法从数据库中查询所有的小区数据,存储在 List<Community> 列表中。

3. 结果返回
  • 如果查询结果 list 为空,返回一个包含错误信息 "没有小区数据"Result 对象。
  • 如果查询结果不为空,将查询到的小区数据列表封装在 Result 对象中,以 data 字段返回给前端。
    在这里插入图片描述

http://www.ppmy.cn/devtools/156927.html

相关文章

【100%通过率 】【华为OD机试c++/java/python】日志采集系统【 E卷 | 2023 Q1 |100分】

​ 2024华为OD机试最新E卷题库-(C卷+D卷+E卷)-(JAVA、Python、C++) 题目描述 日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分批上报。 如果上报太频繁,会对服务端造成压力;如果上报太晚,会降低用户的体验; 如果一次上报的条数太多,会导致超…

Rust 数据类型详解:Scalar 与 Compound 类型

Rust 数据类型详解&#xff1a;Scalar 与 Compound 类型 Rust 是一门强类型语言&#xff0c;其类型系统设计严谨且功能强大。Rust 的数据类型可以分为两大类&#xff1a;Scalar&#xff08;标量&#xff09;类型 和 Compound&#xff08;复合&#xff09;类型。本文将详细介绍…

疯狂SQL转换系列- SQL for Milvs2.4

鉴于Milvus仍在不停的迭代新版本&#xff0c;推出新功能&#xff0c;其SDK目前并不稳定。目前其2.4版本的SDK接口已与之前的2.2版本有了较大的差别&#xff0c;功能上也有了一定的调整。为此&#xff0c;我们重新提供了针对[Milvus2.4](https://github.com/colorknight/moql-tr…

spring boot接收请求常用注解

RequestBody 用于将 HTTP 请求体&#xff08;例如 JSON、XML 等&#xff09;中的数据绑定到控制器方法的参数上 示例&#xff1a; PostMapping("/status/{status}")public Result<String> startOrStop(PathVariable("status") Integer status, Lon…

vim modeline

1. 什么是 Vim 模型行&#xff08;modeline&#xff09;&#xff1f; Vim 模型行是嵌入在文件中的特殊注释行&#xff0c;用于告诉 Vim 编辑器如何配置编辑选项。它的语法格式如下&#xff1a; # vim: 选项1值1:选项2值2:...它以 # vim: 开头&#xff08;# 是注释符&#xff…

在 MySQL 8 中配置主从同步(主从复制)是一个常见的需求,用于实现数据的冗余备份、读写分离等。

在 MySQL 8 中配置主从同步(主从复制)是一个常见的需求,用于实现数据的冗余备份、读写分离等。以下是详细的配置步骤: 一、环境准备 假设你有两台 MySQL 服务器: 主服务器(Master):IP 地址为 192.168.1.100,端口为 3306从服务器(Slave):IP 地址为 192.168.1.101,…

ollama部署deepseek实操记录

1. 安装 ollama 1.1 下载并安装 官网 https://ollama.com/ Linux安装命令 https://ollama.com/download/linux curl -fsSL https://ollama.com/install.sh | sh安装成功截图 3. 开放外网访问 1、首先停止ollama服务&#xff1a;systemctl stop ollama 2、修改ollama的servic…

UE5 蓝图学习计划 - Day 13:确定游戏类型与核心功能

在前面的学习中&#xff0c;我们掌握了 角色控制、交互系统、UI 设计、存储与加载 等核心技能。今天&#xff0c;我们将正式开始 综合项目实战&#xff0c;构建一个完整的游戏。本篇文章将介绍项目的 类型、核心玩法、功能模块&#xff0c;并完成项目的 基础环境搭建&#xff0…