微信小程序开发——小程序API获取用户位置及异常流处理完整示例
前言:
小程序需要添加一個(gè)定位功能,主要的就是獲取用戶位置的經(jīng)緯度,然后根據(jù)用戶經(jīng)緯度進(jìn)行一些判斷操作。
在小程序提供的Api中,獲取用戶定位信息的主要Api是?wx.getLocation(obj)?。但是使用這個(gè)API,會(huì)先獲取用戶授權(quán)。如果用戶取消授權(quán),那么再調(diào)這個(gè)Api,也不會(huì)再出現(xiàn)授權(quán)頁面,也就不能再獲取用戶位置了,這就需要使用其他的Api輔助打開授權(quán)頁面了。所以獲取用戶位置就需要完整的授權(quán)、獲取位置的流程及異常流處理了。
業(yè)務(wù)流程圖:
關(guān)鍵技術(shù)點(diǎn):
頁面加載默認(rèn)調(diào)用 wx.getLocation ,然后如果獲取失敗則調(diào)用 wx.getSetting ,如果未授權(quán),則調(diào)用 wx.openSetting 打開授權(quán)設(shè)置界面,如果授權(quán)界面設(shè)置允許授權(quán),則返回頁面再次調(diào)用 wx.getLocation,主要的流程就是這個(gè)了。
示例代碼:
1 const app = getApp() 2 3 Page({ 4 data: { 5 hiddenReAuthorizePop:true,//隱藏重新授權(quán)確認(rèn)彈窗 6 latitude: "", //維度,浮點(diǎn)數(shù) 7 longitude: "", //經(jīng)度,浮點(diǎn)數(shù) 8 content:"本活動(dòng)需要獲取位置才可以參加" 9 }, 10 onLoad: function() { 11 //1. 頁面加載的時(shí)候獲取定位 12 this.getLocation() 13 }, 14 /** 15 * 1. 獲取用戶定位 16 */ 17 getLocation: function() { 18 var self = this; 19 wx.getLocation({ 20 type: 'wgs84', // 默認(rèn)為wgs84的gps坐標(biāo),如果要返回直接給openLocation用的坐標(biāo),可傳入'gcj02' 21 altitude: true, //傳入 true 會(huì)返回高度信息,由于獲取高度需要較高精確度,會(huì)減慢接口返回速度 22 success: function(res) { 23 var latitude = res.latitude; // 緯度,浮點(diǎn)數(shù) 24 var longitude = res.longitude; // 經(jīng)度,浮點(diǎn)數(shù) 25 self.setData({ 26 latitude: res.latitude, 27 longitude: res.longitude 28 }) 29 }, 30 fail: function(res) { 31 //未授權(quán)就彈出彈窗提示用戶重新授權(quán) 32 self.reAuthorize(); 33 } 34 }); 35 }, 36 /** 37 * 1.2 重新授權(quán)按鈕點(diǎn)擊事件 38 * click event 39 */ 40 openLocationSetting: function() { 41 var self = this 42 //先獲取用戶的當(dāng)前設(shè)置,返回值中只會(huì)出現(xiàn)小程序已經(jīng)向用戶請(qǐng)求過的權(quán)限 43 wx.getSetting({ 44 success: function(res) { 45 if (res.authSetting && !res.authSetting["scope.userLocation"]) { 46 //未授權(quán)則打開授權(quán)設(shè)置界面 47 wx.openSetting({ 48 success: function(res) { 49 if (res.authSetting && res.authSetting["scope.userLocation"]) { 50 //允許授權(quán),則自動(dòng)獲取定位,并關(guān)閉二確彈窗,否則返回首頁不處理 51 self.getLocation(); 52 self.setData({ 53 hiddenReAuthorizePop:true 54 }) 55 wx.showToast({ 56 title: '您已授權(quán)獲取位置信息', 57 icon: 'none' 58 }) 59 }else{ 60 //未授權(quán)就彈出彈窗提示用戶重新授權(quán) 61 self.reAuthorize(); 62 } 63 } 64 }) 65 } else { 66 //授權(quán)則重新獲取位置新(授權(quán)設(shè)置界面返回首頁,首頁授權(quán)二確彈窗未關(guān)閉) 67 self.getLocation(); 68 } 69 } 70 }) 71 }, 72 /** 73 * 重新授權(quán) 74 */ 75 reAuthorize:function(){ 76 var self=this 77 self.setData({ hiddenReAuthorizePop:false}) 78 } 79 })?代碼片段地址:https://developers.weixin.qq.com/s/uRMylxmO7e3Q
原創(chuàng)專業(yè)博客,轉(zhuǎn)載請(qǐng)注明來源地址:https://www.cnblogs.com/xyyt/p/9871898.html
轉(zhuǎn)載于:https://www.cnblogs.com/xyyt/p/9871898.html
總結(jié)
以上是生活随笔為你收集整理的微信小程序开发——小程序API获取用户位置及异常流处理完整示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 周期性的基金投资策略 必须长时间持有
- 下一篇: 【C++】源自指针的报错