当前位置: 首页 > news >正文

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 的事件处理机制是其框架的核心部分之一&#xff0c;用于处理用户操作、系统事件以及其他各种事件。以下是 Qt 事件处理机制的关键组成部分和流程&#xff1a; 事件对象 (QEvent)&#xff1a; 所有事件在 Qt 中都是通过事件对象来表示的。QEvent 是所有事…...

LSTM实战之预测股票

&#x1f4c8; 用PyTorch搭建LSTM模型&#xff0c;轻松预测股票价格&#xff01;&#x1f680; Hey小伙伴们&#xff0c;今天给大家带来一个超级实用的项目教程——如何用PyTorch和LSTM模型来预测股票价格&#xff01;&#x1f31f; &#x1f50d; 项目背景 我们都知道股市是…...

30-50K|抖音大模型|社招3轮面经

情况介绍&#xff1a;我主要做nlp&#xff0c;也涉及到多模态和强化学习。现在大环境比较差&#xff0c;能投的公司不是很多&#xff0c;比如腾讯&#xff0c;主要还是高级别的&#xff0c;所以腾讯我就没投 抖音一面 1、聊项目。 2、AUC的两种公式是&#xff1f;你能证明这…...

ChatGPT首次被植入人类大脑:帮助残障人士开启对话

马斯克在脑机接口中最强大的竞争对手Synchron有了新的技术进展&#xff0c;他们首次将ChatGPT整合到其脑机系统中&#xff0c;以使瘫痪患者更容易控制他们的数字设备。Synchron凭借其独特的脑机接口&#xff08;BCI&#xff09;技术脱颖而出&#xff0c;该技术巧妙地运用了成熟…...

数据结构-常见排序的七大排序

1.排序的概念及其运用 1.1排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录…...

程序员学CFA——财务报告与分析(四)

财务报告与分析&#xff08;四&#xff09; 资产负债表资产负债表的构成和格式资产负债表的要素资产负债所有者权益 资产负债表的格式分层的资产负债表基于流动性的资产负债表 资产的计量属性资产负债表科目金融资产持有至到期投资交易性金融资产可供出售金融资产 商誉少数股东…...

【消息队列】kafka如何保证消息不丢失?

&#x1f44f;大家好&#xff01;我是和风coding&#xff0c;希望我的文章能给你带来帮助&#xff01; &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;点击 我的主页 还可以看到和风的其他内容噢&#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) 这几种随机种子设置的含义如下&#xff1a; torch.manual_seed(all_args.seed): 设置PyTor…...

Jar工具完全指南:从入门到精通

Jar工具完全指南&#xff1a;从入门到精通的详尽教程 前言 欢迎来到Jar工具的完全指南&#xff01;无论你是Java编程的初学者&#xff0c;还是经验丰富的开发者&#xff0c;掌握Jar工具都是必不可少的。Jar&#xff08;Java Archive&#xff09;是Java生态系统中的一个核心组…...

前端使用docx-preview展示docx + 后端doc转docx

文章目录 后端 doc 转 docxdcox - preview安装导入使用注意 最近菜鸟刚搞完签字&#xff0c;结果需求就加了&#xff0c;如果合同有附件&#xff08;.doc.docx&#xff09;&#xff0c;签名就是签到附件里面&#xff0c;没有附件才是签到那个html里面&#xff01; 这里附件签名…...

Vue3 组件通信

目录 create-vue创建项目 一. 父子通信 1. 父传子 2. 子传父 二. 模版引用(通过ref获取实例对象) 1.基本使用 2.defineExpose 三. 跨层通信 - provide和inject 1. 作用和场景 2. 跨层传递普通数据 3. 跨层传递响应式数据 4. 跨层传递方法 create-vue创建项目 npm ini…...

如何在Ubuntu 14.04上安装、配置和部署Rocket.Chat

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 Rocket.Chat 是一个使用 Meteor 构建的开源消息应用程序。它支持视频会议、文件共享、语音消息&#xff0c;具有完整的 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脚本应用&#xff1a;从基础到高级引言一、Shell脚本基础知识1. Shell的作用与分类2. 编写第一个Shell脚本 二、Shell变量的使用1. 变量的类型与定义2. 引号的使用3. 位置变量与预定义变量 三、重定向与管道操作1. 重定向操作2. 管道操作 四、计划…...

Java中等题-解码方法(力扣)

一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; "1" -> A "2" -> B ... "25" -> Y "26" -> Z 然而&#xff0c;在 解码 已编码的消息时&#xff0c;你意识到有许多不同的方式来解码&#xff0c;因为有些…...

【Git】git 从入门到实战系列(二)—— Git 介绍以及安装方法

文章目录 一、前言二、git 是什么三、版本控制系统是什么四、本地 vs 集中式 vs 分布式本地版本控制系统集中式版本控制系统分布式版本控制系统 五、安装 git 一、前言 本系列上一篇文章【Git】git 从入门到实战系列&#xff08;一&#xff09;—— Git 的诞生&#xff0c;Lin…...

【QT 5 QT 6 构建工具qmake-cmake-和-软件编译器MSVCxxxvs MinGWxxx说明】

【QT 5报错&#xff1a;/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卡参数错误&#xff1a;数据与设备的隐形杀手 在数字化时代&#xff0c;SD卡作为便携存储设备&#xff0c;广泛应用于相机、手机、无人机及各类电子设备中&#xff0c;承载着人们珍贵的照片、视频、文档等重要数据。然而&#xff0c;SD卡在使用过程中&#xff0c;有时会…...

深入理解和应用RabbitMQ的Work Queues模型

文章目录 1. 场景模拟2. 消息发送3. 消息接收4. 测试5. 能者多劳6. 总结 当你在处理消息时&#xff0c;可能会遇到这样的问题&#xff1a;消息的生产速度远远大于消费速度&#xff0c;导致消息堆积。这时候&#xff0c;Work Queues&#xff08;工作队列&#xff09;模型就能派上…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...