uniapp 持续获取定位(登录状态下才获取)(不采用定时器)(任意页面都可监听定位改变)
基于上次文章做了优化和改良,保证在登录状态下才获取定位信息
uniapp 小程序实时且持续获取定位信息(全局设置一次)(单页面监听定位改变)(不采用定时器)_uniapp小程序定位_前端小胡兔的博客-CSDN博客本篇文章实现了uniapp 微信小程序实时获取定位信息,小程序打开即可持续获取定位信息, 位置更新也会触发相关自定义事件_uniapp小程序定位https://blog.csdn.net/weixin_44805839/article/details/131984957?utm_source%20=%20uc_fansmsg
优点
- 只设置一次
- 不采用定时器的方式
- 无需多个页面调用
- 单独页面若想获取当前位置是否变化 可单独设置监听,并调用不同逻辑事件
- 根据登录状态区分是否调用(新增)
原理:
-
采用uniapp推出的: uni.onLocationChange(监听实时地理位置变化事件)
-
在app.vue中定义一次 且设置监听事件(便于独立页面监测定位改变并调用其他事件)
有关"uni.onLocationChange"的相关内容,不再赘述,详情见官网:
uni.onLocationChange(FUNCTION CALLBACK) | uni-app官网uni-app,uniCloud,serverless
https://uniapp.dcloud.net.cn/api/location/location-change.html
实现:
1 持续获取定位
1.1 app.vue页面定义globalData(全局变量)和方法,并在onshow和onhide中调用
<script>//import httpApi from '@/utils/httpApi.js' //自定义的接口文件 export default {globalData: {latitude: undefined,longitude: undefined,loginType: false, //登录状态 true为已登录},onLaunch: function() {console.log('App Launch')},onShow: function() {console.log('App Show')this.globalData.loginType = uni.getStorageSync('token') ? true : false;this.updateLocationChange();},onHide: function() {console.log('App Hide')uni.stopLocationUpdate();},methods: {updateLocationChange: function() {if (!this.globalData.loginType) {console.log("没登录 不上传locationchange")return;}let that = this;uni.startLocationUpdate({success: res => {uni.onLocationChange(function(res2) {that.globalData.latitude = res2.latitude;that.globalData.longitude = res2.longitude;//然后调用上传经纬度接口 自行定义//httpApi.syncLocation(that.globalData.latitude, that.globalData//.longitude).then(res => {});});},fail: err => console.error('开启小程序接收位置消息失败:', err),complete: msg => console.log('调用开启小程序接收位置消息 API 完成')});},}}
</script><style>/*每个页面公共css */
</style>
1.2 在manifest.json文件源码中做相关配置
(重要设置"startLocationUpdate"和"onLocationChange"):
"mp-weixin" : {"appid" : "", //appid"setting" : {"urlCheck" : false},"usingComponents" : true,"permission" : {"scope.userLocation" : {"desc" : "定位" //微信小程序获取location必填}},"requiredPrivateInfos": ["getLocation", //使用uni.getlocation才需声明"startLocationUpdate", //必要"onLocationChange" //必要]
},
1.3 登录成功后调用:
getApp().globalData.loginType = true; //改变登录状态
getApp().updateLocationChange(); //开启上传位置
1.4 退出登录后修改登录状态:
getApp().globalData.loginType = false;
这样就做到登录后开启监听位置啦~
2 监听globalData中的属性
在任意页面监听globalData中的数据实时变化,并调用定义的不同方法
2.1 在app.vue中定义 "watch" 方法,具体方法如下:
// 监听全局变量变化(经纬度需要)
watch: function(variate, method) {var obj = this.globalData;let val = obj[variate]; // 单独变量来存储原来的值Object.defineProperty(obj, variate, {configurable: true,enumerable: true,set: function(value) {val = value; // 重新赋值if (method) {method(variate, value); // 执行回调方法}},get: function() {// 在其他界面调用getApp().globalData.variate的时候,这里就会执行。return val; // 返回当前值}})
},
2.2 使用
例如我想经纬度变化时 可以在页面这样操作:
onLoad() {this.latitude = getApp().globalData.latitude;this.longitude = getApp().globalData.longitude;//实时获取当前位置getApp().watch('latitude', this.watchLocation);getApp().watch('longitude', this.watchLocation);
},
methods: {//监听location变化回调watchLocation: function(name, value) {if (name == 'latitude') {this.latitude = value;}if (name == 'longitude') {this.longitude = value;}},
}
以上就是本篇文章的全部内容啦~ 欢迎小伙伴们一起探讨 一起进步~
相关文章:
uniapp 持续获取定位(登录状态下才获取)(不采用定时器)(任意页面都可监听定位改变)
基于上次文章做了优化和改良,保证在登录状态下才获取定位信息 uniapp 小程序实时且持续获取定位信息(全局设置一次)(单页面监听定位改变)(不采用定时器)_uniapp小程序定位_前端小胡兔的博客-CSDN博客本篇文章实现了uniapp 微信小程序实时获取定位信息,小程序打开即可持续获取定…...
【Linux】Linux工具
Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 一、Linux安装软件: 1.yum安装 2.Linux和Windows文件互传 问题: 3.yum卸载软件 二、vim编辑器 1.命令模式 2.vim配置项说明 3.vim操作总结 一、Linux安装软件&#…...
ImageNet1000分类,英文原版,中文翻译版
在训练模型时,可以用imagenet中的图片进行分类学习,imagenet中分类介绍 一、官网网址 imagenet官网网址 1-398:动物 399-924:物品 925-1000:食物 二、官方英文版分类 n01440764 tench, Tinca tinca n01443537 gold…...
「Qt」常用事件介绍
🔔 在开始本文的学习之前,笔者希望读者已经阅读过《「Qt」事件概念》这篇文章了。本文会在上篇文章的基础上,进一步介绍 Qt 中一些比较常用的事件。 0、引言 当我们想要让控件收到某个事件时做一些操作,通常都需要重写相应的事件处…...
小鱼深度产品测评之:阿里云容器服务器ASK,一款不需购买节点,即可直接部署容器应用。
容器服务器ASK测评 1、引言2、帮助文档3、集群3.1集群列表3.1.1 详情3.1.1.1概览 tab3.1.1.2基本信息 tab3.1.1.4集群资源 tab3.1.1.5 集群日志 tab3.1.1.6 集群任务 tab 3.1.2 应用管理3.1.2.1 详情3.1.2.2 详情3.1.2.3 伸缩3.1.2.4 监控 3.1.3 查看日志3.1.3.1 集群日志3.1.3…...
RK3588平台开发系列讲解(文件系统篇)什么是 VFS
文章目录 一、什么是 VFS二、VFS 数据结构2.1、超级块结构2.2、目录结构2.3、文件索引结点2.4、打开的文件2.5、四大对象结构的关系沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 今天我们一起来瞧一瞧 Linux 是如何管理文件,也验证一下 Linux 那句口号:一切皆为文…...
Less is More: Focus Attention for Efficient DETR
摘要 类似detr的模型显著提高了探测器的性能,甚至优于经典的卷积模型。然而,在传统的编码器结构中,所有的标记都带来了冗余的计算负担。最近的稀疏化策略利用了信息标记的一个子集,通过稀疏编码器来降低注意力的复杂性࿰…...
2023 8-5
430. 扁平化多级双向链表 前序遍历(递归) 脖子左歪45度,多级链表变成了二叉树,输出先序即可。 前序遍历再将结果存放在双向链表中,通过将链表存入节点来改变原来的节点 /* // Definition for a Node. class Node { public:int val;Node* prev;Node* next;Node* child; }; *…...
数据结构 | 线性数据结构——双端队列
目录 一、何谓双端队列 二、双端队列抽象数据类型 三、用Python实现双端队列 四、回文检测器 一、何谓双端队列 双端队列是与队列类似的有序集合。它有一前、一后两端,元素在其中保持自己的位置。与队列不同的是,双端队列对在哪一端添加和移除元素没…...
使用 Docker Compose 部署单机版 Redis:简单高效的数据缓存与存储
家人们啦!今天我们来介绍如何使用 docker-compose 部署单机版 Redis,这是一个简单高效的数据缓存与存储解决方案,广泛应用于Web应用、移动应用以及各类数据处理场景。我们过后几篇文章了将会介绍cluster和sentinel集群的部署。通过本文的指导…...
第三章 图论 No.4最小生成树的简单应用
文章目录 裸题:1140. 最短网络裸题:1141. 局域网裸题:1142. 繁忙的都市裸题:1143. 联络员有些麻烦的裸题:1144. 连接格点 存在边权为负的情况下,无法求最小生成树 裸题:1140. 最短网络 1140. 最…...
微服务-nacos配置管理
Nacos配置管理 统一配置管理:一次配置更改并支持热更新。将核心配置存储到配置管理服务,当微服务启动时会自动读取配置管理服务中的配置信息并结合本地配置启动。当配置改动时,配置管理服务会自动通知微服务,微服务读取新配置并自…...
【开发问题】flink的sql任务,用命令行执行
flink-sql 命令行flink-sql的客户端sql文件地址sql的内容 命令行 /mnt/flink/flink-1.17.1/bin/sql-client.sh embedded -f /mnt/flink/flink-1.17.1/examples/sql/oracle2Oracle flink-sql的客户端 /mnt/flink/flink-1.17.1/bin/sql-client.shsql文件地址 /mnt/flink/flink-1…...
Git常见问题
git clone 提示OpenSSL SSL_read git clone 时提示Connection was reset, errno 10054类错误 fatal: unable to acce ss https://github.com/fex-team/ueditor.git/: OpenSSL SSL_read: Connection was reset, errno 10054 备注:以下方法只是归纳整理,…...
Android如何实现开机自启
开机自启有很多种办法,下面用广播的方式实现。 1、首先先创建广播,开机代码 /*** Created by Forrest.* User: Administrator* Date: 2023/3/6* Description:*/ public class BootCompleteReceiver extends BroadcastReceiver {Overridepublic void on…...
Java数组实现的简单点名器
Java数组实现的简单点名器 需求分析代码实现小结Time 需求分析 Java数组实现的简单点名器 用数组将名单存储,然后调用Random函数取随机数实现随机点名。 代码实现 import java.util.Random;public class DianMingDemo {public static void main(String[] args) {//…...
百度UEditor编辑器如何关闭抓取远程图片功能
百度UEditor编辑器如何关闭抓取远程图片功能 这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发&a…...
网站无法访问的常见原因
有多种问题可能会阻止用户访问您的网站。本文将解决无法访问网站,且没有错误消息指示确切问题的情况,希望对您有所帮助。 无法访问网站的常见原因有: (1)DNS 设置不正确。 (2)域名已过期。 (3)空白或没有索引文件。 (4)网络连接问题。 DNS 设…...
(树) 剑指 Offer 34. 二叉树中和为某一值的路径 ——【Leetcode每日一题】
❓ 剑指 Offer 34. 二叉树中和为某一值的路径 难度:中等 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:…...
HDFS集群滚动升级以及回滚相关
HDFS集群滚动升级以及回滚相关 介绍不停机滚动升级非联邦HA集群联邦HA集群 停机升级--非HA集群HDFS集群降级和回滚异同点共同点不同点 HA集群降级(downgrade)注意事项 集群回滚操作 介绍 在hadoop v2中,HDFS支持namenode高可用(H…...
TortoiseGit实战:用‘拣选’功能精准移植单个提交,告别全量合并的烦恼
TortoiseGit实战:用‘拣选’功能精准移植单个提交,告别全量合并的烦恼 在团队协作开发中,我们常常遇到这样的场景:测试分支(feature/hotfix)中某个关键Bug修复已经验证通过,但该分支还包含大量未…...
统信UOS/麒麟KYLINOS用户看过来:除了Termius,这款开源免费的SSH工具electerm更香!
国产操作系统用户的SSH工具新选择:electerm深度体验报告 对于统信UOS和麒麟KYLINOS用户而言,远程服务器管理是日常工作中的高频需求。Termius作为老牌SSH工具确实表现不俗,但今天我们要探讨的electerm,或许能给你带来意想不到的惊…...
VSCode Mermaid Preview:面向技术团队的实时图表协作解决方案
VSCode Mermaid Preview:面向技术团队的实时图表协作解决方案 【免费下载链接】vscode-mermaid-preview Previews Mermaid diagrams 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-mermaid-preview 在技术文档编写、系统架构设计和项目规划过程中&…...
论文重复率过低该怎么办?
很多人第一次看到“论文重复率过低”会慌,觉得是不是“太低反而有问题”。先说结论:单纯“重复率低”本身通常不是问题,关键看你低到什么程度,以及你的论文内容是否合理。常见情况分这几种:1. 10%以下:很正…...
AI测试的现状与未来:AI会取代人工测试吗
在软件测试领域,AI技术的崛起正掀起一场深刻变革。从自动化测试用例生成到智能缺陷检测,AI的应用场景不断拓展,效率提升显著。这让众多软件测试从业者不禁心生焦虑:AI是否会彻底取代人工测试?要解答这个问题࿰…...
卡尔曼滤波在目标跟踪中的应用:原理、建模与工程调参实战
1. 项目概述:从“猜”到“算”的跟踪艺术在目标跟踪这个领域,无论是自动驾驶中预测前车的轨迹,还是无人机锁定移动的物体,亦或是视频监控里框住一个行走的人,我们核心要解决的都是一个问题:如何在充满噪声和…...
为你的企业构建第一个 AI Agent Harness Engineering 的步骤
为你的企业构建第一个 AI Agent Harness Engineering 的步骤 1. 引入与连接:为什么你的Agent上线就“闯祸”? 1.1 真实场景:一个价值12万的Agent事故 2024年3月,国内某SaaS创业公司的客户成功团队上线了第一款AI Agent:原本的目标是让Agent自动回答80%的客户常见问题,自…...
Java 数组
Java 数组详细教程数组是 Java 中一种基本且重要的数据结构,用于存储固定大小的同类型元素的集合。所有元素在内存中是连续存储的,可以通过索引(下标)快速访问。1. 数组的基本概念元素: 数组中存储的每一个数据项。长度…...
Go语言云原生开发:构建高可用微服务架构
Go语言云原生开发:构建高可用微服务架构 引言 云原生开发已成为现代应用开发的主流范式,Go语言凭借其轻量级、高性能和出色的并发支持,成为云原生开发的首选语言。本文将深入探讨Go语言在云原生环境中的应用,帮助您构建高可用的微…...
用Python+OpenCV+SORT搞定高空抛物监测:从摄像头选型到代码调试的保姆级避坑指南
PythonOpenCVSORT高空抛物监测系统实战:从硬件选型到算法调优全解析 1. 项目背景与技术选型 高空抛物监测系统作为智慧社区建设的关键环节,面临着复杂的环境挑战。传统监控摄像头仅能记录画面,无法实现主动预警。而基于计算机视觉的智能分析…...
