移动端小程序 腾讯地图sdk 当前位置 地址你解析 距离计算

<template><view><!-- 顶部通知栏 --><view v-if="showtime" class="showtime"><wyb-noticeBar:url="guideCallbackUrl"color="#666666":text="['异常处理提醒:',' 我为什么不能打卡、我的定位异常应该怎么处理?',]"/></view><!-- 打卡内容主体部分 --><!-- <view class="show-time" v-if="showtime" :style="{ height: deviceHeight }"> --><view class="show-time" v-if="showtime"><!-- <text class="show-time-text">今日您还没签到 若按钮无反应、请打开定位功能</text> --><view class="sign-shell"><view class="sign-clock"><view>上班 09:00</view><view v-show="isNotClockk" class="signTime">未打卡</view><view v-show="!isNotClockk" :type="value" class="signTime">{{ signTime }}已打卡</view></view><view class="sign-clock2"><view>下班 17:00</view><view v-show="isNotClockk2" class="signTime">未打卡</view><view v-show="!isNotClockk2" class="signTime">{{ afterWorkTime }}已打卡</view></view></view><buttonclass="sign-button"open-type="getUserInfo"@getuserinfo="locationOnclick()"><view v-if="signFlag === 0">上班打卡</view><view v-else-if="signFlag === 1">下班打卡</view><view v-else>更新打卡</view><!-- 当前时间 15:11:15 --><view>{{ currentTime }}</view></button></view><!-- 底部当前日期 --><!-- <view class="bottom-date"> --><!-- <text class="index-container-text">{{ bottomCurrentDate }}</text> --><view class="index-place-box"><!-- 当前位置 默认显示 横杠 点击腾讯地图自动定位 --><view class="icon iconfont icon-location" @click="locationOnclick"><text class="index-container-box-text">当前位置:</text><text class="index-container-box-text2"> {{ place }}</text></view><!-- </view> --></view><!-- 签到成功日历组件 默认隐藏,当签到成功时显示 --><!-- <view v-if="!showtime" :style="{ height: deviceHeight }" class="content"> --><!-- 背景 --><!-- <view class="sign-showtime-bg"> </view><imt-calendar :selected="data"></imt-calendar></view> --></view>
</template><script>
// 引入签到成功日历组件
import imtCalendar from "components/imt-calendar/imt-calendar";
// 引入通知组件
import wybNoticeBar from "@/components/wyb-noticeBar/wyb-noticeBar.vue";
// 引入微信js sdk
import qqmapsdk from "../../static/qqmap-wx-jssdk.min.js";
// 注册定位插件
const chooseLocation = requirePlugin("chooseLocation");
export default {data() {return {value:'success',data: ["2022-01-01", "2022-01-01"],isNotClockk: true,isNotClockk2: true,// 记录下班打卡时间afterWorkTime: "",// 记录上班打卡时间signTime: "",dak_val: "",// 用户输入的值,json_data: "",// 是否显示时间showtime: true,signFlag: 0,// 设备高度deviceHeight: Number,// 经纬度latitude: "", // 维度longitude: "", // 经度// 当前所处位置place: "------------------",// 底部当前日期 2022-01-05bottomCurrentDate: "",// 签到的当前时间 15:21:21currentTime: "",guideCallbackUrl: "../../page_a/yichang/yichang",};},// 用户点击右上角分享onShareAppMessage: function (e) {return {title: "KJ打卡小程序",path: "pages/index/index",};},// 用户点击右上角分享onShareTimeline: function (e) {return {title: "KJ打卡小程序",path: "pages/index/index",};},methods: {// 签到的当前时间 15:11:21longtime() {let times = new Date();let a, b, c;if (times.getHours() < 10) {a = "0" + times.getHours();} else {a = times.getHours();}if (times.getMinutes() < 10) {b = "0" + times.getMinutes();} else {b = times.getMinutes();}if (times.getSeconds() < 10) {c = "0" + times.getSeconds();} else {c = times.getSeconds();}// 返回当前时间this.currentTime = `${a}:${b}:${c}`;},// 底部当前日期currentDateOnclick() {let times = new Date();this.bottomCurrentDate = `${times.getFullYear()}-${times.getMonth() + 1}-${times.getDate()}`;},/*** 获取经纬度信息+地址解析* 点击当前位置和打卡按钮触发自动定位事件* 1.调用腾讯地图* 2.获取授权定位*     1>允许则进入腾讯地图,进行自动定位*     2>不允许,则定位失败**/locationOnclick() {// 新增 先创建实例const QQMapWX = new qqmapsdk({key: "JF7BZ-OEYEU-OD2VS-2XALL-VOMDE-7MFNU",});// 获取当前的地理位置、速度// api 文档:https://uniapp.dcloud.io/api/location/location?id=getlocationuni.getLocation({type: "wgs84",success: (res) => {this.longitude = res.longitude;this.latitude = res.latitude;console.log("获取经纬度成功");console.log("当前位置的经度:", res.longitude);console.log("当前位置的纬度:", res.latitude);let key = "JF7BZ-OEYEU-OD2VS-2XALL-VOMDE-7MFNU"; //使用在腾讯位置服务申请的key;let referer = "KJ打卡"; //调用插件的app的名称// 解析经纬度信息const location = JSON.stringify({latitude: this.latitude,longitude: this.longitude,});// 分类名称const category = "生活服务,娱乐休闲";/***  1.保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面*  https://uniapp.dcloud.io/api/router?id=navigateto** 2.微信小程序插件文档* https://lbs.qq.com/miniProgram/plugin/pluginGuide/locationPicker*/wx.navigateTo({url: `plugin://chooseLocation/index?key=${key}&referer=${referer}&location=${location}&category=${category}`,});},// 此处新增测试fail: () => {console.log("获取经纬度失败");},complete: () => {// 解析地址QQMapWX.reverseGeocoder({location: {latitude: this.latitude,longitude: this.longitude,},success: function (res) {console.log("解析地址成功");console.log(res);// 省let province = res.result.ad_info.province;// 市let city = res.result.ad_info.city;console.log(province);console.log(city);},fail: function (res) {uni.showToast({title: "定位失败",duration: 2000,icon: "none",});console.log(res);},complete: function (res) {console.log(res);},});},// 新增end});},weixin() {uni.getUserInfo({success: (res) => {let username = JSON.parse(res.rawData);uni.setStorage({key: "xiaochengxu",data: username,success: () => {// this.showtime = false;let times = new Date();var new_time = `${times.getFullYear()}-${times.getMonth() + 1}-${times.getDate()}`;// 这里是给打卡日历的容器push数据(打卡日历组件会接收数据)let go_code = this.data.includes(new_time);this.data.push(new_time);// 不包含就存储起来// uni.request({//   data: {//     pass: this.dak_val,//     name: '0x96c88fa89ab9594b05dc3bfabfe01143',//   },//   // 这里需要修改//   url: 'https://ani-qi.gitee.io/vue1.0/text.html',// });uni.setStorage({key: "data",data: this.data,});uni.setStorage({key: "showtime",data: false,});uni.showToast({title: "打卡成功",icon: "success",duration: 1500,});console.log("signFlag",this.signFlag)if (this.signFlag == 0) {// 上班打卡 打卡成功显示 下班打卡this.signFlag = 1;this.isNotClockk = false;this.signTime = this.currentTime;} else {//下班打卡 打卡成功显示 更新打卡this.signFlag = 2;this.isNotClockk2 = false;this.afterWorkTime = this.currentTime;}},});},});},// uni-app获取腾讯地图计算两经纬度的实际距离(可批量)// 官方地址: https://lbs.qq.com/service/webService/webServiceGuide/webServiceDistancegetDistance() {uni.request({url: "https://apis.map.qq.com/ws/distance/v1/matrix", //仅为示例,并非真实接口地址。method: "GET",data: {mode: "walking",from: "39.775272,116.554588", //当前位置的经纬度to: "39.780864,116.567515", //办公地点经纬度key: "JF7BZ-OEYEU-OD2VS-2XALL-VOMDE-7MFNU", //配置腾讯开发key},success: (res) => {console.log(res);let hw = res.data.result.rows[0].elements[0].distance; //拿到距离()if (hw && hw !== -1) {if (hw < 1000) {hw = hw + "m";}//转换成公里else {hw = (hw / 2 / 500).toFixed(2) + "km";}} else {hw = "距离太近或请刷新重试";}console.log("当前位置与办公地点距离:" + hw);},});},},// 监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发onReady() {// 单元测试 获取腾讯地图计算两经纬度的实际距离(可批量)后期会移动到获取经纬度以后,算法判断中this.getDistance();uni.getStorage({key: "data",success: (res) => {this.data = res.data;console.log("接收数据传递后端res.data", res.data);},});// 底部日期this.currentDateOnclick();setInterval(() => {this.longtime();}, 1000);},// 监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参)// https://uniapp.dcloud.io/collocation/frame/lifecycle?id=%E9%A1%B5%E9%9D%A2%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9FonLoad() {uni.getSystemInfo({success: (res) => {this.deviceHeight = res.windowHeight - 100 + "px";},});uni.getStorage({key: "showtime",success: (res) => {this.showtime = res.data;},fail(e) {},});},// 监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面onShow() {if (this.showtime) {// 从地图选点插件返回后,在页面的onShow生命周期函数中能够调用插件接口,取得选点结果对象// 如果点击确认选点按钮,则返回选点结果对象,否则返回nullconst location = chooseLocation.getLocation();if (chooseLocation.getLocation()) {this.place = location.address;// 获取用户信息this.weixin();}} else {const location = chooseLocation.getLocation();this.place = location.address;}},// 插件局部注册components: {imtCalendar,wybNoticeBar,},
};
</script><style lang="scss" scoped>
.sign-clock {margin-left: 11%;
}
.signTime {font-size: 26rpx;
}
.sign-clock2 {margin-left: 32%;
}.sign-shell {display: flex;margin-top: 21%;
}
.index-container {position: absolute;left: 0;bottom: 0;width: 100%;text-align: center;
}
.title {font-size: 36rpx;color: #dfdfe6;text-align: center;margin: 45rpx;
}
.index-container-text {line-height: 100rpx;letter-spacing: 2px;color: #c8c7cc;
}
.index-container-box {display: flex;align-items: center;border-top: 1px solid #ebebeb;justify-content: space-around;height: 75rpx;
}
.index-container-box-text {color: #2c405a;font-weight: bold;
}
.index-container-box-text2 {color: #007aff;font-size: 25rpx;font-weight: bold;line-height: 75rpx;
}
.showtime {position: absolute;top: 0;left: 0;
}
// .show-time {
//   width: 100%;
//   display: flex;
//   text-align: center;
//   justify-content: space-around;
//   flex-direction: column;
//   align-items: center;
// }
.index-place-box {margin-left: 20%;margin-top: 25%;
}
.show-time-text {letter-spacing: 2px;font-size: 40rpx;color: #dfdfe6;
}.sign-button {margin-top: 31% !important;background-color: #007aff;width: 320rpx;border-radius: 50%;display: flex;justify-content: center;align-items: center;color: white;margin-top: -50rpx;font-weight: 800;flex-direction: column;height: 320rpx;
}.sign-showtime-bg {width: 100%;height: 375rpx;z-index: -99;position: absolute;left: 0;top: 0;background-color: #007aff;border-radius: 0 0 15px 15px;
}page {overflow: hidden;
}.content {margin-top: 80rpx;
}
</style>

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

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

相关文章

如何评估一项技术是否值得长期投入

“每个人的时间都是有限的&#xff0c;在有限的时间里选择一项值得投入的技术会变得尤为重要。” 笔者从 2008 年开始工作到现在也有 12 个年头了&#xff0c;一路走来都在和数据打交道&#xff0c;做过很多大数据底层框架内核的开发&#xff08;Hadoop&#xff0c;Pig&#x…

绝了,项目内部源码资源被爆出!网友:请收下我的膝盖!

你好&#xff0c;程序员。多少个清晨&#xff0c;你让阳光肆无忌惮地穿透你精心搭配的格子衬衫&#xff1b;多少个白天&#xff0c;你在疯狂体会需求和 bug &#xff1b;多少个午夜&#xff0c;你任凭无法止步的代码&#xff0c;收割着你的头发在忙碌焦虑中自我否定变成了常态&…

dubbo-go 中如何实现路由策略功能

可在控制面对服务的路由进行精细控制&#xff0c;是一个成熟 RPC 系统必备的能力之一。作为一个逐步走向成熟的 RPC 系统&#xff0c;Apache/dubbo-go&#xff08;以下简称 dubbo-go &#xff09;的最新版本 v1.4 中已经实现了 Condition Router 和 Health Instance First Rout…

JavaScript高级语法打包 - babel插件安装配置报错!Error: Cannot find module ‘@babel/preset-preset.env‘

目录 1. 插件安装和配置2. 运行打包 - 报错信息3. 解决办法1. 插件安装和配置 安装babel转换器相关的包: npm i babel-loader @babel/core @babel/runtime -D安装babel语法插件相关的包: npm i</

H5 微信公众号 授权登录 前后端分离篇(后端02)

文章目录1. 依赖2. 方法1. 依赖 <properties><weixin-java.version>4.2.0</weixin-java.version></properties><dependencies><dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</ar…

独家对话谢宝友:做一款类似于 Linux 的国产操作系统 | 人物志

作者 | 郑丽媛来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;从国外操作系统的长期垄断到中国自主研发操作系统数十年的起落浮沉&#xff0c;技术自主创新独立已成为国产基础软件的主要突破口。近几年间&#xff0c;随着物联网时代的到来&#xff0c;以 Linux 为主…

RebatesMe:返利网站DDOS防护

公司介绍 上海途美网络科技有限公司旗下的RebatesMe海淘返利网是一家新兴的专注海淘和海淘返利信息的服务性网站。RebatesMe海淘返利网合作的美国商家接近1000家&#xff0c;包括eBay、亚马逊、沃尔玛、健安喜等等美国线上销售综合商品的商家&#xff0c;为全球用户提供高比例…

Vue 过渡效果的组件

目录 1. 单节点的过渡1.1 应用场景1.2 定义过渡效果的方式1. 单节点的过渡 1.1 应用场景 Vue 提供了标签为 transition 的 内置组件,在: 元素或组件初始渲染时;元素或组件显示/ 隐藏时(使用v-if 或早show 进行条件渲染时);元素或组件切换时。我们可以给任何元素和组件添加…

言图科技:GPU服务器选型

公司简介 言图科技总部位于武汉光谷&#xff0c;致力于人工智能领域的自然语言处理、图像处理基础算法、软件、平台与设备研发。目前&#xff0c;公司拥有成熟的自然语言处理基础软件集、语义理解工具集、知识图谱工具集、智能陪练机器人、聊天机器人、情感与专注度分析工具、…

H5 微信公众号 授权登录 前后端分离篇(前后端联调_03)

文章目录1. 获取code2. 返回报文解析3. 源码1. 获取code 前端请求微信获取code 回调信息 https://open.weixin.qq.com/connect/oauth2/authorize?appidwxd1f5b7f23b72428a&redirect_urihttp%3A%2F%2F192.168.43.122%3A80&response_typecode&scopesnsapi_userin…

集群e家:O2O电商服务平台上云

公司简介 陕西集群物联网服务管理股份有限公司旗下的“集群e家”是专注于社区商圈O2O服务的平台&#xff0c;为社区&#xff08;乡村&#xff09;家庭提供创新的家庭消费服务及消费体验。集群e家智慧生活是以社区&#xff08;乡村&#xff09;为中心&#xff0c;以“互联网”的…

大数据给教育带来怎样的可能?

来源 | 人民数字 Fintech责编 | 晋兆雨头图 | CSDN下载自视觉中国当下&#xff0c;数据成为教学改进最为显著的指标。学生的成绩不好是由于周围环境而分心了吗&#xff1f;期末考试不及格是学生请了太多病假的缘故吗&#xff1f;这些以往不太好回答的问题&#xff0c;如今通过大…

Vue全家桶 - 电商后台管理系统项目开发实录(详)

目录 1. 项目概述1.1 电商项目基本业务概述1.2 电商后台管理系统的功能1.3 电商后台管理系统的开发模式(前、后端分离)2. 项目初始化2.1 前端项目初始化步骤码云相关操作2.2 后台项目的环境安装配置3. 登录 / 退出 功能3.1 登录概述3.2 登录 - token 原理分析3.3 实现登录功能…

才博教育:AI口语学习平台上云

公司简介 北京才博教育科技有限公司自主开发了一套基于AI技术的口语学习工具&#xff0c;服务与英语教育机构。这套口语学习工具旨在于解决英语培训机构在传统英语教学中存在的会看、会写、不会说的问题&#xff0c;基于自主研发的AI人工智能技术&#xff0c;清晰的分辨学习者…

H5 微信公众号 授权登录 前后端分离篇(资料准备+前端01)

实现微信公众号授权登录&#xff0c;很简单&#xff0c;但是注意的地方要细心&#xff0c;小伙伴们跟着我的思路一起实现吧&#xff01; 文章目录一、帐号申请1. 正式账号2. 测试帐号二、微信文档2.1. 文档主页2.2. 授权流程2.3. 授权回调三、前端部分3.1. 登录校验3.2. code获…

SQL分页查询方案的性能对比

作者 | 中国农业银行 吴海存责编 | 晋兆雨头图 | CSDN下载自视觉中国导读本文主要介绍了基于ROWNUM、主键列/非空唯一性列、分析函数、OFFSET-FETCH NEXT机制的几种SQL分页查询方案的性能对比。分页查询可分为逻辑分页和物理分页两种。逻辑分页是应用代码级别实现的分页&#x…

阿里云HBase增强版全文索引功能技术解析

新用户9.9元即可使用6个月云数据库HBase&#xff0c;更有低至1元包年的入门规格供广大HBase爱好者学习研究&#xff0c;更多内容请参考链接 阿里云HBase增强版(Lindorm)简介 阿里云数据库HBase增强版&#xff0c;是基于阿里集团内部使用的Lindorm产品研发的、完全兼容HBase的云…

ECMAScript 2015~2020 语法全解析

ECMAScript 2015~2020 语法全解析 &#xff08; ES6 ~ ES11 &#xff09;.快速上手 > es.xiecheng.live

数组正遍历,数组倒遍历

package com.pang.array_demo;public class Array_Demo {public static void main(String[] args) {int[] arr {1,2,3,4,3,45};arrayDemo(arr);System.out.println("");arrayDemo02(arr);}// 数组正遍历public static void arrayDemo(int[] arr) {for (int i 0; i …

架构师技术文档:Redis+Nginx+Dubbo+Spring+架构师精选视频

最近花了很长的时间去搜罗整理Java核心技术好文&#xff0c;我把每个Java核心技术的优选文章都整理成了一个又一个的文档。今天就把这些东西分享给老铁们&#xff0c;也能为老铁们省去不少麻烦&#xff0c;想学什么技能了&#xff0c;遇到哪方面的问题了 直接打开文档学一学就好…