uniapp打开地图直接获取位置

uniapp官网文档
https://en.uniapp.dcloud.io/api/location/open-location.html
<view class="map-content" @click.stop="kilometer(item)"><view class="km">{{item.distance||'0'}}km</view></view>
import map from '../../utils/map.js'onLoad() {let that = thislet addressInfo = getApp().globalData.addressInfo;if (addressInfo) {that.addressInfo = addressInfothat.getOilList()} else {//这里是获取地理位置map.loadCity().then(res => {that.addressInfo = getApp().globalData.addressInfothat.getOilList()});}},
// 点击获取地图kilometer(e) {uni.openLocation({longitude: Number(e.lng),latitude: Number(e.lat),name: e.name,address: e.address})},
map.js页面对地理位置进行封装
import QQMapWX from '@/utils/qqmap-wx-jssdk.min.js'
var qqmapsdk = {};// 获取位置授权
async function loadCity() {let that = this;return new Promise(function (resolve, reject) {uni.getSetting({success: (res) => {// res.authSetting['scope.userLocation'] == undefined 表示 初始化进入该页面// res.authSetting['scope.userLocation'] == false 表示 非初始化进入该页面,且未授权// res.authSetting['scope.userLocation'] == true 表示 地理位置授权if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {uni.showModal({title: '请求授权当前位置',content: '需要获取您的地理位置,请确认授权',success: function (res) {if (res.cancel) {uni.showToast({title: '拒绝授权',icon: 'none',duration: 1000})reject(false);} else if (res.confirm) {uni.openSetting({success: function (dataAu) {if (dataAu.authSetting["scope.userLocation"] == true) {uni.showToast({title: '授权成功',icon: 'success',duration: 1000})that.getLocation().then(function (res) {if (res) {resolve(true);} else {reject(false);}});} else {uni.showToast({title: '授权失败',icon: 'none',duration: 1000})reject(false);}}})}}})} else if (res.authSetting['scope.userLocation'] == undefined) {that.getLocation().then(function (res) {if (res) {resolve(true);} else {reject(false);}});} else {that.getLocation().then(function (res) {if (res) {resolve(true);} else {reject(false);}});}}})}).catch((e) => {})
}
//坐标获取城市
function getLocation() {let vm = this;return new Promise(function (resolve, reject) {uni.getLocation({type: 'wgs84',success: function (res) {getApp().globalData.latitude = res.latitude;getApp().globalData.longitude = res.longitude;uni.setStorageSync("longitude", res.longitude)uni.setStorageSync("latitude", res.latitude)vm.getLocal().then(function (res) {if (res) {resolve(true);} else {reject(false);}});},fail: function (res) {reject(false);}})}).catch((e) => {})
}// 坐标转换地址
function getLocal() {let vm = this;return new Promise(function (resolve, reject) {qqmapsdk = new QQMapWX ({key: 'asdfghjklqwertyuiop' //这里自己的key秘钥进行填充});qqmapsdk.reverseGeocoder({location: {latitude: getApp().globalData.latitude,longitude: getApp().globalData.longitude},success: function (res) {getApp().globalData.addressInfo = res.result.address_component;resolve(true);},fail: function (res) {reject(false);}});}).catch((e) => {})
}function calculateDistance(latitude, longitude) {let vm = this;return new Promise(function (resolve, reject) {qqmapsdk = new QQMapWX ({key: 'asdfghjklqwertyuiop' //这里自己的key秘钥进行填充});qqmapsdk.calculateDistance({to: [{latitude: latitude, //商家的纬度longitude: longitude, //商家的经度}],success: function (res) {resolve(res);},fail: function (res) {reject(res);}});}).catch((e) => {})
}function selectLocation() {let that = this;return new Promise(function (resolve, reject) {uni.getSetting({success(res) {// 只返回用户请求过的授权let auth = res.authSetting;if (auth['scope.userLocation']) {// 已授权,申请定位地址resolve(true)} else if (auth['scope.userLocation'] === undefined) {// 用户没有请求过的授权,不需要我们主动弹窗,微信会提供弹窗resolve(true)} else if (!auth['scope.userLocation']) {// 没有授权过,需要用户重新授权// 这个弹窗是为了实现点击,不然openSetting会失败uni.showModal({title: '是否授权当前位置?',content: '需要获取您的地理位置,请确认授权,否则定位功能将无法使用',success: res => {if (res.confirm) {uni.openSetting({success(res) {let setting = res.authSetting;if (!setting['scope.userLocation']) {uni.showToast({title: '地址授权失败,定位功能无法使用',icon: 'none',});reject(false)} else {// 地址授权成功,申请定位地址resolve(true)}},fail(err) {// 需要点击,有时候没有点击,是无法触发openSettingconsole.log('open-setting-fail', err);reject(false)}});}}});}}});}).catch((e) => {})
}module.exports = {loadCity,getLocation,getLocal,getLocation,selectLocation,calculateDistance
}
相关文章:
uniapp打开地图直接获取位置
uniapp官网文档 https://en.uniapp.dcloud.io/api/location/open-location.html <view class"map-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view></view>import map from ../../…...
Qt的事件处理机制、信号和槽以及两者之间的区别
Qt的事件处理机制 Qt 的事件处理机制是其框架的核心部分之一,用于处理用户操作、系统事件以及其他各种事件。以下是 Qt 事件处理机制的关键组成部分和流程: 事件对象 (QEvent): 所有事件在 Qt 中都是通过事件对象来表示的。QEvent 是所有事…...
LSTM实战之预测股票
📈 用PyTorch搭建LSTM模型,轻松预测股票价格!🚀 Hey小伙伴们,今天给大家带来一个超级实用的项目教程——如何用PyTorch和LSTM模型来预测股票价格!🌟 🔍 项目背景 我们都知道股市是…...
30-50K|抖音大模型|社招3轮面经
情况介绍:我主要做nlp,也涉及到多模态和强化学习。现在大环境比较差,能投的公司不是很多,比如腾讯,主要还是高级别的,所以腾讯我就没投 抖音一面 1、聊项目。 2、AUC的两种公式是?你能证明这…...
ChatGPT首次被植入人类大脑:帮助残障人士开启对话
马斯克在脑机接口中最强大的竞争对手Synchron有了新的技术进展,他们首次将ChatGPT整合到其脑机系统中,以使瘫痪患者更容易控制他们的数字设备。Synchron凭借其独特的脑机接口(BCI)技术脱颖而出,该技术巧妙地运用了成熟…...
数据结构-常见排序的七大排序
1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录…...
程序员学CFA——财务报告与分析(四)
财务报告与分析(四) 资产负债表资产负债表的构成和格式资产负债表的要素资产负债所有者权益 资产负债表的格式分层的资产负债表基于流动性的资产负债表 资产的计量属性资产负债表科目金融资产持有至到期投资交易性金融资产可供出售金融资产 商誉少数股东…...
【消息队列】kafka如何保证消息不丢失?
👏大家好!我是和风coding,希望我的文章能给你带来帮助! 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 📝点击 我的主页 还可以看到和风的其他内容噢&#x…...
不同随机数生成的含义
torch.manual_seed(all_args.seed) torch.cuda.manual_seed(all_args.seed) torch.cuda.manual_seed_all(all_args.seed) np.random.seed(all_args.seed) random.seed(all_args.seed) 这几种随机种子设置的含义如下: torch.manual_seed(all_args.seed): 设置PyTor…...
Jar工具完全指南:从入门到精通
Jar工具完全指南:从入门到精通的详尽教程 前言 欢迎来到Jar工具的完全指南!无论你是Java编程的初学者,还是经验丰富的开发者,掌握Jar工具都是必不可少的。Jar(Java Archive)是Java生态系统中的一个核心组…...
前端使用docx-preview展示docx + 后端doc转docx
文章目录 后端 doc 转 docxdcox - preview安装导入使用注意 最近菜鸟刚搞完签字,结果需求就加了,如果合同有附件(.doc.docx),签名就是签到附件里面,没有附件才是签到那个html里面! 这里附件签名…...
Vue3 组件通信
目录 create-vue创建项目 一. 父子通信 1. 父传子 2. 子传父 二. 模版引用(通过ref获取实例对象) 1.基本使用 2.defineExpose 三. 跨层通信 - provide和inject 1. 作用和场景 2. 跨层传递普通数据 3. 跨层传递响应式数据 4. 跨层传递方法 create-vue创建项目 npm ini…...
如何在Ubuntu 14.04上安装、配置和部署Rocket.Chat
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Rocket.Chat 是一个使用 Meteor 构建的开源消息应用程序。它支持视频会议、文件共享、语音消息,具有完整的 API 等功能…...
ISO 26262中的失效率计算:IEC TR 62380-Section 15-Switches and keyboards
目录 概要 1 开关和键盘的分类 2 开关和键盘失效率的计算 2.1 Switches and keyboards 2.1.1 Base失效率 2.1.2 接触数量 2.1.3 温度循环De-rating系数 概要 IEC TR 62380《电子组件、PCBs和设备的可靠性预计通用模型》是涵盖电路、半导体分立器件、光电组件、电阻器、电…...
Linux安全与高级应用(五)深入探讨Linux Shell脚本应用:从基础到高级
文章目录 深入探讨Linux Shell脚本应用:从基础到高级引言一、Shell脚本基础知识1. Shell的作用与分类2. 编写第一个Shell脚本 二、Shell变量的使用1. 变量的类型与定义2. 引号的使用3. 位置变量与预定义变量 三、重定向与管道操作1. 重定向操作2. 管道操作 四、计划…...
Java中等题-解码方法(力扣)
一条包含字母 A-Z 的消息通过以下映射进行了 编码 : "1" -> A "2" -> B ... "25" -> Y "26" -> Z 然而,在 解码 已编码的消息时,你意识到有许多不同的方式来解码,因为有些…...
【Git】git 从入门到实战系列(二)—— Git 介绍以及安装方法
文章目录 一、前言二、git 是什么三、版本控制系统是什么四、本地 vs 集中式 vs 分布式本地版本控制系统集中式版本控制系统分布式版本控制系统 五、安装 git 一、前言 本系列上一篇文章【Git】git 从入门到实战系列(一)—— Git 的诞生,Lin…...
【QT 5 QT 6 构建工具qmake-cmake-和-软件编译器MSVCxxxvs MinGWxxx说明】
【QT 5报错:/xxx/: error: ‘class Ui::frmMain’ has no member named ‘xxx’-和-软件编译器MSVCxxxvs MinGWxxx说明】 1、前言2 、qt 中 Qmake CMake 和 QBS1-qmake2-Cmake3-QBS4-官网一些说法5-各自特点 3、软件编译套件1-Desktop Qt 6.7.2 llvm-mingw 64-bit2-…...
SD卡参数错误:深度解析与数之寻软件恢复实战
一、SD卡参数错误:数据与设备的隐形杀手 在数字化时代,SD卡作为便携存储设备,广泛应用于相机、手机、无人机及各类电子设备中,承载着人们珍贵的照片、视频、文档等重要数据。然而,SD卡在使用过程中,有时会…...
深入理解和应用RabbitMQ的Work Queues模型
文章目录 1. 场景模拟2. 消息发送3. 消息接收4. 测试5. 能者多劳6. 总结 当你在处理消息时,可能会遇到这样的问题:消息的生产速度远远大于消费速度,导致消息堆积。这时候,Work Queues(工作队列)模型就能派上…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
