亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

微信小程序ibeacon三點定位詳解

2020-03-21 16:08:44
字體:
來源:轉載
供稿:網友

空余時間簡單寫了一個微信小程序ibeacon三點定位。

事先淘寶買了七八個ibeacon小設備,放置在辦公司角落。分別設置三個ibeacon的位置坐標點,根據每一個ibeacon到已經開啟藍牙的目標物距離,計算出目標物在當前區域內坐標位置。適用于區域內購物指示。當然,進入該區域事先要打開手機藍牙。

下面代碼:

var app = getApp() Page({ data: {  motto: 'Hello World',  openBLE:'打開藍牙設備',  startBLEDiscovery:'初始化藍牙設備',  startBLEDevices:'目標定位',  reStartSearchBLE:'重置藍牙',  startSearchBLE:'默認空',  userInfo: {},  deviceId: '',  searchFlag:true,  deviceRSSI:'',  deviceName:'',  deviceId:[],  advertisServiceUUIDs: [],  advertisData:[],  canvasPointX:'',  canvasPointY:'',  avatarUrl:'../index/bg-image.jpg',  showPosition:''  }, //事件處理函數 bindViewTap: function() {  wx.navigateTo({   url: '../logs/logs'  }) }, onLoad: function () {   var that = this  //調用應用實例的方法獲取全局數據   //that.setData({ deviceId: opt.deviceId })   app.getUserInfo(function(userInfo){   //更新數據    that.setData({    userInfo:userInfo   })   //判斷兼容性   if (wx.openBluetoothAdapter) {    //打開藍牙適配器,如果沒有打開 showtoast   wx.openBluetoothAdapter({    success: function(res){     // success     //獲取本機的藍牙適配器狀態     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 本機是否已經打開藍牙設備      wx.showToast({title:'請打開本機藍牙設備,重新掃碼', duration:10000 })    },    complete: function(res) {     // complete    }   })   } else {     // 如果希望用戶在最新版本的客戶端上體驗您的小程序,可以這樣子提示     wx.showModal({      title: '提示',      content: '當前微信版本過低,無法使用該功能,請升級到最新微信版本后重試。'     })    }       })  },    startBLEDevices: function(){    var that = this      wx.startBluetoothDevicesDiscovery({      services: [],      success: function(res){        //獲取本機藍牙設備狀態           // 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  ;        調用計算rssi對應距離的函數        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)固定坐標點,做定位                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 取三個距離定位點最近的ibeacon參與定位      if(arrayRSSI.length > 3){        //根據arrayRSSI進行信號強弱排序.距離越遠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);           }          }       }         //獲取定位點的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('目標所在位置X是'+pointDX);        console.log('目標所在位置Y是'+pointDY);         if(pointDX > 0 && pointDY > 0){          wx.showToast({title:'歡迎進入25樓craft', duration:4000 });          }        that.setData({          canvasPointX:pointDX,          canvasPointY:pointDY         })                //創建畫布         //計算坐標點在規定canvas上的位置顯示        var context = wx.createCanvasContext();         context.setStrokeStyle("#00ff00");        //a,b,c,d,e,f  a,b起始坐標,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() // 獲取繪圖動作數組        })          wx.showModal({title:'X軸:'+pointDX+'Y軸:'+pointDY, duration:5000 });          //開始網絡請求         wx.request({          url: 'http://craftww.cn/weixinIbeacon/index.php',          data: {},          method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT          // header: {}, // 設置請求的 header          success: function(res){           // success          },          fail: function(res) {           // fail          },          complete: function(res) {           // complete          }         })         }else{        wx.showToast({title:'正在搜索...', duration:1000 })         開始網絡請求         wx.request({          url: 'http://craftww.cn/weixinIbeacon/index.php',          data: {},          method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT          // header: {}, // 設置請求的 header          success: function(res){           // success          },          fail: function(res) {           // fail          },          complete: function(res) {           // complete          }         })        }       },     fail: function(res) {      // fail     },     complete: function(res) {      // complete     }    })   } ,  //動態顯示  createList: function(thisName){   var that = this      that.setData({      array:[{deviceDistance:"1"},{deviceDistance:"1"},{deviceDistance:"1"},{deviceDistance:"1"},{deviceDistance:"1"}]     })   },  reStartSearchBLE: function(){    var that = this  //清除本地數據緩存  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);   //斷開藍牙   var that = this   wx.closeBluetoothAdapter({    success: function(res){     // success     console.log('重置成功');     //打開藍牙適配器,如果沒有打開 showtoast   wx.openBluetoothAdapter({    success: function(res){     // success     //獲取本機的藍牙適配器狀態     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})

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国产精品国产自| 97视频色精品| 日韩一区二区精品视频| 欧美麻豆久久久久久中文| 日韩中文字幕第一页| 中文亚洲视频在线| 欧美日韩成人在线观看| 奇米成人av国产一区二区三区| 国产精品久久久久久久电影| 日韩电影中文字幕在线观看| 中文字幕欧美国内| 国产精品久久久久免费a∨大胸| 高清一区二区三区日本久| 国产精品久久久久久久一区探花| 久久夜精品香蕉| 欧美精品精品精品精品免费| 中文字幕日韩欧美在线视频| 91久久精品国产91久久| 成人免费淫片aa视频免费| 操人视频在线观看欧美| 欧美日韩国产中文字幕| 欧美另类交人妖| 亚洲激情中文字幕| 最近2019中文字幕mv免费看| 亚洲成avwww人| 亚洲一级片在线看| 国产精品综合久久久| 国产精品久久久久久五月尺| 国自产精品手机在线观看视频| 中文字幕亚洲欧美日韩在线不卡| 成人免费在线视频网址| 1769国产精品| 91久久久久久久| 亚洲综合日韩在线| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品久久久久9999| 2018中文字幕一区二区三区| 日韩在线观看免费高清完整版| 国产精品香蕉在线观看| 国产午夜精品一区二区三区| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久精品青青大伊人av| 北条麻妃在线一区二区| 精品小视频在线| 在线播放精品一区二区三区| 欧美亚洲成人免费| 欧美福利视频在线观看| 精品国产一区av| 欧美成人四级hd版| 国产精品嫩草视频| 国产色婷婷国产综合在线理论片a| 国产免费一区视频观看免费| 在线视频亚洲欧美| 69av视频在线播放| 成人乱色短篇合集| 国外成人在线播放| 久久99精品久久久久久噜噜| 亚洲成年人在线| 国产欧美一区二区三区久久人妖| 亚洲sss综合天堂久久| 亚洲国产高清高潮精品美女| 国产视频久久久久久久| 黑人狂躁日本妞一区二区三区| 国产精品偷伦免费视频观看的| 91亚洲精华国产精华| 亚洲无av在线中文字幕| 欧美黄色三级网站| 中文字幕精品久久久久| 亚洲第一区中文字幕| 久久精品国产欧美亚洲人人爽| 精品福利免费观看| 国产一区二区三区视频在线观看| 亚洲一区二区三区香蕉| 一本色道久久88精品综合| 色777狠狠综合秋免鲁丝| 在线国产精品播放| 2019中文字幕在线| 久久国产精品电影| 久久久国产一区| 国产精品xxx视频| 国产精品扒开腿做爽爽爽的视频| 欧美成人精品影院| 日本电影亚洲天堂| 中国人与牲禽动交精品| 久久亚洲精品毛片| 亚洲欧洲一区二区三区在线观看| 国产日产久久高清欧美一区| 欧美寡妇偷汉性猛交| 国产精品免费一区二区三区都可以| 91大神在线播放精品| 久久国产精品影视| 国产精品一区av| 欧美日韩午夜激情| 欧美最猛性xxxxx亚洲精品| 国内揄拍国内精品少妇国语| 91久久在线视频| 91久久久久久国产精品| 91九色综合久久| 亚洲成人精品视频在线观看| 欧美交受高潮1| 久久精品成人欧美大片| 色av中文字幕一区| 91精品国产91久久久| 91chinesevideo永久地址| 北条麻妃一区二区三区中文字幕| 九九热这里只有精品免费看| 精品久久久在线观看| 国产精品香蕉在线观看| 亚洲视频第一页| 91精品成人久久| 欧美激情乱人伦一区| 亚洲福利视频网| 亚洲激情国产精品| 成人在线视频网站| 91亚洲精品久久久久久久久久久久| 国产不卡一区二区在线播放| 久久天天躁狠狠躁夜夜av| 国产精品久久视频| 久久亚洲影音av资源网| 久久综合伊人77777尤物| 国产精品高精视频免费| 欧美性猛交xxxxx免费看| 欧美成人在线免费视频| 亚洲女人初尝黑人巨大| 92国产精品久久久久首页| 久久天天躁狠狠躁夜夜爽蜜月| 中国china体内裑精亚洲片| 精品视频偷偷看在线观看| 久久伊人精品一区二区三区| 国产精品视频久久久| 国产日韩欧美中文在线播放| 欧美高清电影在线看| 久久人体大胆视频| 亚洲乱码一区二区| 精品美女国产在线| 亚洲精品久久久久中文字幕欢迎你| 国产精品视频免费观看www| 日韩av中文字幕在线免费观看| 日韩亚洲国产中文字幕| 欧美丰满少妇xxxxx做受| 欧美激情一区二区三区成人| 中日韩午夜理伦电影免费| 国产成人自拍视频在线观看| 亚洲精品在线91| 亚洲色图25p| 欧美国产日产韩国视频| 97视频国产在线| 国产精品美女免费| 欧美激情国内偷拍| 国产高清视频一区三区| 欧美xxxx18性欧美| 久久免费视频在线观看| 久久精品91久久久久久再现| 原创国产精品91| 亚洲区中文字幕| 亚洲激情在线观看视频免费| 国产精品青草久久久久福利99| 日韩在线观看高清| 久久久久国产一区二区三区| 精品视频在线观看日韩| 国产精品久久久久9999| 在线观看国产精品91| 激情懂色av一区av二区av| 亚洲国产精品久久久久秋霞蜜臀|