这篇文章主要介绍了微信小程序获取地理位置及经纬度授权代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
微信小程序获取地理位置授权,首先需要在app.json中添加配置:
- "permission": {
- "scope.userLocation": {
- "desc": "请确认授权"
- }
- }
获取经纬度:如果手机未开启位置信息,那么授权成功后在wx.getLocation()方法中也会一直失败,所以需要在fail方法中提示用户开启手机位置信息
- getUserLocation: function () {
- let vm = this
- wx.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) {
- // console.log('authSetting:status:拒绝授权后再次进入重新授权', res.authSetting['scope.userLocation'])
- wx.showModal({
- title: '',
- content: '【泰福利Lite】需要获取你的地理位置,请确认授权',
- success: function (res) {
- if (res.cancel) {
- wx.showToast({
- title: '拒绝授权',
- icon: 'none'
- })
- setTimeout(() => {
- wx.navigateBack()
- }, 1500)
- } else if (res.confirm) {
- wx.openSetting({
- success: function (dataAu) {
- // console.log('dataAu:success', dataAu)
- if (dataAu.authSetting["scope.userLocation"] == true) {
- //再次授权,调用wx.getLocation的API
- vm.getLocation(dataAu)
- } else {
- wx.showToast({
- title: '授权失败',
- icon: 'none'
- })
- setTimeout(() => {
- wx.navigateBack()
- }, 1500)
- }
- }
- })
- }
- }
- })
- }
- // 初始化进入,未授权
- else if (res.authSetting['scope.userLocation'] == undefined) {
- // console.log('authSetting:status:初始化进入,未授权', res.authSetting['scope.userLocation'])
- //调用wx.getLocation的API
- vm.getLocation(res)
- }
- // 已授权
- else if (res.authSetting['scope.userLocation']) {
- // console.log('authSetting:status:已授权', res.authSetting['scope.userLocation'])
- //调用wx.getLocation的API
- vm.getLocation(res)
- }
- }
- })
- },
- // 微信获得经纬度
- getLocation: function (userLocation) {
- let vm = this
- wx.getLocation({
- type: "wgs84",
- success: function (res) {
- // console.log('getLocation:success', res)
- var latitude = res.latitude
- var longitude = res.longitude
- vm.getDaiShu(latitude, longitude)
- },
- fail: function (res) {
- // console.log('getLocation:fail', res)
- if (res.errMsg === 'getLocation:fail:auth denied') {
- wx.showToast({
- title: '拒绝授权',
- icon: 'none'
- })
- setTimeout(() => {
- wx.navigateBack()
- }, 1500)
- return
- }
- if (!userLocation || !userLocation.authSetting['scope.userLocation']) {
- vm.getUserLocation()
- } else if (userLocation.authSetting['scope.userLocation']) {
- wx.showModal({
- title: '',
- content: '请在系统设置中打开定位服务',
- showCancel: false,
- success: result => {
- if (result.confirm) {
- wx.navigateBack()
- }
- }
- })
- } else {
- wx.showToast({
- title: '授权失败',
- icon: 'none'
- })
- setTimeout(() => {
- wx.navigateBack()
- }, 1500)
- }
- }
- })
- }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。