在开发过程中我们会遇到根据定位获取当前地址,同时快捷的获取到省市区信息,但是微信小程序的api接口wx.chooseLocation只会返回完整的地址信息,这时候根据返回的地址信息获取档期内地址的省市区信息,获取方法如下
//获取定位
intoMap:function(){
var _this = this;
wx.chooseLocation({
success: function (res) {
console.log(res,'---')
//从这里开始
var regex = /^(北京市|天津市|重庆市|上海市|香港特别行政区|澳门特别行政区)/;
var REGION_PROVINCEprovince=[];
var addressBean = {
REGION_PROVINCE:null,
REGION_COUNTRY:null,
REGION_CITY:null,
ADDRESS:null};
function regexAddressBean(address, addressBean){
regex = /^(.*?[市州]|.*?地区|.*?特别行政区)(.*?[市区县])(.*?)$/g;
var addxress = regex.exec(address);
addressBean.REGION_CITY=addxress[1];
addressBean.REGION_COUNTRY=addxress[2];
addressBean.ADDRESS=addxress[3]+"("+res.name+")";
console.log(addxress);
}
if(!(REGION_PROVINCE = regex.exec(res.address))){
regex = /^(.*?(省|自治区))(.*?)$/;
REGION_PROVINCE = regex.exec(res.address);
addressBean.REGION_PROVINCE= REGION_PROVINCE[1];
regexAddressBean(REGION_PROVINCE[3],addressBean);
} else {
addressBean.REGION_PROVINCE= REGION_PROVINCE[1];
regexAddressBean(res.address, addressBean);
}
_this.setData({ADDRESS_1_STR:
addressBean.REGION_PROVINCE+" "
+addressBean.REGION_CITY+""
+addressBean.REGION_COUNTRY });
_this.setData(addressBean);
console.log(addressBean) //===>省市区 打印结果
_this.setData({
detail: {
province: addressBean.REGION_PROVINCE,
city:addressBean.REGION_CITY,
area: addressBean.REGION_COUNTRY,
address: addressBean.ADDRESS
},
})
console.log(_this.data.detail.province,'0000')
},
fail(){
wx.getSetting({
success: function(res) {
var statu = res.authSetting;
// console.log(statu);
if (!statu['scope.userLocation']) {
// console.log(123);
wx.showModal({
title: '是否授权当前位置',
content: '需要获取您的地理位置,请确认授权,否则地图功能将无法使用',
success(tip) {
if (tip.confirm) {
// console.log(tip.confirm)
wx.openSetting({
success: function(data) {
if (data.authSetting["scope.userLocation"] === true) {
wx.showToast({
title: '授权成功',
icon: 'success',
duration: 1000
})
setTimeout(()=>{
wx.chooseLocation({
success: function (res) {
_this.setData({
address: res.address,
lng: res.longitude,
lat:res.latitude ,
})
}
})
})
}
}
})
} else {
wx.showToast({
title: '授权失败',
icon: 'none',
duration: 1000
})
}
}
})
}
}
})
}
})
},