SpringBoot+Vue+百度地图实现定位打卡功能:

1、打卡sign表sql:
CREATE TABLE `sign` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户名称',
  `location` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '打卡位置',
  `time` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '打卡时间',
  `comment` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
2、获取百度开放平台AK:

https://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5=》右上角控制台
在这里插入图片描述在这里插入图片描述

3、定位=》获取当前位置:

【1】public=》index.html

<script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=你的AK"></script>

【2】获取时间较长=》建议放在login.vue页面

mounted() {
    // 获取地理位置
    var geolocation = new BMapGL.Geolocation();
    geolocation.getCurrentPosition(function (r) {
      if (this.getStatus() == BMAP_STATUS_SUCCESS) {
        const province = r.address.province;
        const city = r.address.city;
        localStorage.setItem("location", province + city);
      }
    });
},
4、后台打卡逻辑:

hutool官网:https://www.hutool.cn/docs/#/core/%E6%97%A5%E6%9C%9F%E6%97%B6%E9%97%B4/%E6%97%A5%E6%9C%9F%E6%97%B6%E9%97%B4%E5%B7%A5%E5%85%B7-DateUtil

 // 新增或者更新
@PostMapping("/addOrUpdate")
public Result save(@RequestBody Sign sign) {
   if (sign.getId() == null) {  // 新增打卡
       String today = DateUtil.today();      //DateUtil是hutool工具类的
       QueryWrapper<Sign> queryWrapper = new QueryWrapper<>();
       queryWrapper.eq("user", sign.getUser());
       queryWrapper.eq("time", today);
       Sign one = signService.getOne(queryWrapper);
       if (one != null) {  // 打过卡了
           return Result.error("-1", "您已打过卡");
       }
       sign.setTime(today);
   }
   signService.saveOrUpdate(sign);//saveOrUpdate是mybits-plus工具类的
   return Result.success();
}
5、前端打卡功能:
<template>
  <div class="main">
    <div class="sign" @click="handleSign">打卡</div>
  </div>
</template>

<script>
export default {
  name: "BaiDuSign",
  data() {
    return {};
  },
  created() {},
  methods: {
    handleSign() {
      let userInfo = JSON.parse(localStorage.getItem("user"));
      let param = {
        location: localStorage.getItem("location"),
        user: userInfo.username,
      };
      this.request.post("/sign/addOrUpdate", param).then((res) => {
        if (res.success) {
          this.$message.success("打卡成功");
        } else {
          this.$message.error(res.msg);
        }
      });
    },
  },
};
</script>

<style  lang="less" scoped >
.main {
  .sign {
    width: 200px;
    height: 200px;
    border-radius: 50%;
    background: #1890ff;

    display: flex;
    align-items: center;
    justify-content: center;

    color: #fff;
    font-size: 30px;
    cursor: pointer;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
  }
}
</style>
6、效果:

在这里插入图片描述

  • 10
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现百度地图定位当前位置的步骤如下: 1. 在前端代码中引入百度地图 JavaScript API,并创建地图对象。 ```html <!-- 引入百度地图 JavaScript API --> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的AK"></script> <!-- 创建地图容器 --> <div id="map"></div> <!-- 在 JavaScript 中创建地图对象 --> <script type="text/javascript"> // 创建地图对象 var map = new BMap.Map("map"); </script> ``` 2. 调用浏览器的定位 API 获取当前位置的经纬度。 ```javascript navigator.geolocation.getCurrentPosition(function(position) { // 获取当前位置的经纬度 var longitude = position.coords.longitude; var latitude = position.coords.latitude; }); ``` 3. 将获取到的经纬度转换为百度地图坐标系,并在地图上添加标注点。 ```javascript // 将经纬度转换为百度地图坐标系 var point = new BMap.Point(longitude, latitude); // 在地图上添加标注点 var marker = new BMap.Marker(point); map.addOverlay(marker); // 将地图中心点设置为当前位置 map.centerAndZoom(point, 15); ``` 完整代码示例: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>百度地图定位当前位置</title> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的AK"></script> </head> <body> <div id="map" style="width:100%;height:500px;"></div> <script type="text/javascript"> // 创建地图对象 var map = new BMap.Map("map"); // 获取当前位置的经纬度 navigator.geolocation.getCurrentPosition(function(position) { var longitude = position.coords.longitude; var latitude = position.coords.latitude; // 将经纬度转换为百度地图坐标系 var point = new BMap.Point(longitude, latitude); // 在地图上添加标注点 var marker = new BMap.Marker(point); map.addOverlay(marker); // 将地图中心点设置为当前位置 map.centerAndZoom(point, 15); }); </script> </body> </html> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Sun Peng

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

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

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

打赏作者

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

抵扣说明:

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

余额充值