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