使用Tencent WX JSSDK代替原有的百度LBS接口判断地理位置

从2019年初微信7版本开始,微信内公众号使用的html5接口中,地理定位接口在部分安卓手机上就出现不稳定的情况。

起初使用百度地图定位是如下代码

var geolocation = new BMap.Geolocation();
varmap = newBMap.Map(“container”);
vargeoc = newBMap.Geocoder();
var point1 = new BMap.Point(curlong,curlat);
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
lat=r.point.lat;
long=r.point.lng;
pt = newBMap.Point(long, lat);
console.log(pt);
distance = map.getDistance(point1,pt).toFixed(2);
其中point1的地理定位来源是预先存放的一个地理位置,计算距离在指定范围之后就可以进行匹配了。
现在新的算法是
//首先读取jsticket,然后计算token
varjsticket=”<%=jsticket%>”;
varnoncestr=”Wm3WZYTPz0wzccnW”;
vartimestamp=Math.floor(Date.now() / 1000).toString();
//注意这里使用当前页面为回调页面
varurl=window.location.href;
resultstr=”jsapi_ticket=”+jsticket+”&noncestr=”+noncestr+”&timestamp=”+timestamp+”&url=”+url;
sign=sha1(resultstr);
下面配置当前页面
wx.config({
debug:false,
appId:’wx9669b157f8ab081c’,
timestamp:timestamp ,
nonceStr:noncestr,
signature:sign,
jsApiList: [‘getLocation’]
});
//一旦加载成功即可获得坐标
wx.ready(function(){
wx.getLocation({
type:’wgs84′, // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入’gcj02′
success:function (res) {
varlatitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
varlongitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
// $(“#lats”).val(latitude);
// $(“#lngs”).val(longitude);
distanceByLnglat(longitude,latitude,curlong,curlat);
},
fail:function(err){
alert(JSON.stringify(err));
}
})
});

//下面是用球面坐标计算wgs84两点间距离

functiondistanceByLnglat(lng1,lat1,lng2,lat2)
{
varradLat1 = Rad(lat1);
varradLat2 = Rad(lat2);
vara = radLat1 – radLat2;
varb = Rad(lng1) – Rad(lng2);
vars = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * 6378137.0;// 取WGS84标准参考椭球中的地球长半径(单位:m)
s = Math.round(s * 10000) / 10000;
alert(s);
distance=s;
$(“#tjbutton”).attr(“disabled”,false);
if(distance<1000){glocalcheck=true};
// //下面为两点间空间距离(非球面体)
// var value= Math.pow(Math.pow(lng1-lng2,2)+Math.pow(lat1-lat2,2),1/2);
// alert(value);
}
functionRad(d)
{
returnd * Math.PI / 180.0;
}
使用腾讯js sdk后定位速度比使用百度地图慢一点,但是精度高了很多。
Advertisements

发布者:supeng

peng.su@hotmail.com

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s

%d 博主赞过: