主要內(nèi)容:微信內(nèi)置地圖查看當(dāng)前位置倦蚪,打開手機(jī)地圖導(dǎo)航軟件去定位的地方。會在使用前請求用戶授權(quán)scope.userLocation二鳄,若此時用戶拒絕授權(quán)奥溺,再點(diǎn)擊不會重新提醒用戶授權(quán),功能無法使用愉镰。需使用wx.getSetting查看用戶的授權(quán)信息米罚,wx.openSetting重新打開授權(quán),授權(quán)之后地圖功能才可使用丈探。
說的有點(diǎn)繞录择,一步步來寫,完整代碼在文章末尾會貼上碗降。
1隘竭、調(diào)用微信內(nèi)置地圖,并導(dǎo)航到目的地讼渊,并未處理未授權(quán)情況
允許授權(quán)后進(jìn)入微信內(nèi)置地圖动看,點(diǎn)擊右下角到那去的圖標(biāo)即可調(diào)用手機(jī)已有的地圖軟件,并導(dǎo)航到目的地爪幻。
【JS代碼】菱皆,WXML代碼沒什么好貼的,隨便寫個東西挨稿,bindtap調(diào)用地圖的事件就好仇轻。
openMap: function () {
let that = this
// 獲取用戶當(dāng)前地理位置
wx.getLocation({
type: 'gcj02', //返回可以用于wx.openLocation的經(jīng)緯度
success: function (res) {
wx.openLocation({
latitude: 23.193884,//齊富大酒店緯度
longitude: 113.269584,//齊富大酒店的經(jīng)度
scale: 28,
name: '齊福大酒店',//位置名
address: 'XXX路000號',//地址的詳細(xì)描寫
success: function (res) {
console.log('成功打印信息' + res)
},
fail: function (err) {
console.log('失敗打印信息' + err)
},
})
}
})
若在第一次調(diào)用彈出授權(quán)選擇拒絕的話,再點(diǎn)擊無反應(yīng)不會再次授權(quán)叶组。
2拯田、加上授權(quán)判斷,重新授權(quán)
我們已經(jīng)知道如果用戶拒絕微信權(quán)限彈框甩十,點(diǎn)擊不會再次出現(xiàn)彈框重新請求權(quán)限船庇,我們先用wx.getSetting判斷是否授權(quán)吭产,再用wx.openSetting打開權(quán)限。wx.openSetting中即使拒絕授權(quán)也不會影響再次執(zhí)行鸭轮。先上效果圖:
【完整代碼】
onLoad: function() {
// 獲取用戶當(dāng)前地理位置
wx.getLocation({
type: 'gcj02', //返回可以用于wx.openLocation的經(jīng)緯度
success: function(res) {}
})
},
openMap: function() {
let that = this
//wx.getSetting只能查看已經(jīng)已經(jīng)向用戶請求過的權(quán)限臣淤,所以wx.getLocation獲取位置信息要放在查看用戶權(quán)限之前,我放在了onload里
wx.getSetting({
success(res) {
//scope.userLocation是返回的是否打開位置權(quán)限窃爷,true為打開
if (!res.authSetting['scope.userLocation']) {
wx.openSetting({
//設(shè)置權(quán)限邑蒋,這個列表中會包含用戶已請求過的權(quán)限,可更改權(quán)限狀態(tài)
success(res) {
//如果再次拒絕則返回頁面并提示
if (!res.authSetting['scope.userLocation']) {
wx.showToast({
title: '此功能需獲取位置信息按厘,請重新設(shè)置',
duration: 3000,
icon: 'none'
})
} else {
//允許授權(quán)医吊,調(diào)用地圖
wx.openLocation({
latitude: 23.193884,//佳佳美食廣場的維度
longitude: 113.269584,//佳佳美食廣場的經(jīng)度
scale: 28,
name: '齊福大酒店',//位置名
address: 'XXX路000號',//地址的詳細(xì)描寫
success: function (res) {
},
fail: function (err) {
},
})
}
}
})
}else{
wx.openLocation({
latitude: 23.193884,//佳佳美食廣場的維度
longitude: 113.269584,//佳佳美食廣場的經(jīng)度
scale: 28,
name: '齊福大酒店',//位置名
address: 'XXX路000號',//地址的詳細(xì)描寫
success: function (res) {
},
fail: function (err) {
},
})
}
}
})
},