JavaScript微信定位功能實現(xiàn)方法
分享下微信是如何定位的:
本文主要講解如何利用微信定位,如何將定位到的經(jīng)緯度轉(zhuǎn)換為百度地圖對應的經(jīng)緯度,以及處理定位失敗、取消及錯誤時的默認做法。
//獲取地理位置信息start //封裝成一個函數(shù) 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]//將第一個#號前的地址傳遞 }, //請求成功的函數(shù) 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) { //這是微信返回的真正經(jīng)緯度 var oldLat = res.latitude; // 緯度,浮點數(shù),范圍為90 ~ -90 var oldLng = res.longitude; // 經(jīng)度,浮點數(shù),范圍為180 ~ -180。 /*下面是為了將獲得的真正經(jīng)緯度轉(zhuǎn)換為對應的百度經(jīng)緯度,因為是利用百度地圖的經(jīng)緯度去查詢數(shù)據(jù)的,數(shù)據(jù)庫中存的也是百度的經(jīng)緯度*/ //創(chuàng)建一個百度地圖的點 var customerPoint = new BMap.Point(oldLng, oldLat); // var convertor = new BMap.Convertor(); var pointArr = [];//創(chuàng)建一個數(shù)組 pointArr.push(customerPoint);//將剛才的點放進去 convertor.translate(pointArr, 1, 5, initMap); //轉(zhuǎn)換坐標 function initMap(data) { if (data.status === 0) {//轉(zhuǎn)換成功 var point = data.points[0];//得到后的點 var lng = point.lng;//獲得轉(zhuǎn)換后的經(jīng)度 var lat = point.lat;//獲得轉(zhuǎn)換后的緯度 toDoFunction(lng, lat);//將經(jīng)緯度傳入到要運用的函數(shù)中 } else { //下面兩行是默認定位到西湖的經(jīng)緯度 lng = 120.141375; lat = 30.257806; toDoFunction(lng, lat);//將經(jīng)緯度傳入到要運用的函數(shù)中 } } }, //取消定位 cancel: function () { //下面兩行是默認定位到西湖的經(jīng)緯度 var lng = 120.141375; var lat = 30.257806; toDoFunction(lng, lat);//將經(jīng)緯度傳入到要運用的函數(shù)中 }, //定位失敗 fail: function () { //下面兩行是默認定位到西湖的經(jīng)緯度 var lng = 120.141375; var lat = 30.257806; toDoFunction(lng, lat);//將經(jīng)緯度傳入到要運用的函數(shù)中 } }); //定位發(fā)生錯誤 wx.error(function () { //下面兩行是默認定位到西湖的經(jīng)緯度 var lng = 120.141375; var lat = 30.257806; toDoFunction(lng, lat);//將經(jīng)緯度傳入到要運用的函數(shù)中 }); }); } }); }
以上代碼,如果可以定位到就用定位到的真正的經(jīng)緯度,再轉(zhuǎn)換成百度地圖對應的經(jīng)緯度,如果定位失敗或者是點擊取消或者發(fā)生錯誤,則默認定位到西湖的經(jīng)緯度。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript 瀏覽器類型和版本號檢測代碼(兼容多瀏覽器)
果對javascript了解不是特別深入的話,很容易就會寫出不兼容的代碼(就像我),這時候就得判斷瀏覽器了。比如事件偵聽、一些鼠標和鍵盤事件、Range等,一些都會不一樣.下面列出幾種常用的檢測瀏覽器方法,以饗觀眾!2010-04-04用console.table()調(diào)試javascript
昨天我了解到Chrome調(diào)試工具一個小巧的調(diào)試方法,在WDCC期間, Marcus Ross(@zahlenhelfer) 介紹了,chrome調(diào)試工具各種調(diào)試方法,這個只是其中一種,現(xiàn)在我來給大家秀下。2014-09-09JavaScript判斷是否為數(shù)字的幾種方式匯總(推薦!)
有時候需要根據(jù)輸入的內(nèi)容來進行計算,這個時候就需要判斷輸入的內(nèi)容是否是數(shù)字,下面這篇文章主要給大家介紹了關(guān)于JavaScript判斷是否為數(shù)字的幾種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-06-06一個html5播放視頻的video控件只支持android的默認格式mp4和3gp
寫了個html5播放視頻的video控件,只支持mp4和3gp(android和ios默認支持的格式就寫了這個) ,需要的朋友可以參考下2014-05-05