微信小程序獲取當(dāng)前位置的詳細(xì)步驟
微信小程序獲取位置信息的方式有兩種,一種是調(diào)用微信官方的接口來獲取,如getLocation,這種方式只能獲取經(jīng)緯度
微信官方文檔
https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html

另一種是使用的第三方平臺的,比如本文章使用的是 騰訊地圖
微信小程序JavaScript SDK / 開發(fā)指南 / 入門及使用限制-開發(fā)文檔
https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/jsSdkOverview
1 騰訊位置開發(fā)基本步驟
1.1 申請開發(fā)者密鑰(key)
申請密鑰 :登錄騰訊開發(fā)者平臺,然后創(chuàng)建應(yīng)用,如下圖

開通webserviceAPI服務(wù):控制臺 ->應(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è)置,在小程序管理后臺 -> 開發(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)緯度時使用,需要申請調(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: '申請的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)入頁面獲取位位置信息時,小程序會彈出請求位置權(quán)限申請,如果用戶點(diǎn)擊了拒絕權(quán)限,那下次進(jìn)入時,將不會再次彈出權(quán)限申請,所以這個過程需要開發(fā)者來維護(hù)處理一下。
如果用戶拒絕過,再次進(jìn)入后,彈框提示用戶開啟權(quán)限
//定位方法
initLocationPersmiss: function () {
var _this = this;
wx.getSetting({
success: (res) => {
// res.authSetting['scope.userLocation'] == undefined 表示 初始化進(jìn)入該頁面
// res.authSetting['scope.userLocation'] == false 表示 非初始化進(jìn)入該頁面,且未授權(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: '請求授權(quán)當(dāng)前位置',
content: '需要獲取您的地理位置,請確認(rèn)授權(quán)',
success: function (res) {
if (res.cancel) {
//取消授權(quán)
wx.showToast({
title: '拒絕授權(quán) 暫時無法使用本功能',
icon: 'none',
duration: 1000
})
} else if (res.confirm) {
//確定授權(quán),通過wx.openSetting發(fā)起授權(quán)請求
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)入頁面,調(diào)用wx.getLocation的API
_this.initGetLocationFlunction();
} else {
console.log('授權(quán)成功')
//調(diào)用wx.getLocation的API
_this.initGetLocationFlunction();
}
}
})
},
獲取位置的請求
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 微信小程序常用功能實(shí)例匯總包括上拉刷新,下拉加載,列表數(shù)據(jù)綁定,輪播,參數(shù)傳遞
- 使用微信小程序API,調(diào)用微信的各種內(nèi)置能力。
- 微信小程序怎么加入JavaScript腳本,做出動態(tài)效果
- 微信小程序如何設(shè)置基本的頁面樣式,做出用戶界面UI
- 制作微信小程序的小白簡單入門教程
- 微信小程序?qū)崿F(xiàn)云開發(fā)上傳文件、圖片功能
- 微信小程序獲取用戶頭像昵稱組件封裝實(shí)例(最新版)
- 微信小程序父子組件通信詳細(xì)介紹
- 微信小程序tabBar自定義彈窗遮擋不住解決技巧
- 微信小程序api列表匯總包括網(wǎng)絡(luò)API,媒體API,文件API ,微信小程序支付流程,位置API,界面API等
相關(guān)文章
js實(shí)現(xiàn)不重復(fù)導(dǎo)入的方法
這篇文章主要介紹了js實(shí)現(xiàn)不重復(fù)導(dǎo)入的方法,實(shí)例分析了JavaScript基于文件與字符串判斷操作實(shí)現(xiàn)JS文件不重復(fù)導(dǎo)入的相關(guān)技巧,需要的朋友可以參考下2016-03-03
html2canvas+jspdf實(shí)現(xiàn)下載pdf文件并添加水印
這篇文章主要為大家詳細(xì)介紹了如何使用html2canvas + jspdf進(jìn)行下載pdf文件添加水印,以及echarts圖片防止截?cái)嗵幚?有需要的小伙伴可以了解下2024-10-10
js實(shí)現(xiàn)tab選項(xiàng)卡函數(shù)代碼
js實(shí)現(xiàn)tab選項(xiàng)卡函數(shù)代碼,需要的朋友可以參考下,這樣的代碼也是比較常用的,相當(dāng)原理也比較簡單。2010-04-04
JavaScript:void(0)用法及一些常見問題解決辦法
這篇文章主要介紹了javascript:void(0)在JavaScript中的用法,探討了其防止鏈接默認(rèn)行為的作用,提供了使用示例,并針對常見問題如與#的區(qū)別、事件綁定和鍵盤訪問進(jìn)行了講解,需要的朋友可以參考下2024-12-12
使用window.postMessage()方法在兩個網(wǎng)頁間傳遞數(shù)據(jù)
這篇文章介紹了使用window.postMessage()在兩個網(wǎng)頁間傳遞數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
JSON與String互轉(zhuǎn)的實(shí)現(xiàn)方法(Javascript)
下面小編就為大家?guī)硪黄狫SON與String互轉(zhuǎn)的實(shí)現(xiàn)方法(Javascript) 。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦2016-09-09
整理Javascript數(shù)組學(xué)習(xí)筆記
整理Javascript數(shù)組學(xué)習(xí)筆記,之前一系列的文章是跟我學(xué)習(xí)Javascript,本文就是進(jìn)一步學(xué)習(xí)javascript數(shù)組,希望大家繼續(xù)關(guān)注2015-11-11

