SpringBoot和Vue集成高德地图——基于SpringBoot和Vue的后台管理系统项目系列博客(二十一)

本文详细介绍了如何在基于SpringBoot和Vue的后台管理系统项目中集成高德地图,包括点标记、信息窗体、路线规划和定位功能的实现步骤,提供了关键代码示例,并分享了项目资源下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列文章目录

  1. 系统功能演示——基于SpringBoot和Vue的后台管理系统项目系列博客(一)
  2. Vue2安装并集成ElementUI——基于SpringBoot和Vue的后台管理系统项目系列博客(二)
  3. Vue2前端主体框架搭建——基于SpringBoot和Vue的后台管理系统项目系列博客(三)
  4. SpringBoot后端初始框架搭建——基于SpringBoot和Vue的后台管理系统项目系列博客(四)
  5. SpringBoot集成Mybatis——基于SpringBoot和Vue的后台管理系统项目系列博客(五)
  6. SpringBoot实现增删改查——基于SpringBoot和Vue的后台管理系统项目系列博客(六)
  7. SpringBoot实现分页查询——基于SpringBoot和Vue的后台管理系统项目系列博客(七)
  8. SpringBoot实现集成Mybatis-Plus和SwaggerUI——基于SpringBoot和Vue的后台管理系统项目系列博客(八)
  9. Vue实现增删改查——基于SpringBoot和Vue的后台管理系统项目系列博客(九)
  10. SpringBoot实现代码生成器——基于SpringBoot和Vue的后台管理系统项目系列博客(十)
  11. Vue使用路由——基于SpringBoot和Vue的后台管理系统项目系列博客(十一)
  12. SpringBoot和Vue实现导入导出——基于SpringBoot和Vue的后台管理系统项目系列博客(十二)
  13. SpringBoot和Vue实现用户登录注册与异常处理——基于SpringBoot和Vue的后台管理系统项目系列博客(十三)
  14. SpringBoot和Vue实现用户个人信息展示与保存与集成JWT——基于SpringBoot和Vue的后台管理系统项目系列博客(十四)
  15. SpringBoot和Vue实现文件上传与下载——基于SpringBoot和Vue的后台管理系统项目系列博客(十五)
  16. SpringBoot和Vue整合ECharts——基于SpringBoot和Vue的后台管理系统项目系列博客(十六)
  17. SpringBoot和Vue实现权限菜单功能——基于SpringBoot和Vue的后台管理系统项目系列博客(十七)
  18. SpringBoot实现1对1、1对多、多对多关联查询——基于SpringBoot和Vue的后台管理系统项目系列博客(十八)
  19. 用户前台页面设计与实现——基于SpringBoot和Vue的后台管理系统项目系列博客(十九)
  20. SpringBoot集成Redis实现缓存——基于SpringBoot和Vue的后台管理系统项目系列博客(二十)
  21. SpringBoot和Vue集成高德地图——基于SpringBoot和Vue的后台管理系统项目系列博客(二十一)
  22. SpringBoot和Vue集成视频播放组件——基于SpringBoot和Vue的后台管理系统项目系列博客(二十二)
  23. SpringBoot和Vue集成Markdown和多级评论——基于SpringBoot和Vue的后台管理系统项目系列博客(二十三)

项目资源下载

  1. GitHub下载地址
  2. Gitee下载地址
  3. 项目MySql数据库文件


前言

  今天的主要内容包括:高德开放平台的使用、点标记功能的实现、窗体信息功能的实现、路线规划功能的实现、定位功能的实现等。下面就开始今天的学习吧!


一、高德开放平台的使用

  1. 我们使用高德开放平台|高德地图API进行项目的功能集成,首先肯定是要登录,这里有很多种登陆方式
    在这里插入图片描述
  2. 登陆完之后选择控制台
    在这里插入图片描述
  3. 然后这里需要认证一下,填入自己的个人相关信息即可
    在这里插入图片描述
  4. 认证方式选择“个人认证开发者”即可
    在这里插入图片描述
  5. 最后再完善一下信息就可以了
    在这里插入图片描述
  6. 当我们认证成功之后,再次进入控制台,创建关于地图的应用
    在这里插入图片描述
  7. 按照我的选择就行,最后点击新建
    在这里插入图片描述
  8. 然后点击编辑
    在这里插入图片描述
  9. 然后再为此应用添加key
    在这里插入图片描述
  10. 按照我填的内容照着填就行,最后点击提交
    在这里插入图片描述
  11. 当我们再次刷新时,发现已经成功生成了key和安全密钥。此时我们已经完成了基础信息的生成,下面就开始正式在项目中集成高德地图
    在这里插入图片描述

二、点标记功能的实现

  1. 在views下新建Map.vue,用于创建我们的地图页面
    在这里插入图片描述
  2. 然后在后台新增关于地图页面的路由信息
    在这里插入图片描述
  3. 然后给管理员分配这个页面的权限
    在这里插入图片描述
  4. 重新登陆之后管理员就有这个页面的权限了
    在这里插入图片描述
  5. 然后在public下面的index.html中引入高德地图的资源文件,需要注意其中的key,读者要改为自己刚才申请的key
    在这里插入图片描述
  6. 然后将Map.vue中的全部内容替换为如下内容
<template>
    <div>
        <div id="container" style="width: 100%; height: calc(100vh - 100px)"></div>
    </div>
</template>

<script>
    export default {
        name: "Map",
        mounted() {
            // 创建地图实例
            var map = new AMap.Map("container", {
                zoom: 13,
            })
            var marker = new AMap.Marker({
                position: new AMap.LngLat(126.685649, 45.779939),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
                title: '哈尔滨工程大学',
            })
            // 将创建的点标记添加到已有的地图示例
            map.add(marker);
        }
    }
</script>

<style scoped>

</style>
  1. 然后来到前端测试,发现已经可以成功显示点标记了
    在这里插入图片描述

三、信息窗体功能的实现

  1. 再将Map.vue全部替换为如下内容即可
<template>
    <div>
        <div id="container" style="width: 100%; height: calc(100vh - 100px)"></div>
    </div>
</template>

<script>

    var content = [
        "<div style='font-size: 14px; color: red; width: 200px; height: 50px'>这是信息窗口</div>"
    ];

    export default {
        name: "Map",
        mounted() {
            // 创建地图实例
            var map = new AMap.Map("container", {
                zoom: 13,
            })

            var infoWindow = new AMap.InfoWindow({
                anchor: 'top-right',
                content: content.join("<br>")  //传入 dom 对象,或者 html 字符串
            });

            var clickHandler = function (e) {
                console.log('您在[ ' + e.lnglat.getLng() + ',' + e.lnglat.getLat() + ' ]的位置点击了地图!');
                infoWindow.open(map, [126.685649, 45.779939]);
            };
            var marker = new AMap.Marker({
                position: new AMap.LngLat(126.685649, 45.779939),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
                title: '哈尔滨工程大学',
                icon: '//vdata.amap.com/icons/b18/1/2.png',
            })
            marker.on('click', clickHandler);
            // 将创建的点标记添加到已有的地图示例
            map.add(marker);
        }
    }
</script>

<style scoped>

</style>
  1. 然后来到前端发现,已经可以成功显示信息窗口了
    在这里插入图片描述

四、路线规划功能的实现

  1. 将Map.vue中的内容全部替换为如下内容
<template>
    <div>
        <div id="container" style="width: 100%; height: calc(100vh - 100px)"></div>
    </div>
</template>

<script>

    var content = [
        "<div style='font-size: 14px; color: red; width: 200px; height: 50px'>这是信息窗口</div>"
    ];

    export default {
        name: "Map",
        mounted() {
            // 创建地图实例
            var map = new AMap.Map("container", {
                zoom: 13,
                resizeEnable: true,
            })

            var infoWindow = new AMap.InfoWindow({
                anchor: 'top-right',
                content: content.join("<br>")  //传入 dom 对象,或者 html 字符串
            });

            var clickHandler = function (e) {
                console.log('您在[ ' + e.lnglat.getLng() + ',' + e.lnglat.getLat() + ' ]的位置点击了地图!');
                infoWindow.open(map, [126.685649, 45.779939]);
            };
            var marker = new AMap.Marker({
                position: new AMap.LngLat(126.685649, 45.779939),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
                title: '哈尔滨工程大学',
                icon: '//vdata.amap.com/icons/b18/1/2.png',
            })
            marker.on('click', clickHandler);
            // 将创建的点标记添加到已有的地图示例
            map.add(marker);

            // path 是驾车导航的起、途径和终点,最多支持16个途经点
            var path = []

            path.push([126.656681,45.795415])
            path.push([126.682553,45.771883])
            path.push([126.702603,45.791997])

            map.plugin('AMap.DragRoute', function () {
                var route = new AMap.DragRoute(map, path, AMap.DrivingPolicy.LEAST_FEE)
                // 查询导航路径并开启拖拽导航
                route.search()
            })

            var polyLine = new AMap.Polyline({
                path: path,
                strokeWeight: 5,
                borderWeight: 5, // 线条宽度,默认为 1
                strokeStyle: "solid",
                strokeColor: '#DC143C', // 线条颜色
                lineJoin: 'round' // 折线拐点连接处样式
            })
            map.add(polyLine)

        }
    }
</script>

<style scoped>

</style>
  1. 来到前端发现已经成功显示路线规划图了
    在这里插入图片描述

五、定位功能的实现

  1. 将Map.vue中的全部内容替换为如下内容
<template>
    <div>
        <div id="container" style="width: 100%; height: calc(100vh - 100px)"></div>
        <div id="info"></div>
    </div>
</template>

<script>

    var content = [
        "<div style='font-size: 14px; color: red; width: 200px; height: 50px'>这是信息窗口</div>"
    ];

    export default {
        name: "Map",
        mounted() {
            // 创建地图实例
            var map = new AMap.Map("container", {
                zoom: 13,
                resizeEnable: true,
            })

            var infoWindow = new AMap.InfoWindow({
                anchor: 'top-right',
                content: content.join("<br>")  //传入 dom 对象,或者 html 字符串
            });

            var clickHandler = function (e) {
                console.log('您在[ ' + e.lnglat.getLng() + ',' + e.lnglat.getLat() + ' ]的位置点击了地图!');
                infoWindow.open(map, [126.685649, 45.779939]);
            };
            var marker = new AMap.Marker({
                position: new AMap.LngLat(126.685649, 45.779939),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
                title: '哈尔滨工程大学',
                icon: '//vdata.amap.com/icons/b18/1/2.png',
            })
            marker.on('click', clickHandler);
            // 将创建的点标记添加到已有的地图示例
            map.add(marker);

            // path 是驾车导航的起、途径和终点,最多支持16个途经点
            var path = []

            path.push([126.656681, 45.795415])
            path.push([126.682553, 45.771883])
            path.push([126.702603, 45.791997])

            map.plugin('AMap.DragRoute', function () {
                var route = new AMap.DragRoute(map, path, AMap.DrivingPolicy.LEAST_FEE)
                // 查询导航路径并开启拖拽导航
                route.search()
            })

            var polyLine = new AMap.Polyline({
                path: path,
                strokeWeight: 5,
                borderWeight: 5, // 线条宽度,默认为 1
                strokeStyle: "solid",
                strokeColor: '#DC143C', // 线条颜色
                lineJoin: 'round' // 折线拐点连接处样式
            })
            map.add(polyLine)

            // 实例化城市查询类
            map.plugin('AMap.Geolocation', function () {
                var geolocation = new AMap.Geolocation({
                    // 是否使用高精度定位,默认:true
                    enableHighAccuracy: true,
                    // 设置定位超时时间,默认:无穷大
                    timeout: 10000,
                    // 定位按钮的停靠位置的偏移量
                    offset: [10, 20],
                    //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
                    zoomToAccuracy: true,
                    //  定位按钮的排放位置,  RB表示右下
                    position: 'RB'
                })

                geolocation.getCurrentPosition(function (status, result) {
                    if (status == 'complete') {
                        onComplete(result)
                    } else {
                        onError(result)
                    }
                });

                function onComplete(data) {
                    // data是具体的定位信息
                    console.log(data)
                }

                function onError(data) {
                    // 定位出错
                    console.error(data)
                }
            })

        }
    }
</script>

<style scoped>

</style>
  1. 来到前端发现已经可以成功定位到用户所在的城市了。这样我们就完成了SpringBoot集成高德地图的功能
    在这里插入图片描述

总结

  以上就是今天学习的全部内容,明天将会给大家带来关于SpringBoot和Vue集成视频播放组件的相关内容。明天见!

### uniapp 开发流浪动物救助系统实现方法 #### 1. 技术选型与环境搭建 为了构建一个高效稳定的流浪动物救助系统,技术栈的选择至关重要。后端选用 SpringBoot 框架来处理业务逻辑服务接口;前端则利用 Vue.js 构建交互式的用户界面[^1]。 对于移动端应用部分,则采用了 UniApp 这一跨平台开发工具来进行微信小程序及其他多端的支持。UniApp 基于 Vue.js 的语法特性,使得开发者能够一次编码即可编译成多个版本的应用程序,极大提高了开发效率并降低了维护成本[^3]。 #### 2. 功能模块划分 该系统主要分为两大类角色——普通用户管理员。针对不同身份设置了相应权限下的操作范围: - **用户侧** - 发布拾获信息:允许注册后的个人提交发现的走失宠物详情; - 领养申请:当有合适的待收养对象时发起正式请求; - 查看公告板:浏览最新的活动通知或政策法规解释等公开资讯。 - **管理后台** - 审核机制:确保发布的每一条动态都经过严格筛选后再上线展示给大众; - 数据统计分析:收集整理各类有效数据用于后续优化改进工作; - 用户反馈处理:及时回复解决遇到困难的人们提出的疑问建议。 #### 3. 关键功能实现细节 ##### a. 登录认证流程 通过集成第三方登录插件(如微信授权),简化新用户的加入过程。同时设置密码找回等功能保障账户安全[^2]。 ##### b. 图片上传组件 考虑到图片资源在网络传输中的重要性,特别加入了压缩算法以减小文件体积而不影响画质表现。另外还支持批量选取照片作为附件附加至表单内提交[^4]。 ##### c. 地图定位服务 借助高德地图 API 或腾讯位置 SDK 提供精准的地图显示效果,帮助寻找附近的庇护站或是标记具体地理位置以便他人能快速到达现场救援目标生物个体[^5]。 ```javascript // 示例代码片段:调用微信JS-SDK获取当前位置坐标 wx.getLocation({ type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 success (res) { const latitude = res.latitude; const longitude = res.longitude; } }); ``` ##### d. 表单验证规则 为了避免非法输入造成服务器压力增大甚至引发安全隐患,在客户端层面就做好充分的数据校验措施是非常必要的。比如必填项提示、字符长度限制等等。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IronmanJay

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

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

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

打赏作者

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

抵扣说明:

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

余额充值