uni-app本身有獲取地址的接口,點擊前往
這個接口首先需要開放位置權限,具體就是android需要打開gprs,ios需要允許應用在使用期間使用地址
不過此時成功的回調地址參數打印並不包含longitude和latitude,應該是在父類裏吧這個我沒有深究。此時理論上會有address可以直接取到省市區,但是我並沒有取到,原因不明,只能採用偏方根據經緯度再調百度或者騰訊地圖的接口獲取。
考慮到部分功能需要發線上測試所以vconsole的npm包還是不可獲取的
微信瀏覽器作爲H5端有2種快捷的方法可以獲取經緯度,一種是uni自帶的功能
uni.getLocation({
type: 'wgs84',
success: (res) => { // longitude latitude在res對象裏不顯示
console.log(res)
console.log('當前位置的經度:' + res.longitude);
console.log('當前位置的緯度:' + res.latitude);
console.log(res.address) // 取不到
this.getCity(res.latitude, res.longitude)
},
fail: (res) => {
this.util.message('地址信息獲取失敗請打開GPRS權限')
}
});
第二種是微信認證獲取,此方法較爲複雜,切需要後端人員輔助
需要後端配合返回appId,timestamp,nonceStr,signature四個字段
然後需要安裝依賴包jweixin-module,每個頁面獲取都需重新配置config纔可調用功能
jweixin.config({
debug: false,
appId: res.appId,
timestamp: res.timestamp,
nonceStr: res.nonceStr,
signature: res.signature,
jsApiList: [
'getLocation'
]
})
getLocation: function(res, callback) {
this.init(res)
jweixin.ready(function(){
jweixin.getLocation({
type: 'wgs84',
success: function (r) {
console.log('success')
callback(r)
}
})
})
}
最後就是很成熟的經緯度獲取地址的逆地址解析,百度和騰訊的都可以,不過需要注意的是微信公衆號前端頁面是不可以打開一個不在開發設置白名單內的請求的。請求status會是0,這邊依舊需要從後端發起http請求,騰訊地圖的控制檯中需要在key管理-設置中勾選WebServiceAPI,並授權發起服務的服務器ip