当前位置: 首页 > article >正文

SpringBoot-Vue整合百度地图

文章目录

  • 一、Spring Boot整合百度地图的步骤
    • 1. 申请百度地图的AK值
    • 2. 创建实体类
    • 3. 创建Controller层
    • 4. 前端集成百度地图
      • 4.1 在Vue项目中安装百度地图Vue组件库
      • 4.2 在Vue项目中引入百度地图API
      • 4.3 创建地图组件
  • 二、实现功能说明
    • 1. 前端部分:
    • 2. 后端部分:
  • 三、实现效果

在现代Web应用中,地图功能是一个常见的需求,尤其是在涉及地理位置信息的场景中,如物流、房产、旅游等行业。本文将详细介绍如何在Spring Boot项目中整合百度地图,实现地图的显示、定位、标注等功能,并结合Vue.js实现前后端分离的开发模式。

一、Spring Boot整合百度地图的步骤

1. 申请百度地图的AK值

  • 进入百度地图开放平台(https://lbsyun.baidu.com/),注册账号并创建应用。
  • 在应用管理中获取AK(访问密钥),这是使用百度地图API的必要凭证。

2. 创建实体类

地图中位置的展现需要经度和纬度,我们需要在实体类中加入这两个必备属性,其他属性按需添加。

@Data
public class Community {
    private Long id;
    private String communityName;
    private String lng; // 经度
    private String lat; // 纬度
}

数据库示例:
在这里插入图片描述

3. 创建Controller层

获取所有小区的详细信息。

@RestController
@RequestMapping("/community")
public class CommunityController {
    @Autowired
    private CommunityService communityService;

    @GetMapping("/getCommunityMap")
    public Result getCommunityMap(){
        List<Community> list = this.communityService.list();
        if(list == null) return Result.error("没有小区数据");
        return Result.ok().put("data", list);
    }
}

4. 前端集成百度地图

4.1 在Vue项目中安装百度地图Vue组件库

npm install vue-baidu-map --save

4.2 在Vue项目中引入百度地图API

main.js中引入百度地图Vue插件:

import Vue from 'vue'
import VueBaiduMap from 'vue-baidu-map'

Vue.use(VueBaiduMap, {
  ak: 'your_baidu_map_ak' // 替换为你的百度地图AK值
})

4.3 创建地图组件

创建一个地图组件Map.vue,用于展示地图和小区标注:

<template>
  <div class="map-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 {
      center: {
        lng: 116.3755,
        lat: 39.80896
      },
      zoom: 12,
      mapData: []
    }
  },
  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>

二、实现功能说明

1. 前端部分:

  • 使用vue-baidu-map组件库,通过<baidu-map>标签创建百度地图。
  • 使用<bm-marker>标签在地图上添加小区标注,并通过<bm-label>标签显示小区名称。
  • 在地图初始化时,调用后端接口获取小区数据,并将其展示在地图上。

2. 后端部分:

  • 创建Community实体类,用于存储小区信息。
  • 使用MyBatis-Plus的CommunityMapper和CommunityService来操作数据库,获取小区数据。
  • 创建CommunityController,提供/community/getCommunityMap接口,返回小区数据供前端调用。

三、实现效果

在这里插入图片描述


http://www.kler.cn/a/524023.html

相关文章:

  • 生成模型:扩散模型(DDPM, DDIM, 条件生成)
  • 蓝牙技术在物联网中的应用有哪些
  • LCR 139.训练计划 I
  • 【信息系统项目管理师-选择真题】2007下半年综合知识答案和详解
  • 算法基础学习——二分查找(附带Java模板)
  • 使用 Redis 实现分布式锁的基本思路
  • Attention Free Transformer (AFT)-2020论文笔记
  • 适配器模式——C++实现
  • 人工智能在医疗领域的应用有哪些?
  • LeetCode - #196 删除重复的电子邮件并保留最小 ID 的唯一电子邮件
  • 漏洞修复:Apache Tomcat 安全漏洞(CVE-2024-50379) | Apache Tomcat 安全漏洞(CVE-2024-52318)
  • C#@符号在string.Format方法中作用
  • HTML 标题
  • threejs实现烟花效果
  • 实现网站内容快速被搜索引擎收录的方法
  • Spring Boot 日志:项目的“行车记录仪”
  • 《Trustzone/TEE/安全从入门到精通-标准版》
  • 【MQ】如何保证消息队列的高可用?
  • Spring Boot多环境配置实践指南
  • Python面试宝典8 | 手写Python max 函数,从入门到精通
  • Kubernetes扩展
  • 提升企业内部协作的在线知识库架构与实施策略
  • 【YOLOv11改进[Backbone]】使用EMO替换Backbone
  • Deepseek R1 的大模拟考试
  • 高精度算法:加法
  • DeepSeek辅助学术写作摘要内容