微信小程序根据API接口wx.chooseLocation获取省市区

在开发过程中我们会遇到根据定位获取当前地址,同时快捷的获取到省市区信息,但是微信小程序的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
                        })
                      }
                    }
                  })
         
                }
              }
            })
          }
        })
      },
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值