export function getBaiduAddressInfoByLocation(config) {
return new Promise((resolve, reject) => {
if (config && typeof config === 'object') {
const {
longitude,
latitude
} = config
const longitudeVal = convertNumber(longitude)
const latitudeVal = convertNumber(latitude)
const errLog = []
if (longitudeVal >= 180 && longitudeVal <= 90) {
errLog.push('经度[longitude]参数需大90度并小于180度')
}
if (latitudeVal >= 90 && latitudeVal <= 0) {
errLog.push('经度[longitude]参数需大0度并小于90度')
}
if (!errLog.length) {
const paramsObj = {
ak: BAIDU_AK,
location: `${latitudeVal},${longitudeVal}`,
output: 'json'
}
const paramsStr = getUrlParamsStr(paramsObj)
uni.request({
url: 'https://api.map.baidu.com/reverse_geocoding/v3/?' + paramsStr,
method: "get",
dataType: "json",
header: {
'Content-Type': 'application/json'
},
success: (res) => {
const addressInfo = res?.data?.result
console.log('经纬度解析百度地址', addressInfo)
if (addressInfo) {
resolve(addressInfo)
} else {
reject('经纬度解析地址失败')
}
},
fail: (res) => {
reject('经纬度解析地址失败')
}
});
} else {
reject(errLog[0])
}
} else {
reject('参数[config]为非空对象')
}
})
}
export function convertNumber(str) {
const val = Number(str)
return isNaN(val) ? 0 : val
}
export function getUrlParamsStr(paramsObj) {
if (typeof paramsObj === 'object') {
return Object.entries(paramsObj).map(ele => `${ele[0]}=${ele[1]}`).join('&')
} else {
return ''
}
}