使用微信获取的地理位置是有偏移加密的wgs84坐标系(另外一种是火星坐标暂不讨论)是一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。如果直接使用到业务中,偏差会很大,不符合业务场景。
解决方案:坐标转换(以百度地图为例)
场景步骤:
微信端jssdk配置引入、坐标转换
wx.config({
debug: false,
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: ['getLocation'] // 必填,需要使用的JS接口列表
});
wx.ready(function(){ wx.getLocation({ type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02' success: function (res) { "getLocation:ok" == res.errMsg && $.ajax({ url: "http://api.map.baidu.com/reverse_geocoding/v3/?", type: "get", data: { coordtype: "wgs84ll", location: res.latitude + "," + res.longitude, ak: ak, //百度ak值 callback: "aaaa", //可自定义回调方法名 output: "json", pois: 1 }, dataType: "jsonp", success: function(e) { alert(e.result) //返回的值 } }) }, fail:function(){ alert("获取位置失败,请打开GPS功能!"); } }); });
返回结果:
上述的经纬度是解密后百度的bd09ll(百度经纬度坐标)。