微信小程序獲取當(dāng)前位置的詳細(xì)步驟
微信小程序獲取位置信息的方式有兩種,一種是調(diào)用微信官方的接口來獲取,如getLocation,這種方式只能獲取經(jīng)緯度
微信官方文檔
https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html
另一種是使用的第三方平臺(tái)的,比如本文章使用的是 騰訊地圖
微信小程序JavaScript SDK / 開發(fā)指南 / 入門及使用限制-開發(fā)文檔
https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/jsSdkOverview
1 騰訊位置開發(fā)基本步驟
1.1 申請(qǐng)開發(fā)者密鑰(key)
申請(qǐng)密鑰 :登錄騰訊開發(fā)者平臺(tái),然后創(chuàng)建應(yīng)用,如下圖
開通webserviceAPI服務(wù):控制臺(tái) ->應(yīng)用管理 -> 我的應(yīng)用 ->添加key-> 勾選WebServiceAPI -> 保存
(小程序SDK需要用到webserviceAPI的部分服務(wù),所以使用該功能的KEY需要具備相應(yīng)的權(quán)限)
1.2 下載微信小程序JavaScriptSDK
https://mapapi.qq.com/web/miniprogram/JSSDK/qqmap-wx-jssdk1.2.zip
下載后解壓,拷貝到微信小程序項(xiàng)目中
1.3 安全域名設(shè)置
安全域名設(shè)置,在小程序管理后臺(tái) -> 開發(fā) -> 開發(fā)管理 -> 開發(fā)設(shè)置 -> “服務(wù)器域名” 中設(shè)置request合法域名,添加
https://apis.map.qq.com
1.4 微信小程序設(shè)置隱私權(quán)限
在app.json 文本中添加
"permission": { "scope.userLocation": { "desc": "小程序需要使用您的位置信息 已確認(rèn)您的采樣地址" } }, "requiredPrivateInfos": [ "getLocation" ],
getLocation 是使用微信接口來獲取經(jīng)緯度時(shí)使用,需要申請(qǐng)調(diào)用權(quán)限。
2 獲取位置信息
核心代碼如下:
// 引入SDK核心類,js文件根據(jù)自己業(yè)務(wù),位置可自行放置 var QQMapWX = require('../../libs/qqmap-wx-jssdk.js'); var qqmapsdk; Page({ onLoad: function () { // 實(shí)例化API核心類 qqmapsdk = new QQMapWX({ key: '申請(qǐng)的key' }); }, onShow: function () { // 調(diào)用接口 qqmapsdk.reverseGeocoder({ success: function (res) { let result = res.result; console.log(res.status, res.message); }, fail: function (res) { console.log(res.status, res.message); }, complete: function (res) { console.log(res.status, res.message); } }); } })
3 權(quán)限問題
當(dāng)用戶第一次進(jìn)入頁(yè)面獲取位位置信息時(shí),小程序會(huì)彈出請(qǐng)求位置權(quán)限申請(qǐng),如果用戶點(diǎn)擊了拒絕權(quán)限,那下次進(jìn)入時(shí),將不會(huì)再次彈出權(quán)限申請(qǐng),所以這個(gè)過程需要開發(fā)者來維護(hù)處理一下。
如果用戶拒絕過,再次進(jìn)入后,彈框提示用戶開啟權(quán)限
//定位方法 initLocationPersmiss: function () { var _this = this; wx.getSetting({ success: (res) => { // res.authSetting['scope.userLocation'] == undefined 表示 初始化進(jìn)入該頁(yè)面 // res.authSetting['scope.userLocation'] == false 表示 非初始化進(jìn)入該頁(yè)面,且未授權(quán) // res.authSetting['scope.userLocation'] == true 表示 地理位置授權(quán) if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) { //未授權(quán) wx.showModal({ title: '請(qǐng)求授權(quán)當(dāng)前位置', content: '需要獲取您的地理位置,請(qǐng)確認(rèn)授權(quán)', success: function (res) { if (res.cancel) { //取消授權(quán) wx.showToast({ title: '拒絕授權(quán) 暫時(shí)無法使用本功能', icon: 'none', duration: 1000 }) } else if (res.confirm) { //確定授權(quán),通過wx.openSetting發(fā)起授權(quán)請(qǐng)求 wx.openSetting({ success: function (res) { if (res.authSetting["scope.userLocation"] == true) { wx.showToast({ title: '授權(quán)成功', icon: 'success', duration: 1000 }) //再次授權(quán),調(diào)用wx.getLocation的API _this.initGetLocationFlunction(); } else { wx.showToast({ title: '授權(quán)失敗', icon: 'none', duration: 1000 }) } } }) } } }) } else if (res.authSetting['scope.userLocation'] == undefined) { //用戶首次進(jìn)入頁(yè)面,調(diào)用wx.getLocation的API _this.initGetLocationFlunction(); } else { console.log('授權(quán)成功') //調(diào)用wx.getLocation的API _this.initGetLocationFlunction(); } } }) },
獲取位置的請(qǐng)求
initGetLocationFlunction(isRefresh){ let that = this; this.setData({isUpdateLocatin:true}) qqmapsdk.reverseGeocoder({ success: function(res) { let result = res.result; console.log(res); }, fail: function(res) { console.log(res.status, res.message); }, complete: function(res) { console.log(res.status, res.message); } }) },
完畢
總結(jié)
到此這篇關(guān)于微信小程序獲取當(dāng)前位置的文章就介紹到這了,更多相關(guān)微信小程序獲取當(dāng)前位置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 微信小程序常用功能實(shí)例匯總包括上拉刷新,下拉加載,列表數(shù)據(jù)綁定,輪播,參數(shù)傳遞
- 使用微信小程序API,調(diào)用微信的各種內(nèi)置能力。
- 微信小程序怎么加入JavaScript腳本,做出動(dòng)態(tài)效果
- 微信小程序如何設(shè)置基本的頁(yè)面樣式,做出用戶界面UI
- 制作微信小程序的小白簡(jiǎn)單入門教程
- 微信小程序?qū)崿F(xiàn)云開發(fā)上傳文件、圖片功能
- 微信小程序獲取用戶頭像昵稱組件封裝實(shí)例(最新版)
- 微信小程序父子組件通信詳細(xì)介紹
- 微信小程序tabBar自定義彈窗遮擋不住解決技巧
- 微信小程序api列表匯總包括網(wǎng)絡(luò)API,媒體API,文件API ,微信小程序支付流程,位置API,界面API等
相關(guān)文章
JavaScript程序設(shè)計(jì)之JS調(diào)試
這篇文章主要介紹了JavaScript程序設(shè)計(jì)中的重要環(huán)節(jié):JS調(diào)試,本文通過一個(gè)加法器,介紹JS如何調(diào)試,感興趣的小伙伴們可以參考一下2015-12-12javascript自定義in_array()函數(shù)實(shí)現(xiàn)方法
這篇文章主要介紹了javascript自定義in_array()函數(shù)實(shí)現(xiàn)方法,涉及javascript數(shù)組的遍歷與查找相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08IE6瀏覽器中window.location.href無效的解決方法
這篇文章主要介紹了IE6瀏覽器中window.location.href無效的解決方法,給出了正確與錯(cuò)誤的實(shí)例對(duì)比,分析跳轉(zhuǎn)無效的原因與解決方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-11-11Bootstrap基本組件學(xué)習(xí)筆記之面板(14)
這篇文章主要為大家詳細(xì)介紹了Bootstrap基本組件學(xué)習(xí)筆記之面板,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12js代碼實(shí)現(xiàn)點(diǎn)擊按鈕出現(xiàn)60秒倒計(jì)時(shí)
這篇文章主要為大家詳細(xì)介紹了js代碼實(shí)現(xiàn)點(diǎn)擊按鈕出現(xiàn)60秒倒計(jì)時(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-12-12js構(gòu)造函數(shù)創(chuàng)建對(duì)象是否加new問題
本篇文章主要給大家詳細(xì)分析了js構(gòu)造函數(shù)創(chuàng)建對(duì)象加new與不加new的問題,有這方面興趣的參考學(xué)習(xí)下。2018-01-01VS Code轉(zhuǎn)換大小寫、修改選中文字或代碼顏色的方法
最近在使用VS Code,發(fā)現(xiàn)了不少使用的小技巧,覺著有必要給大家分享下,下面這篇文章主要給大家介紹了關(guān)于VS Code轉(zhuǎn)換大小寫、修改選中文字或代碼顏色的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-12-12