JavaScript微信定位功能实现方法

时间:2021-05-26

分享下微信是如何定位的:

本文主要讲解如何利用微信定位,如何将定位到的经纬度转换为百度地图对应的经纬度,以及处理定位失败、取消及错误时的默认做法。

//获取地理位置信息start//封装成一个函数 function getPosition() { //用ajax请求 $.ajax({ url: "/wechat/jssdk",//请求地址 type: 'post',//post请求 dataType: 'json', contentType: "application/x-www-form-urlencoded; charset=utf-8", data: { 'url': location.href.split('#')[0]//将第一个#号前的地址传递 },//请求成功的函数 success: function (data) { wx.config({ // debug: true, appId: data.data.appId, timestamp: data.data.timestamp, nonceStr: data.data.nonceStr, signature: data.data.signature, jsApiList: ['checkJsApi', 'getLocation'] }); wx.ready(function () { wx.getLocation({ //获得定位成功 success: function (res) { //这是微信返回的真正经纬度 var oldLat = res.latitude; // 纬度,浮点数,范围为90 ~ -90 var oldLng = res.longitude; // 经度,浮点数,范围为180 ~ -180。 //创建一个百度地图的点 var customerPoint = new BMap.Point(oldLng, oldLat); // var convertor = new BMap.Convertor(); var pointArr = [];//创建一个数组 pointArr.push(customerPoint);//将刚才的点放进去 convertor.translate(pointArr, 1, 5, initMap); //转换坐标 function initMap(data) { if (data.status === 0) {//转换成功 var point = data.points[0];//得到后的点 var lng = point.lng;//获得转换后的经度 var lat = point.lat;//获得转换后的纬度 toDoFunction(lng, lat);//将经纬度传入到要运用的函数中 } else { //下面两行是默认定位到西湖的经纬度 lng = 120.141375; lat = 30.257806; toDoFunction(lng, lat);//将经纬度传入到要运用的函数中 } } }, //取消定位 cancel: function () { //下面两行是默认定位到西湖的经纬度 var lng = 120.141375; var lat = 30.257806; toDoFunction(lng, lat);//将经纬度传入到要运用的函数中 }, //定位失败 fail: function () { //下面两行是默认定位到西湖的经纬度 var lng = 120.141375; var lat = 30.257806; toDoFunction(lng, lat);//将经纬度传入到要运用的函数中 } }); //定位发生错误 wx.error(function () { //下面两行是默认定位到西湖的经纬度 var lng = 120.141375; var lat = 30.257806; toDoFunction(lng, lat);//将经纬度传入到要运用的函数中 }); }); } }); }

以上代码,如果可以定位到就用定位到的真正的经纬度,再转换成百度地图对应的经纬度,如果定位失败或者是点击取消或者发生错误,则默认定位到西湖的经纬度。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章