使用wx.chooseLocation能够让用户选择地理位置,但是它返回的数据并没有包含省市区等编码数据,新增收货地址是需要传递省市区编码数据,因此,可以使用 腾讯位置服务,将返回的经度、纬度进行地址解析,转换成详细的地址
import QQMapWX from "../../libs/qqmap-wx-jssdk.js"
Page({
data:{
provinceName:'',//省
provinceCode:'', //省编码
cityName:'', // 市
cityCode:'', // 市编码
districtName:'', // 区
districtCode:'', // 区编码
address:'', // 详细地址
fullAddress:'' // 完整地址
},
async onLocation() {
// 打开地图,选择位置
// latitude经度, longitude纬度, name 搜索的地点
const {latitude, longitude, name} = await wx.chooseLocation()
this.qqmapsdk.reverseGeocoder({
location:{
latitude, longitude, name
},
success:(res) => {
// 省市区,省市区编码
const { adcode, province, city, district } = res.result.ad_info
// 街道、门牌,可能是空
const { street, street_number} = res.result.address_component
// 获取标准地址
const { standard_address} = res.result.formatted_address
// 赋值
this.setData({
provinceName:province,
// 省,前2位有值,后面4位是 0
provinceCode:adcode.replace(adcode.substring(2,6), '0000'),
cityName:city,
// 市,前4位有值,后面2位是 0
cityCode:adcode.replace(adcode.substring(4,6), '00'),
districtName:district,
districtCode:district && adcode,
// 以下两个在开发中根据需求处理
// 详细地址
address:street+street_number + name,
// 完整地址
fullAddress:standard_address+name
})
}
})
},
onLoad() {
this.qqmapsdk = new QQMapWX({
key: '申请的key'
});
}
}