vue获取微信定位

vue获取微信定位

1.下载依赖

  npm install weixin-js-sdk --save-dev

2.在vue页面使用
<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png">
    <HelloWorld msg="Welcome to Your Vue.js App"/>
  </div>
</template>

<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
import wx from "weixin-js-sdk";
export default {
  name: 'Home',
  data(){
     return {
        signData: {
        checkType: 0,
        address: "",
        longitude: "",
        latitude: "",
        remark: "",
        checkTime: ""
      }
     }
  },
  created(){
      this.wxRegister();
  },
  components: {
    HelloWorld
  },
  methods:{
        async wxRegister() {
      // 这边的接口请换成你们自己的
      var that = this;
      await this.$axios({
        method: "GET",
        url: "/frontapi/mm/wxindex/share",
        params: {
          requestUrl: encodeURIComponent(window.location.href)
        }
      })
        .then(res => {
          wx.config({
            debug: false, // 开启调试模式
            appId: res.data.appId, // 必填,公众号的唯一标识
            timestamp: res.data.timestamp, // 必填,生成签名的时间戳
            nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
            signature: res.data.signature, // 必填,签名,见附录1
            jsApiList: [
              "checkJsApi",
              "getLocation",
              "getNetworkType",
              "previewImage"
            ]
          });
        })
        .catch(error => {
          console.log("errererererere");
        });

      wx.ready(res => {
        console.log(that, "ggggggggggggggggggggg");
        wx.getLocation({
          type: "gcj02",
          success: function(res) {
            //var pointY = res.latitude; // 纬度,浮点数,范围为90 ~ -90
            //var pointX = res.longitude; // 经度,浮点数,范围为180 ~ -180。
            //获取经纬度有偏差,纠正
            let x_PI = (3.14159265358979324 * 3000.0) / 180.0;
            let lat = Number(res.latitude);
            let lng = Number(res.longitude);
            let z =
              Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
            let theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
            var pointX = z * Math.cos(theta) + 0.0065;
            var pointY = z * Math.sin(theta) + 0.006;
            that.signData.latitude = pointY;
            that.signData.longitude = pointX;
            that.lat = pointY;
            that.lng = pointX;
            var wxaccuracy = res.accuracy;
            var map = new BMap.Map("allmap");
            var point = new BMap.Point(pointX, pointY);
            var gc = new BMap.Geocoder();
            gc.getLocation(point, function(rs) {
              var addComp = rs.addressComponents;
              if (addComp.province == addComp.city) {
                that.signData.address =
                  addComp.province +
                  addComp.district +
                  addComp.street +
                  addComp.streetNumber;
              } else {
                that.signData.address =
                  addComp.province +
                  addComp.city +
                  addComp.district +
                  addComp.street +
                  addComp.streetNumber;
              }
            });
          },
          cancel: function(res) {
            console.log(555555555555);
          }
        });
      });
      wx.error(function(res) {
      });
    },
  }
}
</script>

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值