首页 微信小程序 小程序开发 小程序如何获取用户当前位置

小程序如何获取用户当前位置

Jan 29, 2021 am 09:58 AM
位置 小程序 用户

小程序如何获取用户当前位置

有三种方式可以获取用户当前位置:

(学习视频分享:编程入门

1、wx.getLocation(多与wx.openLocation一起用)

获取当前的精度、纬度、速度。不需要授权。当type设置为gcj02 返回可用于wx.openLocation的坐标

2、wx.chooseLocation

需要授权,打开地图选择位置

第一次调用方法时先出现

6b84ba605b316c6f9fd7c4c0dd88ed5.png

允许权限之后之后再出现

7de2f6cd4b86441adf4fc500c751668.png

如果第一次就不允许,则一直调用wx.chooseLocation的fail方法

3、wx.openLocation

需要授权,使用微信内置地图查看位置。多半用于查看起点到终点的路线怎么走

896b5b727147068ece1032b123916d5.png

 授权方法有三种:

1、wx.getSetting

获取用户的当前设置,返回值中只会出现小程序已经向用户请求过的权限,类似下面的样子

526660c3a5f34984c36249ea9286230.png

2、wx.openSetting

调起权限设置选择界面,设置界面只会出现小程序已经向用户请求过的权限,类似下面的样子

ca9cc912ca8e6327c5a29625ba24bb4.png

3、wx.authorize

提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。,类似下面的样子

093443c1680d5d0e8552c4a98d42e19.png

这就是wx.authorize出现的内容

问题来了:假如我第一次使用wx.chooseLocation()获取权限被拒绝,然后使用wx.getSetting()来重新获取权限该怎么做呢?

思路:wx.chooseLocation()有fail方法,如果第一次拒绝之后,以后调用选择地图都是触发的这个,那么我可以在fail方法里面,使用wx.getSetting(),这样就每次都能判断是否已经给与了权限了。

第一步:由于有可能会多次使用定位的方法,所以我把定位的方法写到App.js中,方便调用

App({
    //获取用户地理位置权限
    getPermission:function(obj){
      wx.chooseLocation({
        success: function (res) {    
            obj.setData({
                addr: res.address      //调用成功直接设置地址
            })                
        },
        fail:function(){
            wx.getSetting({
                success: function (res) {
                    var statu = res.authSetting;
                    if (!statu['scope.userLocation']) {
                        wx.showModal({
                            title: '是否授权当前位置',
                            content: '需要获取您的地理位置,请确认授权,否则地图功能将无法使用',
                            success: function (tip) {
                                if (tip.confirm) {
                                    wx.openSetting({
                                        success: function (data) {
                                            if (data.authSetting["scope.userLocation"] === true) {
                                                wx.showToast({
                                                    title: '授权成功',
                                                    icon: 'success',
                                                    duration: 1000
                                                })
                                                //授权成功之后,再调用chooseLocation选择地方
                                                wx.chooseLocation({
                                                    success: function(res) {
                                                        obj.setData({
                                                            addr: res.address
                                                        })
                                                    },
                                                })
                                            } else {
                                                wx.showToast({
                                                    title: '授权失败',
                                                    icon: 'success',
                                                    duration: 1000
                                                })
                                            }
                                        }
                                    })
                                }
                            }
                        })
                    }
                },
                fail: function (res) {
                    wx.showToast({
                        title: '调用授权窗口失败',
                        icon: 'success',
                        duration: 1000
                    })
                }
            })
        }
    })        
   },})
登录后复制

第二步:在需要获取地址的页面中:

var app = getApp();
Page({
   data:{
        addr:'请选择位置'         
    },
    //选择获取地理位置
    getAddress:function(){
          var that=this;
      app.getPermission(that);    //传入that值可以在app.js页面直接设置内容        }, 
})
登录后复制

最终效果图:

86aace44f021d2c2f3218cd6509ab93.png

最终在手机上获取到的位置偏差不太大。

更新     wx.openSetting   的注意事项。

2.3.0 版本开始,用户发生点击行为后,才可以跳转打开设置页,管理授权信息

即2.3.0版本之后,我通过上面的wx.showModal的回调函数来调用wx.openSetting 会发生下面的错误:

5bc3727a6dafb0acc9ad2c0ffe11baa.png

openSetting:fail can only be invoked by user TAP gesture.

但是我测试 2.2.4 开始 到2.3.1 都会出现上面这种错误。

2.3.2及以上又不会出现这种问题。。。。。。。。

而且当我测试2.0.8 到  2.2.3  会出现下面的错误。。。。。。

 53f4c5303acbc417687d7b4874f8707.png

其它的就没有这问题了。搞不懂。。。

相关推荐:小程序开发教程

以上是小程序如何获取用户当前位置的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何用小红书号查找用户?能查到手机号吗? 如何用小红书号查找用户?能查到手机号吗? Mar 22, 2024 am 08:40 AM

随着社交媒体的迅速发展,小红书已经成为了备受青睐的社交平台之一。用户可以通过创建小红书号来展示个人身份,并与其他用户交流互动。如果你需要查找某个用户的小红书号码,可以按照以下简单步骤进行操作。一、如何用小红书号查找用户?1.打开小红书APP,点击右下角的“发现”按钮,然后选择“笔记”选项。2.在笔记列表中,找到你想查找的用户发布的那篇笔记。点击进入笔记详情页。3.在笔记详情页中,点击用户头像下方的“关注”按钮,即可进入该用户的个人主页。4.在用户个人主页右上角,点击三个点按钮,然后选择“个人信息

Win11的启动路径以及如何打开它 Win11的启动路径以及如何打开它 Jan 03, 2024 pm 11:13 PM

每一个Windows系统都有一个启动路径,如果你在其中添加了文件或软件,就会在开机的时候打开它。不过不少朋友不知道win11启动路径在哪里,其实我们只需要进入C盘的对应文件夹就可以了。win11启动路径:1、双击打开“此电脑”2、直接将该路径“C:\ProgramData\Microsoft\Windows\StartMenu\Programs\Startup”粘贴进路径框。3、这里就是win11启动路径了,如果我们要开机打开文件就可以将文件放进来。4、如果你根据这个路径进不来,可能是被隐藏了。

以超级用户身份登录Ubuntu 以超级用户身份登录Ubuntu Mar 20, 2024 am 10:55 AM

在Ubuntu系统中,root用户通常是禁用状态的。要激活root用户,可以使用passwd命令设置密码,然后使用su-命令以root身份登录。根用户是具有系统管理权限且不受限制的用户。他拥有访问和修改文件、用户管理、软件安装和删除,以及系统配置更改等权限。根用户与普通用户有着明显的区别,根用户拥有系统中最高的权限和更广泛的控制权。根用户可以执行重要的系统命令和编辑系统文件,而普通用户则无法做到这一点。在本指南中,我将探讨Ubuntu根用户,如何以根用户身份登录,以及它与普通用户的不同之处。注意

什么是 sudo,为什么它如此重要? 什么是 sudo,为什么它如此重要? Feb 21, 2024 pm 07:01 PM

sudo(超级用户执行)是Linux和Unix系统中的一个关键命令,允许普通用户以root权限运行特定命令。sudo的功能主要体现在以下几个方面:提供权限控制:sudo通过授权用户以临时方式获取超级用户权限,从而实现了对系统资源和敏感操作的严格控制。普通用户只能在需要时通过sudo获得临时的特权,而不需要一直以超级用户身份登录。提升安全性:通过使用sudo,可以避免在常规操作中使用root账户。使用root账户进行所有操作可能会导致意外的系统损坏,因为任何错误或不小心的操作都将具有完全的权限。而

星穹铁道克劳克影视乐园折纸小鸟位置 星穹铁道克劳克影视乐园折纸小鸟位置 Mar 27, 2024 pm 11:51 PM

星穹铁道克劳克影视乐园总共有20只折纸小鸟,有很多玩家不知道克劳克影视乐园折纸小鸟在哪,小编已经把每只折纸小鸟位置全部都总结出来了,帮助大家进行寻找,具体内容一起来看看这篇克劳克影视乐园折纸小鸟位置最新汇总。崩坏星穹铁道攻略大全星穹铁道克劳克影视乐园折纸小鸟位置1、克劳克影视乐园一层2、克劳克影视乐园二层

了解pip安装包存储的位置和结构 了解pip安装包存储的位置和结构 Jan 18, 2024 am 08:23 AM

深入了解pip安装的包存放位置,需要具体代码示例pip是Python语言常用的包管理工具,用于方便地安装、升级和管理Python包。在使用pip安装包时,它会自动从PyPI(Python包索引)下载对应的包文件,并将其安装到指定的位置。那么,pip安装的包究竟存放在哪里呢?这是很多Python开发者都会遇到的问题。本文将深入探讨pip安装的包存放位置,并提供

win11关机位置 win11关机位置 Jan 10, 2024 am 09:14 AM

如果我们要长时间离开电脑,那么最好将电脑关机保护它,那么win11关机在哪里呢,其实一般来说只要打开开始菜单,在其中就可以找到关机按钮了。win11关机在哪里:答:在开始菜单的电源按钮里。1、首先我们点击底部任务栏的“windows徽标”打开“开始菜单”2、打开后,可以在右下角找到“电源”按钮,如图所示。3、点击电源按钮后,就能看到“关机”了,点击它就能关机。4、如果因为死机等特殊情况无法关机,那么可以直接用电脑上的“电源键”长按强制关机。

最后纪元竞技场在哪 最后纪元竞技场在哪 Mar 07, 2024 pm 08:16 PM

在《最后纪元》中,玩家可以玩多种形式,如游戏模式、挑战模式和竞技场等。竞技场则是游戏的终极玩法,提供两种模式供玩家选择。最后纪元竞技场在哪答:竞技场属于终局玩法,具体位置在冠军之门处。需要获取竞技场钥匙或记忆的竞技场钥匙,右键单击后可见世界地图,并能找到冠军之门的具体位置。竞技场分为两大模式:竞技场冠军模式和无尽竞技场模式。前者包括40波敌人与选择的奖励,总要在与竞技场冠军的较量中达到顶峰。竞技场冠军模式共有4阶段,难度越高,奖励越好。无尽竞技场是无限波次的模式,难度逐渐增加,成绩最好的挑战者将

See all articles