微信获取地理位置,wx.config配置正确了,然后 wx.getLocation不走

m99998 2015-12-02 01:31:37
微信获取地理位置,wx.config配置正确了,然后 wx.getLocation不走 求大神看下 ,网上说 是 JS顺序问题 但是 按照官方案例啊,求大神
...全文
39745 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
应该是手机GPS没开,我这有个zz同事也没开。调试了半天权限啥都有,结果手机没开GPS。
夏兰荇德寒冰 2019-03-15
  • 打赏
  • 举报
回复
楼主,不知道你有没有解决,我也出现了这样的问题,开了debug:true


然后就是不走success方法

然后我是添加了一个complete方法,然后他就神奇的走了success方法内了,你可以试试

希望能帮到你,这个问题,我也弄了很久,还有一点就是,你一定的确保你的js-sdk有引入,还有就是config获取正确,
就这样罗
EricGPig 2018-08-23
  • 打赏
  • 举报
回复
引用 21 楼 bbg2010 的回复:
解决方法:

wx.config({
debug: false,
appId: '', // 必填,公众号的唯一标识
timestamp: '', // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [
'checkJsApi',
'getLocation'
]
});
wx.ready(function(){
wx.getLocation({
type: 'gcj02',
dataType:"json",
success: function (res) {
$.ajax({
url:"/Attendance/GetMyLocation?uid=@uid" + "&lat=" + res.latitude + "&lon=" + res.longitude,
type:"POST",
dateType:"json",
success: function(data) {
stopCount();//计时器停止
document.getElementById('location').style.display = "none";
$("#lo").val(res.longitude);
$("#la").val(res.latitude);
document.getElementById("a").style.color = "gray";
document.getElementById("a").innerHTML = data[1];
$("#local").val(data[1]);
}
});
},
cancel: function (res) {
stopCount();
document.getElementById("a").style.color = "Red";
document.getElementById("a").innerHTML = "定位失败!";
document.getElementById('location').style.display = "block";
//alert('用户拒绝授权获取地理位置');
},
error: function (res) {
stopCount();
document.getElementById("a").style.color = "Red";
document.getElementById("a").innerHTML = "定位失败!";
document.getElementById('location').style.display = "block";
}
});
});


进入不到wx.getLocation的success里面去额。。。
EricGPig 2018-08-23
  • 打赏
  • 举报
回复
引用 5 楼 u012001653 的回复:
我的不是接口问题, config里面调试debug:true 状态下都能取到,而是
success中的ajax不执行
代码如下:
wx.getLocation({
type: 'gcj02',
dataType:"json",
success: function (res) {
$.ajax({
url:"/Attendance/GetMyLocation?uid=@uid" + "&lat=" + res.latitude + "&lon=" + res.longitude,
type:"POST",
dateType:"json",
success: function(data) {
stopCount();//计时器停止
document.getElementById('location').style.display = "none";
$("#lo").val(res.longitude);
$("#la").val(res.latitude);
document.getElementById("a").style.color = "gray";
document.getElementById("a").innerHTML = data[1];
$("#local").val(data[1]);
}
});
},
cancel: function (res) {
stopCount();
document.getElementById("a").style.color = "Red";
document.getElementById("a").innerHTML = "定位失败!";
document.getElementById('location').style.display = "block";
//alert('用户拒绝授权获取地理位置');
},
error: function (res) {
stopCount();
document.getElementById("a").style.color = "Red";
document.getElementById("a").innerHTML = "定位失败!";
document.getElementById('location').style.display = "block";
}
});


请问怎么解决的啊。。。。一直请求不到ajax里面success去
只为思考 2018-03-06
  • 打赏
  • 举报
回复
解决方法:

wx.config({
        debug: false,
        appId: '', // 必填,公众号的唯一标识
        timestamp: '', // 必填,生成签名的时间戳
        nonceStr: '', // 必填,生成签名的随机串
        signature: '',// 必填,签名
        jsApiList: [
            'checkJsApi',
            'getLocation'
        ]
    });
wx.ready(function(){
    wx.getLocation({
            type: 'gcj02', 
            dataType:"json",
            success: function (res) {
                $.ajax({
                    url:"/Attendance/GetMyLocation?uid=@uid" + "&lat=" + res.latitude + "&lon=" + res.longitude,
                    type:"POST",
                    dateType:"json",
                    success: function(data) {
                        stopCount();//计时器停止
                        document.getElementById('location').style.display = "none";
                        $("#lo").val(res.longitude);
                        $("#la").val(res.latitude);
                        document.getElementById("a").style.color = "gray";
                        document.getElementById("a").innerHTML = data[1];
                        $("#local").val(data[1]);
                    }
                });
            },
            cancel: function (res) {
                stopCount();
                document.getElementById("a").style.color = "Red";
                document.getElementById("a").innerHTML = "定位失败!";
                document.getElementById('location').style.display = "block";
                //alert('用户拒绝授权获取地理位置');
            },
            error: function (res) {
                stopCount();
                document.getElementById("a").style.color = "Red";
                document.getElementById("a").innerHTML = "定位失败!"; 
                document.getElementById('location').style.display = "block";
            }
        });
});
秦学东 2018-01-02
  • 打赏
  • 举报
回复
这个问题谁解决了 分享一下 搞了一天
baidu_38894567 2017-05-23
  • 打赏
  • 举报
回复
开启debug,弹窗提示:getLocation: unsupported type,然后就不知道了,请问楼主解决了吗
向太阳天 2017-04-24
  • 打赏
  • 举报
回复
引用 17 楼 m0_38108649 的回复:
请问楼主大大,不退出当前应用获取的地理位置是不变化的,怎么解决
同问 解决了么
m0_38108649 2017-03-29
  • 打赏
  • 举报
回复
请问楼主大大,不退出当前应用获取的地理位置是不变化的,怎么解决
哎呦呵-net 2016-06-21
  • 打赏
  • 举报
回复
楼主问题解决了吗?QQ1219958536 交流一下?
chenrong980 2016-02-24
  • 打赏
  • 举报
回复
引用 12 楼 sp1234 的回复:
[quote=引用 9 楼 chenrong980 的回复:] [quote=引用 8 楼 sp1234 的回复:] 如果只是获得地理信息数据,那么不需要使用微信 sdk接口,使用 html5 标准方法即可。
html5获得的地理位置不准确[/quote] 你的意思是说 html 标准方法不能获取 gps 数据?[/quote]能获取,只是不准确,可是后来我再试了下突然就对了,代码没有改动。感觉偶尔对偶尔不对的感觉,手机上正确的概率大一些,电脑上正确概率小一些。
Sun-L 2016-01-23
  • 打赏
  • 举报
回复
async: false,
引用 5 楼 u012001653 的回复:
我的不是接口问题, config里面调试debug:true 状态下都能取到,而是 success中的ajax不执行 代码如下: wx.getLocation({ type: 'gcj02', dataType:"json", success: function (res) { $.ajax({ url:"/Attendance/GetMyLocation?uid=@uid" + "&lat=" + res.latitude + "&lon=" + res.longitude, type:"POST", dateType:"json", success: function(data) { stopCount();//计时器停止 document.getElementById('location').style.display = "none"; $("#lo").val(res.longitude); $("#la").val(res.latitude); document.getElementById("a").style.color = "gray"; document.getElementById("a").innerHTML = data[1]; $("#local").val(data[1]); } }); }, cancel: function (res) { stopCount(); document.getElementById("a").style.color = "Red"; document.getElementById("a").innerHTML = "定位失败!"; document.getElementById('location').style.display = "block"; //alert('用户拒绝授权获取地理位置'); }, error: function (res) { stopCount(); document.getElementById("a").style.color = "Red"; document.getElementById("a").innerHTML = "定位失败!"; document.getElementById('location').style.display = "block"; } });
ajax里用同步试试 async: false
  • 打赏
  • 举报
回复
最好是在你的系统中保存的总是 gps 坐标,而对于微信那种由中国国家测绘局指定每一家服务商分别进行混淆偏移的坐标,还是不要作为基础数据。比如说你可以在你的系统中用"gps坐标"字段来表示原始数据,用"微信 gcj 坐标“来表示偏移了的数据,然后当你用于其它厂家的地图时,需要将微信给你的数据进行“消密”,然后在根据目标地图厂商(假设是中国的厂商的话)的偏移方式进行混淆,才能在人家地图上精确找到你要的位置。 要是按照科学的方式来在中国的地图上找到自己家的坐标,是可能跑到阴沟里的。中国的坐标都是假的。
  • 打赏
  • 举报
回复
引用 9 楼 chenrong980 的回复:
[quote=引用 8 楼 sp1234 的回复:] 如果只是获得地理信息数据,那么不需要使用微信 sdk接口,使用 html5 标准方法即可。
html5获得的地理位置不准确[/quote] 你的意思是说 html 标准方法不能获取 gps 数据?
  • 打赏
  • 举报
回复
可能是因为获取地理位置信息的方法放在了点击事件中,而此时之前的配置参数可能存在失效的情况 你可以尝试,在点击事件中,去配置微信参数,然后调用 尝试方法如下:
$('#getLocation').click(function () {
    initWxConfig(window.location.href, '@Url.Action("GetWxConfig","Api")');//重新获取微信配置参数
    wx.getLocation({
        type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
        success: function (res) {
            var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
            var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
            var speed = res.speed; // 速度,以米/每秒计
            var accuracy = res.accuracy; // 位置精度
            //处理
        }
    });
});
chenrong980 2016-01-15
  • 打赏
  • 举报
回复
引用 8 楼 sp1234 的回复:
如果只是获得地理信息数据,那么不需要使用微信 sdk接口,使用 html5 标准方法即可。
html5获得的地理位置不准确
oh_ku 2015-12-24
  • 打赏
  • 举报
回复
LZ解决了吗,我也遇到这个问题,都快崩溃了
  • 打赏
  • 举报
回复
如果只是获得地理信息数据,那么不需要使用微信 sdk接口,使用 html5 标准方法即可。
  • 打赏
  • 举报
回复
LZ解决这个问题 了么? 我的方法没能直接解决这个问题,但是可以达到相同的效果 方法:添加一个js计数器,循环调用获取定位的方法,直到获取到位置才结束计数(如果页面上有时钟,可能会出现冲突,获取到定位信息的瞬间时钟跟页面全部卡主,需要手动返回下才行----->这是指手机web页面),但是我想直接解决wx.GetLocation()刚进页面不执行的问题,望LZ分享
lpainima 2015-12-09
  • 打赏
  • 举报
回复
示例代码是这样 wx.getLocation({ type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02' success: function (res) { var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90 var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。 var speed = res.speed; // 速度,以米/每秒计 var accuracy = res.accuracy; // 位置精度 } }); 你是不是多了一句 dataType:"json", ??
加载更多回复(4)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧