WeChat 測位がどのように行われるかを共有します:
この記事では、主に WeChat 測位の使用方法、測位された経度と緯度を百度地図の対応する経度と緯度に変換する方法、測位の失敗、キャンセル、エラーを処理するためのデフォルトのアプローチについて説明します。 。
//获取地理位置信息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);//将经纬度传入到要运用的函数中 }); }); } }); }
上記のコードは、位置を特定できた場合、その位置の実際の経度と緯度を使用し、位置が失敗した場合、またはクリックしてキャンセルした場合は、それを百度地図に対応する経度と緯度に変換します。またはエラーが発生した場合は、デフォルトで West Lake の経度と緯度が設定されます。