微信小程序中使用ibeacon怎么實(shí)現(xiàn)三點(diǎn)定位,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)枝江,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
var app = getApp() Page({ data: { motto: 'Hello World', openBLE:'打開藍(lán)牙設(shè)備', startBLEDiscovery:'初始化藍(lán)牙設(shè)備', startBLEDevices:'目標(biāo)定位', reStartSearchBLE:'重置藍(lán)牙', startSearchBLE:'默認(rèn)空', userInfo: {}, deviceId: '', searchFlag:true, deviceRSSI:'', deviceName:'', deviceId:[], advertisServiceUUIDs: [], advertisData:[], canvasPointX:'', canvasPointY:'', avatarUrl:'../index/bg-image.jpg', showPosition:'' }, //事件處理函數(shù) bindViewTap: function() { wx.navigateTo({ url: '../logs/logs' }) }, onLoad: function () { var that = this //調(diào)用應(yīng)用實(shí)例的方法獲取全局?jǐn)?shù)據(jù) //that.setData({ deviceId: opt.deviceId }) app.getUserInfo(function(userInfo){ //更新數(shù)據(jù) that.setData({ userInfo:userInfo }) //判斷兼容性 if (wx.openBluetoothAdapter) { //打開藍(lán)牙適配器,如果沒有打開 showtoast wx.openBluetoothAdapter({ success: function(res){ // success //獲取本機(jī)的藍(lán)牙適配器狀態(tài) wx.getBluetoothAdapterState({ success: function(res){ // success that.setData({ searchFlag:true }) }, fail: function(res) { // fail that.setData({ searchFlag:false }) }, complete: function(res) { // complete } }) }, fail: function(res) { // fail 本機(jī)是否已經(jīng)打開藍(lán)牙設(shè)備 wx.showToast({title:'請打開本機(jī)藍(lán)牙設(shè)備,重新掃碼', duration:10000 }) }, complete: function(res) { // complete } }) } else { // 如果希望用戶在最新版本的客戶端上體驗(yàn)?zāi)男〕绦?,可以這樣子提示 wx.showModal({ title: '提示', content: '當(dāng)前微信版本過低,無法使用該功能,請升級到最新微信版本后重試。' }) } }) }, startBLEDevices: function(){ var that = this wx.startBluetoothDevicesDiscovery({ services: [], success: function(res){ //獲取本機(jī)藍(lán)牙設(shè)備狀態(tài) // success that.setData({ showPosition:setInterval(that.devicesFunc,1000) }) }, fail: function(res) { // fail }, complete: function(res) { // complete } }) }, // startBLEDevices: function(){ // var that = this // that.setData({ // showPosition:setInterval(that.devicesFunc,1000) // }) // }, devicesFunc: function(){ var that = this wx.getBluetoothDevices({ success: function(res){ // console.log(res); var arrayRSSI = new Array(); var arraydeviceName = new Array(); var arraydeviceId = new Array(); // var arrayUUIDs = new Array(); var arrayadvertisData = new Array(); var pointADistance = ''; var pointBDistance = ''; var pointCDistance = ''; for(var i = 0; i<res.devices.length;i++){ //console.log(res.devices[i].name); if(res.devices[i].name.indexOf('craft')==0){ //console.log(res.devices[i]); arrayRSSI.push(res.devices[i].RSSI); arraydeviceName.push(res.devices[i].name); arraydeviceId[i]= res.devices[i].deviceId; arrayUUIDs[i]= res.devices[i].advertisServiceUUIDs[i]; arrayadvertisData[i]= res.devices[i].advertisData ; 調(diào)用計(jì)算rssi對應(yīng)距離的函數(shù) var iRssi = Math.abs(arrayRSSI[i]); var power = (iRssi-59)/(10*2.0); var mm = Math.pow(10, power); console.log(arraydeviceName[i]+"距離的位置是"+mm+"米"); 取01,02,03分別為,(2,0),(2,2),(0,2)固定坐標(biāo)點(diǎn),做定位 if(res.devices[i].name.indexOf('craft01')==0){ var pointARSSi = res.devices[i].RSSI ; var iRssi = Math.abs(pointARSSi); var power = (iRssi-55)/(10*2.0); var pointADistance = Math.pow(10, power); console.log("a"+pointADistance); console.log(pointARSSi); } if(res.devices[i].name.indexOf('craft02')==0){ var pointBRSSi = res.devices[i].RSSI; var iRssi = Math.abs(pointBRSSi); var power = (iRssi-55)/(10*2.0); var pointBDistance = Math.pow(10, power); console.log("b"+pointBDistance); console.log(pointBRSSi); } if(res.devices[i].name.indexOf('craft03')==0){ var pointCRSSi = res.devices[i].RSSI; var iRssi = Math.abs(pointCRSSi); var power = (iRssi-57)/(10*2.0); var pointCDistance = Math.pow(10, power); console.log("c"+pointCDistance); console.log(pointCRSSi); } } } // 從 arrayRSSI 取三個距離定位點(diǎn)最近的ibeacon參與定位 if(arrayRSSI.length > 3){ //根據(jù)arrayRSSI進(jìn)行信號強(qiáng)弱排序.距離越遠(yuǎn)rssi值越小 for(var i = 0 ; i < arrayRSSI.length ; i ++){ for(var j = i+1 ; j< arrayRSSI.length ; j++){ if(arrayRSSI[i]<arrayRSSI[j]){ var select = arrayRSSI[i]; arrayRSSI[i] = arrayRSSI[j]; arrayRSSI[j] = select; } } } //獲取最近的三個距離 for(var i = 0 ; i < 3; i++){ if(i==0){ var pointARSSi = res.devices[i].RSSI ; var iRssi = Math.abs(pointARSSi); var power = (iRssi-55)/(10*2.0); var pointADistance = Math.pow(10, power); console.log("a"+pointADistance); console.log(pointARSSi); } if(i==1){ var pointBRSSi = res.devices[i].RSSI; var iRssi = Math.abs(pointBRSSi); var power = (iRssi-55)/(10*2.0); var pointBDistance = Math.pow(10, power); console.log("b"+pointBDistance); console.log(pointBRSSi); } if(i==2){ var pointCRSSi = res.devices[i].RSSI; var iRssi = Math.abs(pointCRSSi); var power = (iRssi-57)/(10*2.0); var pointCDistance = Math.pow(10, power); console.log("c"+pointCDistance); console.log(pointCRSSi); } } } //獲取定位點(diǎn)的x和y if(!pointADistance==''&&!pointBDistance==''&&!pointCDistance==''){ var pointDX='';var pointDY = ''; var p = Math.pow(pointADistance,2)/10-Math.pow(pointBDistance,2)/10; pointDX = 2.5 - p; var m = Math.pow(pointADistance,2)/10-Math.pow(pointCDistance,2)/10; pointDY = 2.5 - m; console.log('目標(biāo)所在位置X是'+pointDX); console.log('目標(biāo)所在位置Y是'+pointDY); if(pointDX > 0 && pointDY > 0){ wx.showToast({title:'歡迎進(jìn)入25樓craft', duration:4000 }); } that.setData({ canvasPointX:pointDX, canvasPointY:pointDY }) //創(chuàng)建畫布 //計(jì)算坐標(biāo)點(diǎn)在規(guī)定canvas上的位置顯示 var context = wx.createCanvasContext(); context.setStrokeStyle("#00ff00"); //a,b,c,d,e,f a,b起始坐標(biāo),c半徑,d,e起始和終止角度 context.arc(that.data.canvasPointX*30,that.data.canvasPointY*30,5,0,2*Math.PI); context.fill(); wx.drawCanvas({ canvasId: 'firstCanvas', actions: context.getActions() // 獲取繪圖動作數(shù)組 }) wx.showModal({title:'X軸:'+pointDX+'Y軸:'+pointDY, duration:5000 }); //開始網(wǎng)絡(luò)請求 wx.request({ url: 'http://craftww.cn/weixinIbeacon/index.php', data: {}, method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT // header: {}, // 設(shè)置請求的 header success: function(res){ // success }, fail: function(res) { // fail }, complete: function(res) { // complete } }) }else{ wx.showToast({title:'正在搜索...', duration:1000 }) 開始網(wǎng)絡(luò)請求 wx.request({ url: 'http://craftww.cn/weixinIbeacon/index.php', data: {}, method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT // header: {}, // 設(shè)置請求的 header success: function(res){ // success }, fail: function(res) { // fail }, complete: function(res) { // complete } }) } }, fail: function(res) { // fail }, complete: function(res) { // complete } }) } , //動態(tài)顯示 createList: function(thisName){ var that = this that.setData({ array:[{deviceDistance:"1"},{deviceDistance:"1"},{deviceDistance:"1"},{deviceDistance:"1"},{deviceDistance:"1"}] }) }, reStartSearchBLE: function(){ var that = this //清除本地?cái)?shù)據(jù)緩存 wx.stopBluetoothDevicesDiscovery({ success: function(res){ // success }, fail: function(res) { // fail }, complete: function(res) { // complete } }) wx.clearStorageSync(); clearInterval(that.data.showPosition); console.log(that.data.showPosition); // that.context.clearRect(0,0,canvas.width,canvas.height); //斷開藍(lán)牙 var that = this wx.closeBluetoothAdapter({ success: function(res){ // success console.log('重置成功'); //打開藍(lán)牙適配器,如果沒有打開 showtoast wx.openBluetoothAdapter({ success: function(res){ // success //獲取本機(jī)的藍(lán)牙適配器狀態(tài) wx.getBluetoothAdapterState({ success: function(res){ // success }, fail: function(res) { // fail }, complete: function(res) { // complete } }) }, fail: function(res) { }, complete: function(res) { // complete } }) }, fail: function(res) { // fail }, complete: function(res) { // complete } }) } //zheli })
看完上述內(nèi)容,你們掌握微信小程序中使用ibeacon怎么實(shí)現(xiàn)三點(diǎn)定位的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
當(dāng)前題目:微信小程序中使用ibeacon怎么實(shí)現(xiàn)三點(diǎn)定位
鏈接地址:http://aaarwkj.com/article28/gppojp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、全網(wǎng)營銷推廣、App開發(fā)、網(wǎng)站內(nèi)鏈、微信公眾號、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)