微信公众号定位用户所在位置

微信公众号定位用户所在位置

  1. 最近由于项目的原因,涉及到了微信公众号,看了几天文档加上问了问同事,对这个玩意有一点了解,写一下微信公众号定位的方法,记一下以后方便用。
//获取code
    var url = location.href.split('#')[0];
    var area=getUrlParams("area");
    if(!area){
        //获取signInfo
        $.ajax({
            url: "url",
            type: "post",
            dataType: "json",
            data: {"url": url},
            async: false,
            success: function (data) {
                if (data) {
                    initWxConfig(data);
                }
            },
            error: function () {
                $.attr("微信初始化失败");
            }
        });

        function initWxConfig(data) {
            wx.config({
                // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,
                debug: false, 
                // 必填,企业号的唯一标识,此处填写企业号corpid
                appId: data.appidInfo, 
                // 必填,生成签名的时间戳
                timestamp: data.timestamp, 
                // 必填,生成签名的随机串
                nonceStr: data.nonceStr, 
                // 必填,签名,见附录1
                signature: data.signature,
                // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                jsApiList: ["getLocation"] 
            });
            wxLocation();
        }

上边微信初始化配置简单略过,主要是获取关键的appid和签名 同事协商需要调用的api接口列表,下边是重点获取location

function wxLocation() {
            //思路是通过微信的方法获取用户的经纬度坐标 然后将经纬度坐标传给高德地图api接口,API会返回对应的地理信息
            wx.ready(function () {
                // 获取当前地理位置
                wx.getLocation({
                    success: function (res) {
                        AMap.service('AMap.Geocoder', function () {//回调函数
                            //实例化Geocoder
                            geocoder = new AMap.Geocoder();
                            //地图上所标点的坐标 微信获取经纬度
                            var lnglatXY = [res.longitude, res.latitude];
                            geocoder.getAddress(lnglatXY, function (status, result) {
                                if (status === 'complete' && result.info === 'OK') {
                                    //获得了有效的地址信息,以上就是获取位置的方法,下边是我的业务需要  再次调用api接口获得城市的区号
                                    var data=result.regeocode.addressComponent,
                                        province = data.province,
                                        city = data.city,
                                        district = data.district;
                                    $("#fsenderAddress").val(province+"-"+city+"-"+district).trigger("change");
                                    geocoder.getLocation(city+district, function(status, result) {
                                        if (status === 'complete' && result.info === 'OK') {
                                            $("#fsenderCountyCode").val(result.geocodes[0].adcode)
                                        }
                                    })
                                } else {
                                    //获取地址失败
                                }
                            });
                        })
                    },
                    cancel: function (res) {
                        alert('用户拒绝授权获取地理位置');
                    }
                });
            });
        }

先记录这么多吧。。

猜你喜欢

转载自blog.csdn.net/yummry/article/details/78738575