由于后台的接口里面,省、市、区字段是必填的,而刚开始并没有意识到百度地图返回的当前位置的市、区可能存在为空的情况,测试环境也没测试此种场景,导致线上问题。所以此处记录一下,恐别的同事踩坑。
// 获取省市区及详细地址
detailAddress(){
let that=this;
let gc = new BMap.Geocoder();
gc.getLocation(that.mapPoint, function(rs){
that.detailedAddress = rs.address;
that.addressComponents = rs.addressComponents;
})
}
对此场景前端的一些兼容处理。先判断市有没有,没有toast提示。如果区没有,就用市的数据
if (!this.addressComponents.city) {
uni.showToast({
title: '请输入市',
icon: 'none',
duration: 3000
});
return;
}
const params = {
province: this.addressComponents.province,
city: this.addressComponents.city,
area: this.addressComponents.district?this.addressComponents.district:this.addressComponents.city
}