vue微信公众号获取当前省市区详细地址

1.获取签名,调用微信api进行位置信息授权获取当前经纬度
2.火星经纬度转百度经纬度
3.利用百度api转化成对应的省市区详细地址(这里要注意,我们需要引入百度api,及自己的密钥,<script type="text/javascript" src="//api.map.baidu.com/api?v=3.0&ak=自己的密钥"></script>

wxAddress() {
        let that = this;
        let u = navigator.userAgent;
        let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //g
        let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
        let request_url = ''
        if (isAndroid) {
          this.isIOS = false;
          request_url = encodeURIComponent(location.href);
        }
        if (isIOS) {
          this.isIOS = true;
          request_url = encodeURIComponent(window.entryUrl);//这里是解决ios路由不刷新,获取签名失败的问题,具体使用见最后
        }
        let params = {
          url: request_url
        }
        let url = this.GLOBAL.API_WECHATLOGIN_GET_WECHAT_SIGN;//签名接口
        this.$post(url, params).then((res) => {
          if (res.data.retCode == 200) {
            that.resulted = res.data.data;
            that.wx.config({ //配置微信接口
              debug: false,
              appId: that.resulted.appId,
              timestamp: that.resulted.timestamp,
              nonceStr: that.resulted.noncestr,
              signature: that.resulted.signature,
              jsApiList: [ // 所有要调用的 API 都要加到这个列表中,要调用的微信接口
                'getLocation'
              ]
            });
            that.wx.ready(function () {
              that.wx.getLocation({
                type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
                success: function(res) {
                  // that.latitude = res.latitude;
                  // that.longitude = res.longitude;
                  //火星经纬度转百度地图经纬度
                  let x_PI = 3.14159265358979324 * 3000.0 / 180.0;
                  var lat =Number(res.latitude);
                  var lng =Number(res.longitude);
                  var z =Math.sqrt(lng * lng + lat * lat) +0.00002 * Math.sin(lat * x_PI);
                  var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
                  that.longitude = z*Math.cos(theta) + 0.0065;
                  that.latitude = z*Math.sin(theta) + 0.006; 
                  that.detailAddress();
                },
                fail: function(err) {
                  that.Toast({
                    message: err,
                    position: 'center',
                    duration: 2000
                  })
                }
              });
            });
            that.wx.error(function (res) {
              that.Toast({
                message: res,
                position: 'center',
                duration: 5000
              })
            });
          } else {
            that.Toast({
              message: res.data.message,
              position: 'center',
              duration: 5000
            })
          }
        })
    },
   detailAddress(){
        let that=this;
        let point = new BMap.Point(that.longitude, that.latitude)
        let gc = new BMap.Geocoder()
        gc.getLocation(point, function(rs){
          let addComp = rs.addressComponents
          let province = addComp.province
          let city = addComp.city
          let district = addComp.district
          let street = addComp.street
          console.log(rs.addressComponents)
          that.address=province+city+district+street
          console.log(that.address)        
        })
    },

解决ios路由不刷新,获取签名失败的问题:

router.afterEach((to, from) => {// true 时 为 IOS 设备
  if (window.__wxjs_is_wkwebview) {  // IOS
    if (window.entryUrl == '' || window.entryUrl == undefined) { //记录该地址config配置时使用
      if (process.env.NODE_ENV == 'development') {
        var url = `http://m1.baidu.com${to.fullPath}`
      } else if (process.env.NODE_ENV == 'production') {
        var url = `http://m2.baidu.com${to.fullPath}`
      }
      window.entryUrl = url
    }
  }
})

 

对于开发Vue微信公众号网页,你可以按照以下步骤进行: 1. 创建项目:首先,你需要创建一个Vue项目。你可以使用Vue CLI来快速创建一个Vue项目,运行命令`vue create project-name`来创建一个新的项目。 2. 配置公众号:在微信公众号后台,你需要配置网页授权域名和JS接口安全域名。确保你的网页域名和JS接口安全域名与你的Vue项目所在的域名一致。 3. 安装依赖:在Vue项目中,你可能需要安装一些依赖来处理微信公众号相关的功能。你可以使用npm或者yarn来安装这些依赖。 4. 配置路由:在Vue项目中,你可以使用Vue Router来管理页面的路由。根据你的需求,配置路由来实现不同页面之间的跳转。 5. 接入微信SDK:使用微信提供的JS-SDK来实现网页授权获取用户信息等功能。你可以在Vue项目中引入微信SDK,并根据微信JS-SDK的文档进行配置和使用。 6. 开发页面:根据你的需求,开发各个页面。你可以使用Vue的组件化开发方式来构建页面,并使用Vue的数据绑定和事件机制来实现交互功能。 7. 发布上线:完成开发后,你需要将Vue项目打包并发布到生产环境中。使用Vue CLI提供的命令来进行打包,然后将生成的静态文件部署到服务器上。 以上是一个简单的概述,希望对你有所帮助。如果你有具体的问题或者需要更详细的指导,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值