這個迭代使用mpvue框架開發(fā)了小程序。對于之前一直用vue來開發(fā)web項(xiàng)目的我來說邑彪,有這么一個框架來開發(fā)小程序真的是很激動啊宣虾,提升了很多開發(fā)效率。
這里記錄一下在小程序中使用騰訊地圖來定位當(dāng)前城市的功能隅很。
分析一下思路:
接下來需要做的事情如下:
1撞牢、接入騰訊地圖SDK
文檔地址:https://lbs.qq.com/qqmap_wx_jssdk/index.html
按照文檔的步驟來:
前3步都很簡單,第4步需要注意一點(diǎn)的就是叔营,如果你是在開發(fā)工具調(diào)試的話屋彪,可以直接勾選這個使用:
但是,如果要發(fā)體驗(yàn)版或者發(fā)布正式環(huán)境了之后绒尊,就要加上合法域名了畜挥,不然使用不了。添加合法域名就是在小程序的管理后臺這個地方加入即可婴谱。
準(zhǔn)備工作就是這么多⌒返現(xiàn)在可以寫代碼了躯泰。
2、引入核心代碼华糖,并初始化
//qqmap-wx-jssdk.min.js是下載下來的包麦向,放在utils 或者static目錄下都行
let QQMapWX = require('../../../../static/js/qqmap-wx-jssdk.min.js')
let qqmapsdk
export default {
data() {
return {
city: '',
userLocation: {
latitude: '',
longitude: ''
}
}
},
onLoad() {
qqmapsdk = new QQMapWX({
key: 'xxxxxxxxxxxxxxxxxxxx' // 申請的key
})
this.getUserLocation() //獲取用戶定位
}
},
methods: {
getUserLocation() {
wx.getSetting({ //獲取用戶授權(quán)情況
success: res => {
if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) { // 用戶非首次訪問,且曾經(jīng)拒絕過授權(quán)客叉,此時(shí)res.authSetting['scope.userLocation'] 一般返回false
//這里是跳轉(zhuǎn)開啟定位頁面诵竭,引導(dǎo)用戶授權(quán)的代碼
return false
}
this.getLocation() //繼續(xù)下一步
},
fail: () => {
Utils.showToast('網(wǎng)絡(luò)錯誤:獲取用戶授權(quán)信息失敗兼搏!')
}
})
}卵慰,
getLocation() {
wx.getLocation({ // 這一步 如果用戶是首次訪問,則會彈出授權(quán)彈窗
type: 'gcj02',
success: res => {
this.userLocation = res // res包含經(jīng)緯度信息
this.getLocal() //繼續(xù)下一步
},
fail: res => {
if (res.errMsg == 'getLocation:fail 1' || res.errMsg == 'getLocation:fail system permission denied') {
// 用戶允許授權(quán)但獲取位置失敗向族,可能有多種原因呵燕,比如網(wǎng)絡(luò)原因、手機(jī)系統(tǒng)拒絕使用定位
//這里寫相應(yīng)的代碼
} else if (res.errMsg == 'getLocation:fail auth deny' || res.errMsg == 'getLocation:fail:auth denied') {
// 用戶拒絕了授權(quán)件相,跳去開啟定位頁面引導(dǎo)授權(quán)的代碼
} else { // 別的錯誤
Utils.showToast('網(wǎng)絡(luò)錯誤:獲取用戶所在位置經(jīng)緯度失斣倥ぁ!')
}
}
})
},
getLocal() {
qqmapsdk.reverseGeocoder({
location: {
latitude: this.userLocation.latitude,
longitude: this.userLocation.longitude
},
success: res => {
this.userLocation = {
...this.userLocation,
...res.result
}
this.city = this.userLocation.address_component.city
this.city = this.city.replace('市', '') // 深圳夜矗、廣州
},
fail: error => {
Utils.showToast(error.message)
}
})
}
}
整個流程就是這樣泛范,記錄下來加深記憶的同時(shí)希望能幫助到需要的朋友,如果寫得不明白或者看不懂的歡迎留言紊撕。