uni-app 实现考勤打卡功能

news2024/11/6 9:48:49

一、在页面中引入地图组件

      <map id="map" style="width: 100%; height: 100%" :latitude="myLatitude" :longitude="myLongitude" :circles="circles" :markers="markers"> </map>
属性名类型说明
longitudeNumber中心经度
latitudeNumber中心纬度
markersArray标记点
circlesArray

1、显示地图中的圆形标识
在这里插入图片描述通过配置表格中的circles就能实现地图上的圆形标识

// 地图上圆形区域标识
const circles = ref([
  {
    latitude: '',
    longitude: '',
    color: '#69BFBE6A',
    fillColor: '#69BFBE6A',
    radius: 100,
    strokeWidth: 2,
  },
])
属性说明类型必填备注
latitude纬度Number浮点数,范围 -90 ~ 90
longitude经度Number浮点数,范围 -180 ~ 180
color描边的颜色String8位十六进制表示,后两位表示alpha值,如:#000000AA;#00000为十六进制
fillColor填充颜色String8位十六进制表示,后两位表示alpha值,如:#000000AA;#00000为十六进制
radius半径Number
strokeWidth描边的宽度Number
level压盖关系,默认为 abovelabelsStringfalse微信小程序

2、在地图中添加标记点,气泡提示框

在这里插入图片描述
配置markers展示标记点以及提示气泡

// 地图上气泡提示
const markers: any = ref([
  {
    id: 1,
    latitude: '',
    longitude: '',
    width: 10,
    height: 17,
    // iconPath: 'https://dianliu.oss-cn-hangzhou.aliyuncs.com/static/map/company.png',
    callout {
        content: '已进入打卡范围',
        color: '#FFFFFF',
        fontSize: 12,
        borderColor: '#69BFBE',
        bgColor: '#69BFBE',
        padding: 5,
        borderRadius: 3,
        display: 'ALWAYS',
        textAlign: 'center',
      }
  },
])
属性说明类型必填备注
latitude纬度Number浮点数,范围 -90 ~ 90
longitude经度Number浮点数,范围 -180 ~ 180
id标记点idNumbermarker点击事件回调会返回此id。建议为每个marker设置上Number类型id,保证更新marker时有更好的性能。最大限制9位数
title标注点名String点击时显示,callout存在时将被忽略
iconPath显示的图标String项目目录下的图片路径,支持相对路径写法,以’/'开头则表示相对小程序根目录;也支持临时路径
width标注图标宽度Number默认为图片实际宽度
height标注图标高度Number默认为图片实际高度
callout自定义标记点上方的气泡窗口Object支持的属性见下表,可识别换行符。

二、小程序获取定位信息

可以通过小程序提供的方法获取到当前的定位
官方链接:https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdateBackground.html

const getLocation = () => {
  uni.showLoading({
    title: '定位中...',
    mask: true,
  })
  return new Promise((resolve, reject) => {
     const _locationChangeFn = (res: any) => {
         console.log('location change', res)
         uni.hideLoading()
         wx.offLocationChange(_locationChangeFn)
     }
     wx.startLocationUpdate({
         success: (res: any) => {
             wx.onLocationChange(_locationChangeFn)
             resolve(res)
         },
         fail: (err: any) => {
             reject()
         },
     })
  })
}

这个方法也可以获取到定位信息,但是不能频繁的获取

 uni.getLocation({
   type: 'wgs84',
   altitude: true,
   success: function (res) {
      // res  获取到的定位信息
   },
 })

在手机上进行测试时可能会无法定位,这是我们就需要在manifest.json文件配置下图中红框中的内容

在这里插入图片描述

三、打卡签到

此时我们拿到了自己所在位置经纬度以及签到地经纬度可以通过计算得到两点之间的距离,再通过与我们地图圆形区域半径进行比较,便可以判断用户是否进入打卡区域。

计算方法:

// 计算距离
const getDistance = (point1: any[], point2: any[]) => {
  let [x1, y1] = point1
  let [x2, y2] = point2
  let Lat1 = rad(x1) // 纬度
  let Lat2 = rad(x2)
  let a = Lat1 - Lat2 //	两点纬度之差
  let b = rad(y1) - rad(y2) //	经度之差
  let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(b / 2), 2)))
  //	计算两点距离的公式
  s = s * 6378137.0 //	弧长等于弧度乘地球半径(半径为米)
  s = Math.round(s * 10000) / 10000 //	精确距离的数值
  console.log(s)
 
  distance.value = s
}

原文链接:https://blog.csdn.net/qq_57399113/article/details/127588698

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1072477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA自定义代码快捷指令

在IDEA中&#xff0c;有很多默认的代码快捷指令&#xff0c;例如输出&#xff08;sout&#xff09;、main方法&#xff08;psvm&#xff09;等&#xff0c;有时候&#xff0c;我们也需要自定义一些常用的代码片段&#xff0c;例如执行时间打印等&#xff0c;这时候&#xff0c;…

阿桂天山的技术小结:Flask对Ztree树节点搜索定位

话不多说,上图上源码 1.先看效果图 2.前端页面部分: 1)页面 <!DOCTYPE html> <HTML><HEAD><TITLE>Ewangda 阿桂天山的Ztree实战</TITLE><meta http-equiv"content-type" content"text/html; charsetUTF-8"><link…

vue脚手架项目创建及整理

环境准备 首先安装node,如果项目需要指定node版本 可以按装nvm控制版本 创建vue vue create 项目名选择对应版本 这边我是选的自定义&#xff0c;就是第三个选项&#xff0c;可以提前给我下好 router vuex什么的&#xff08;空格&#xff09; 选项如图标注 等待下载所需的…

什么是Spring

一、前言 参与java项目开发的工作&#xff0c;没有人可以离开Spring&#xff0c;但是什么是Spring呢&#xff1f;我们平时可以说对于这个概念早已经是熟视无睹。今天我还特意查看了官网的介绍&#xff0c;但是上面竟然没有说明Spring是什么&#xff0c;之说了Spring的特征和能…

这道面试题工作中经常碰到,但 99% 的程序员都答不上来

小时候都被问过一个脑筋急转弯&#xff0c;把大象放进冰箱有几个步骤&#xff1f;我们一开始都会抓耳挠腮&#xff0c;去想着该如何把大象塞进冰箱。最终揭晓的答案却根本不关心具体的操作方法&#xff0c;只是提供了 3 个步骤组成的流程&#xff0c;「把冰箱打开&#xff0c;把…

MQTT服务器源码解析

目录 1、关于header问题 2、MQTT 连接参数的使用 2.1连接地址 2.2 基于 TCP 的 MQTT 连接 2.3 基于 WebSocket 的连接 3、订阅topic 4、推送消息给订阅者 5、QOS 机制 5.1 QOS是什么 5.2 QOS的实现原理 5.3 发送流程 6、reatain机制 总结&#xff1a;给还没上线的…

节日灯饰灯串灯出口欧洲CE认证检测

灯串&#xff08;灯带&#xff09;&#xff0c;这个产品的形状就象一根带子一样&#xff0c;再加上产品的主要原件就是LED&#xff0c;因此叫做灯串或者灯带。2022年&#xff0c;我国灯具及相关配件产品出口总额超过460亿美元。其中北美是最大的出口市场。其次是欧洲市场&#…

传奇开服教程GOM传奇引擎外网全套架设教程

传奇开服教程&#xff1a;GOM引擎外网架设教程 准备工具&#xff1a;版本&#xff0c;DBC数据库&#xff0c;传奇客户端&#xff0c;服务器&#xff0c;备案域名 架设传奇外网GOM引擎版本之前我们连接登录服务器&#xff0c;我们把版本&#xff0c;DBC数据库&#xff0c;传奇…

会议邀请 | 思腾合力邀您共赴PRCV 2023第六届中国模式识别与计算机视觉大会

第六届中国模式识别与计算机视觉大会&#xff08;The 6th Chinese Conference on Pattern Recognition and Computer Vision, PRCV 2023&#xff09;将于2023年10月13日至15日在厦门举办。PRCV 2023由中国计算机学会&#xff08;CCF&#xff09;、中国自动化学会&#xff08;CA…

Java8实战-总结38

Java8实战-总结38 默认方法概述默认方法默认方法的使用模式可选方法行为的多继承 默认方法 概述默认方法 默认方法是Java 8中引入的一个新特性&#xff0c;希望能借此以兼容的方式改进API。现在&#xff0c;接口包含的方法签名在它的实现类中也可以不提供实现。缺失的方法实现…

静电除尘器的工作原理及使用说明

静电除尘器是一种通过静电场将空气中的颗粒物带电并吸附到电极上&#xff0c;再利用机械振打或气流将颗粒物从电极上清除的空气净化设备。以下是静电除尘器的工作原理及使用说明&#xff1a; 工作原理&#xff1a; 静电除尘器主要由电极系统、电源系统、收尘系统、清灰系统等…

计算机的分类

文章目录 前言一、超级计算机二、大型计算机三、迷你计算机&#xff08;服务器&#xff09;四、工作站五、微型计算机 前言 世界上所有的计算机总共分为五类&#xff1a;超级计算机、大型计算机、迷你计算机、工作站、微型计算机。今天就简单介绍下各自特点和用途。 一、超级计…

allegro pcb designer铜皮合并

前提&#xff0c;两块铜皮是同一个网络 现在是没有合并的状态 第一步选中两块铜皮 点击sharpe菜单&#xff0c;点击merge shape子菜单&#xff0c;两块铜皮就合并了。

字符输入转换流字符输出转换流

字符输入转换流&字符输出转换流 字符输入转换流&字符输出转换流 package newTest;import java.io.*;public class test2 {//目标&#xff1a; 掌握字符输入转换流public static void main(String[] args) {try(//文件管道对象//得到原始的字节编码InputStream fsnew Fi…

2023-2024年云赛道模拟题库

2023-2024年云赛道模拟题库上线啦&#xff0c;全面覆盖云计算&#xff0c;云服务&#xff0c;大数据和人工智能考点&#xff0c;都是带有解析&#xff0c;实时更新&#xff0c;永久使用 参赛对象及要求&#xff1a; 参赛对象&#xff1a;现有华为ICT学院及未来有意愿成为华为…

一个CPU是怎么寻址的?

目录 CISC vs RISC 概念和历史 CISC vs RISC 对比举例&#xff1a;X86的CAS(做原子操作的) 对比举例&#xff1a;ARM的CAS(做原子操作的) 指令寻址 指令中的操作数的寻址方式 各语言对象内存布局对比 C内存布局 理解编译单元 Java对象内存布局 python对象模型 CPU …

Linux 基金会分叉 Terraform,正式推出 OpenTofu

导读Linux 基金会宣布推出 OpenTofu&#xff0c;这是一个 Terraform 的开源替代方案&#xff0c;并且分叉自 Terraform。OpenTofu 原名 OpenTF&#xff0c;为所有人提供了一个在中立治理模式下的可靠的开源替代方案。 Terraform 是 HashiCorp 开源的一个安全和高效的用来构建、…

JavaScript中的深拷贝(deep copy)和浅拷贝(shallow copy)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

突发!该国教育部将MDPI、Hindawi和Frontiers三大出版商打包“拉黑”了!

最近&#xff0c;基于对学术诚信和作者署名的特别关切&#xff0c;马来西亚大学教育部发布了一项声明&#xff0c;禁止该国的公立大学使用政府预算来支付在MDPI、Hindawi和Frontiers三家学术出版商旗下的所有期刊上发表论文的费用。 马来西亚大学教育部还成立了一个特别委员会…

MyCat-web安装文档:安装Zookeeper、安装Mycat-web

安装Zookeeper A. 上传安装包 zookeeper-3.4.6.tar.gzB. 解压 #解压到当前目录&#xff0c;之后会生成一个安装后的目录 tar -zxvf zookeeper-3.4.6.tar.gz#加上-c 代表解压到指定目录 tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/C. 在安装目录下&#xff0c;创建数据…