uniapp开发微信小程序,选择地理位置uni.chooseLocation

<view @click="toCommunity">点击选择位置</view>
    toCommunity() {const that = thisuni.getSetting({success: (res) => {const status = res.authSetting// 如果当前设置是:不允许,则需要弹框提醒客户,需要前往设置页面打开授权if(!status['scope.userLocation']) {uni.showModal({title: "是否授权当前位置",content: "需要获取您的地理位置,请确认授权,否则地图功能将无法使用",success: (tip) => {if (tip.confirm) {// 如果已经拒绝过,则需要打开设置页面,授权弹框不会弹出第二次,因为已经明确拒绝/确认过了(微信的原因)if (that.isDeny) {wx.openSetting({success: function(res) {// 在设置页面授权成功后再次获取位置信息uni.showToast({title: "授权成功",})that.isDeny = false// 修改授权后返回页面,弹框消失,需要再点一次},fail: (data) => {console.log(data)// isDeny 是否拒绝过授权,如果拒绝过,再点击按钮的话,弹框确认后就直接打开微信小程序设置页that.isDeny = true}})return}// 如果点击了确认,并且没有拒绝过微信系统授权弹框,则会弹出授权位置信息的弹框uni.authorize({scope: "scope.userLocation",success: (data) => {// 授权弹框点击确认console.log(data)// 如果用户同意授权,则打开授权设置页面,判断用户的操作uni.openSetting({success: (data) => {// 如果用户授权了地理信息在,则提示授权成功if (data.authSetting['scope.userLocation'] === true) {uni.showToast({title: "授权成功",icon: "none",duration: 1000})}}})},fail: (data) => {// 如果用户拒绝授权,则提示用户需要授权uni.showToast({title: "您已拒绝授权,请重新授权",icon: "none",duration: 1000})that.isDeny = true}})}}})} else {uni.chooseLocation({success: (res) => {that.formData.village = res.namethat.formData.address = res.addressthat.formData.longitude = res.longitudethat.formData.latitude = res.latitudeconst map = new amapFile.AMapWX({key: 'f037f0a9966f01339818bbe2ec1c6495',})map.getRegeo({location: res.longitude + ',' + res.latitude,success: (data) => {this.formData.sheng = data[0].regeocodeData.addressComponent.provincethis.formData.shi = data[0].regeocodeData.addressComponent.citythis.formData.qu = data[0].regeocodeData.addressComponent.district},})},fail: () => {}})}},fail: () => {that.isDeny = true},})},

在这里插入图片描述

下方列表可以选择地址,选择后点击右上角完成,会返回页面

在这里插入图片描述

    toCommunity() {uni.getSetting({success: function(res) {if (!res.authSetting['scope.userLocation']) { // 如果没有授权定位if (that.isFirstTime) { // 如果是第一次尝试// 弹出提示框询问用户是否授权uni.showModal({title: '提示',content: '需要获取您的地理位置信息',success: function(modalRes) {if (modalRes.confirm) {// 用户点击了确认,尝试请求授权uni.authorize({scope: 'scope.userLocation',success: function() {// 授权成功,调用openMap方法that.openMap()},fail: function() {// 授权失败,可能是用户拒绝了,此时可以打开设置页面that.openSetting()}})}}})that.$store.commit('updateIsFirstTime', false) // 更新为已尝试授权} else {// 用户之前已经拒绝过授权,直接打开设置页面that.openSetting()}} else {// 已经授权,直接调用openMap方法that.openMap()}},fail: function(err) {// 获取设置失败的处理console.error('获取用户设置失败:', err)}})},openSetting() {// 打开设置页面uni.openSetting({success: function(res) {if (res.authSetting['scope.userLocation']) {// 用户在设置页面打开了定位权限this.openMap()}},fail: function(err) {// 打开设置页面失败的处理console.error('打开设置页面失败:', err)}})},openMap() {uni.chooseLocation({success: (res) => {console.log('用户选择的地址:', res)this.formData.village = res.namethis.formData.address = res.addressthis.formData.longitude = res.longitudethis.formData.latitude = res.latitudeconst map = new amapFile.AMapWX({key: 'f037f0a9966f01339818bbe2ec1c6495',})map.getRegeo({location: res.longitude + ',' + res.latitude,success: (data) => {this.formData.sheng = data[0].regeocodeData.addressComponent.provincethis.formData.shi = data[0].regeocodeData.addressComponent.citythis.formData.qu = data[0].regeocodeData.addressComponent.district},})},fail: (err) => {console.log('选择位置失败:', err)}})},

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

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

相关文章

主机通过带光发端和ops接收端控制屏串口调试记录

场景就是主机电脑使用cutecom通过光纤口再到ops接收端从而控制屏过程 光纤口有个发送端波特率&#xff0c;Ops有接收端波特率&#xff0c;屏有自己的波特率&#xff0c;主机电脑可以通过发串口指令去设置发送端波特率和ops接收端波特率。因为主机只有一个&#xff0c;屏有多种…

概念解析 | ROC曲线:评估分类模型

注1:本文系"概念解析"系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:ROC曲线的含义和绘制 概念解析 | ROC曲线:评估分类模型 第一部分:通俗解释 在我们的日常生活中,经常会遇到需要做出判断和选择的情况。比如,当你收到一封邮件时…

OmniPlan Pro 4 for Mac中文激活版:项目管理的新选择

OmniPlan Pro 4 for Mac作为一款专为Mac用户设计的项目管理软件&#xff0c;为用户提供了全新的项目管理体验。其直观易用的界面和强大的功能特性&#xff0c;使用户能够轻松上手并快速掌握项目管理要点。 首先&#xff0c;OmniPlan Pro 4 for Mac支持自定义视图&#xff0c;用…

springboot增删改查

我的记录 RestController RequestMapping("/user") public class UserController {Autowiredprivate UserService userService;GetMapping("/list")public List<User> list(){return userService.list();}//新增PostMapping("/save")publi…

读天才与算法:人脑与AI的数学思维笔记24_预测性文本生成器

1. 起源 1.1. 人类讲故事可能起源于“假如……”这种问答结构 1.2. 讲故事是人类做安全试验的一种方式 1.2.1. 如果你问一个人“假如……”&#xff0c;其实是在探索你的行为对他可能带来的影响 1.3. 最早出现的故事极有可能就源自我们对在周遭混乱的环境中寻找某种秩序的渴…

【RocketMQ问题总结-2】

RocketMQ 消息持久化 Broker通过底层的Netty服务器获取到一条消息后&#xff0c;会把这条消息的内容写入到一个CommitLog文件里去&#xff08;一个Broker进程就只有一个CommitLog文件&#xff0c;也就是说这个Broker上所有Topic的消息都会写入这个文件&#xff09;。 同时&…

贪心算法----最大数

今日题目&#xff1a;leetcode179------点击跳转题目 分析&#xff1a; 要把这些数组组成最大的数&#xff0c;首先我们把数字转化为字符串&#xff0c;根据自定义的排序规则把这些字符串字数排列&#xff0c;再用一个字符串接受这些字符串数字拼接成最大的字符串数字 排序规则…

Gradient发布支持100万token的Lllama3,上下文长度从8K扩展到1048K

前言 近日Gradient公司在Crusoe Energy公司的算力支持下&#xff0c;开发了一款基于Llama-3的大型语言模型。这款新模型在原Llama-3 8B的基础上&#xff0c;将上下文长度从8000 token大幅扩展到超过104万token。 这一创新性突破&#xff0c;展现了当前SOTA大语言模型在长上下…

while 习题

while 结构 习题 1.计算1到100所有整数和 2.提示用户输入一个小于100的整数&#xff0c;并计算从1到该数之间所有整数的和 3.求从1到100所有整数的偶数和、奇数和 echo -e \n 可以实现换行 4.用户输入密码&#xff0c;脚本判断密码是否正确&#xff0c;正确密码为123456&am…

章十二、数据库(1) —— 概述、MySQL数据库、SQL、DDL、DML、DQL、多表设计

为什么学习数据库&#xff1a; ● 实现数据持久化到本地&#xff1b; ● 使用完整的管理系统统一管理&#xff0c;可以实现结构化查询&#xff0c;方便管理&#xff1b; 一、 数据库概述 ● 数据库 数据库&#xff08;DataBase&#xff09;为了方便数据的 存储 和 管理 &…

01、vue+openlayers6实现自定义测量功能(提供源码)

首先先封装一些openlayers的工具函数&#xff0c;如下所示&#xff1a; import VectorSource from ol/source/Vector; import VectorLayer from ol/layer/Vector; import Style from ol/style/Style; import Fill from ol/style/Fill; import Stroke from ol/style/Stroke; im…

【Linux】项目自动化构建工具make/makefile

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; Linux &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解Linux中项目自动化构建工具make/makefile的相关内容。 如果看到最后…