AI智慧社区--百度地图

news/2025/2/3 8:38:22 标签: vue, spring boot, java, 百度地图

在这里插入图片描述

数据库:

在这里插入图片描述

前端实现

页面代码

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-marker
        v-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.4146
      this.center.lat = 40.11316
      map.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.niftyadmin.cn/n/5840650.html

相关文章

操作系统和中间件的信息收集

在浏览器中收集操作系统与中间件信息时&#xff0c;主要通过客户端JavaScript&#xff08;用于操作系统/浏览器信息&#xff09;和服务器端脚本&#xff08;用于中间件信息&#xff09;实现。以下是分步指南&#xff1a; 一、客户端操作系统信息收集&#xff08;JavaScript&am…

STM32 DMA数据转运

DMA简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源 12个独立可配置的通道&#xff1a; DMA1&#xff08;7个通道&#xff09;&#xf…

Vue 入门到实战 七

第7章 渲染函数 目录 7.1 DOM树 7.2 什么是渲染函数 7.3 h()函数 7.3.1 基本参数 7.3.2 约束 7.3.3 使用JavaScript代替模板功能 7.1 DOM树 7.2 什么是渲染函数 在多数情况下&#xff0c;Vue推荐使用模板template来创建HTML。然而在一些应用场景中&#xff0c;需要使用J…

FFmpeg工具使用基础

一、FFmpeg工具介绍 FFmpeg命令行工具主要包括以下几个部分: ‌ffmpeg‌:编解码工具‌ffprobe‌:多媒体分析器‌ffplay‌:简单的音视频播放器这些工具共同构成了FFmpeg的核心功能,支持各种音视频格式的处理和转换‌ 二、在Ubuntu18.04上安装FFmpeg工具 1、sudo apt-upda…

使用PyQt5绘制带有刻度的温度计控件

前言&#xff1a;进入学习Python开发上位机界面的第二阶段&#xff0c;学习如何开发自定义控件&#xff0c;从常用的控件入手学习&#xff0c;本期主要学习如何使用PyQt5绘制带有刻度的温度计控件。 1. 先找到一篇参考文章 参考文章&#xff1a;Qt编写自定义控件5-柱状温度计…

大厂面试题备份20250127

20250127 机器学习和深度学习的异同 同&#xff1a; 都是数据驱动&#xff1b; 以数学和统计方法为基础&#xff0c;通过优化目标函数&#xff08;如最小化误差&#xff09;来完成学习任务&#xff1b; 都需要数据集 异&#xff1a; 总结 机器学习适用于数据规模较小且需…

Zabbix 推送告警 消息模板 美化(钉钉Webhook机器人、邮件)

目前网络上已经有很多关于Zabbix如何推送告警信息到钉钉机器人、到邮件等文章。 但是在搜索下来&#xff0c;发现缺少了对告警信息的美化的文章。 本文不赘述如何对Zabbix对接钉钉、对接邮件&#xff0c;仅介绍我采用的美化消息模板的内容。 活用AI工具可以减轻很多学习、脑力负…

【爬虫】JS逆向解决某药的商品价格加密

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…