|
@@ -18,7 +18,7 @@ const STATUS_PIC = {
|
|
|
const TXPOWER = -55
|
|
|
|
|
|
// 距离经验值(调试所得)
|
|
|
-const N = 4
|
|
|
+const N = 3.3
|
|
|
|
|
|
|
|
|
let AveLength = 10
|
|
@@ -148,55 +148,35 @@ Component({
|
|
|
// dataArr.push(classfiy[key].length)
|
|
|
|
|
|
})
|
|
|
- // console.log('10001',classfiy['10001'])
|
|
|
- // console.log('10002',classfiy['10002'])
|
|
|
- // console.log('10003',classfiy['10003'])
|
|
|
- // console.log(classfiy)
|
|
|
+
|
|
|
|
|
|
// 筛选器,筛选出配对的一组信标
|
|
|
- let aveAccuracys = new Map() //信标的平均距离,用于判断是否在范围内
|
|
|
- let matchSigns = [] //匹配的信号
|
|
|
- let prologue = ['1000110002'] //序厅
|
|
|
- let annexHall = ['1000310004'] //附厅
|
|
|
- let mainHall = ['1000510006'] //主厅
|
|
|
- let area = [prologue,annexHall,mainHall]
|
|
|
- const R = 3 //设定范围半径
|
|
|
+ let signSelect = [0,0,0]; //记录各组的信标出现数量,投票选择最多的,以此是prologue,annexHall,mainHall
|
|
|
+ let prologue = ['10001','10002'] //序厅
|
|
|
+ let annexHall = ['10003','10004'] //附厅
|
|
|
+ let mainHall = ['10005','10006'] //主厅
|
|
|
+ const R = 6 //设定范围半径
|
|
|
Object.keys(accuracyList).forEach(key=>{
|
|
|
let aveAccuracy = BeaconUtils.arrayAverage(accuracyList[key])
|
|
|
// console.log(key,aveAccuracy)
|
|
|
- let record = {'id':'10001','distance':aveAccuracy}
|
|
|
- json.push(record)
|
|
|
- if(json.length == 500){
|
|
|
- console.log(JSON.stringify(json))
|
|
|
- }
|
|
|
+ // let record = {'id':'10001','distance':aveAccuracy}
|
|
|
+ // json.push(record)
|
|
|
+ // if(json.length >= 350){
|
|
|
+ // console.log(JSON.stringify(json))
|
|
|
+ // }
|
|
|
if(aveAccuracy < R){
|
|
|
- aveAccuracys.set(key,aveAccuracy)
|
|
|
- }
|
|
|
- })
|
|
|
- //理想情况下只有两个信标的信号,刚好匹配为一组
|
|
|
- //判断编号是奇数偶数
|
|
|
- let result = ''
|
|
|
- for(let key of aveAccuracys.keys()){
|
|
|
- let num = parseInt(key)
|
|
|
- if(num % 2 == 0){
|
|
|
- if(aveAccuracys.has(String(num - 1))){
|
|
|
- num--
|
|
|
- result = key + num
|
|
|
- break
|
|
|
+ if(prologue.includes(key)){
|
|
|
+ signSelect[0] += 1;
|
|
|
+ }else if(annexHall.includes(key)){
|
|
|
+ signSelect[1] += 1;
|
|
|
+ }else if(mainHall.includes(key)){
|
|
|
+ signSelect[2] += 1;
|
|
|
}
|
|
|
- }else if(aveAccuracys.has(String(num + 1))){
|
|
|
- num++
|
|
|
- result = key + num
|
|
|
- break
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
+ })
|
|
|
+ //对小于预设半径的信号进行数量投票
|
|
|
+ let result = BeaconUtils.maxIndex(signSelect);
|
|
|
console.log('result',result);
|
|
|
- for(let i = 0; i < area.length; ++i){
|
|
|
- if(area[i].includes(result)){
|
|
|
- console.log(i)
|
|
|
- }
|
|
|
- }
|
|
|
this.setData({
|
|
|
classfiy,
|
|
|
status:'2'
|