分享下微信是如何定位的:
本文主要講解如何利用微信定位,如何將定位到的經緯度轉換為百度地圖對應的經緯度,以及處理定位失敗、取消及錯誤時的默認做法。
//獲取地理位置信息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);//將經緯度傳入到要運用的函數中 }); }); } }); }
以上代碼,如果可以定位到就用定位到的真正的經緯度,再轉換成百度地圖對應的經緯度,如果定位失敗或者是點擊取消或者發生錯誤,則默認定位到西湖的經緯度。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。