本文章分享三点定位核心代码,以及在写的过程中发现的问题
1:三点定位,不是有三个ibeacons就可以一定都连接上,在wx.getBeacons({})就会发现轻易很难拿到三个,所以做测试多买几个ibeacons
2:网上几乎三点定位都是利用勾股定理,所以计算动点到定点距离成了关键,有2种方法
(1)这里我使用的是官方提供的距离,小程序接口自身会返回距离,这个应该也考虑rssi的波动和 衰减。
(2)还有就是根据公式测算(我感觉没有微信官方给的准确度高)

var pointBRSSi = res.devices[i].RSSI;
var iRssi = Math.abs(pointBRSSi);
var power = (iRssi-55)/(10*2.0);
var pointBDistance = Math.pow(10, power);


(3)有些代码也是拷贝来的,自己改进,简化了代码,最后一部分往出算x,y坐标的代码我也没有理解,所以最后的结果有误差。下面的代码到现在没有理解 如何计算出的坐标。取01,02,03分别为,(2,0),(2,2),(0,2)固定坐标点,做定位

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; 

js代码 可以计算出结果 但是误差很大

  predict:function(){var that=thiswx.startBeaconDiscovery({//设置ibeacons的参数uuids: ['uuid'],//连接成功success: function () {console.log("开始扫描设备")//监听iBeacon设备的更新事件wx.onBeaconUpdate(function (res) {//获取连接蓝牙设备wx.getBeacons({success: (result) => {console.log("ibacon的个数"+res.beacons.length)//rssi强度var arrayRSSI = new Array();//距离var arrayaccay = new Array();//majorvar arraymajor = new Array();//三个定点到动点的距离var pointADistance = '';var pointBDistance = '';var pointCDistance = ''; for(var i = 0; i<res.beacons.length;i++){//将距离和强度放入数组中majorarrayRSSI.push(Math.abs(res.beacons[i].RSSI));arrayaccay.push(res.beacons[i].accuracy)arraymajor.push(res.beacons[i].major)}if(arrayaccay.length > 3 || arrayaccay.length==3){//距离排序for(var i = 0 ; i < arrayaccay.length ; i ++){for(var j = i+1 ; j< arrayaccay.length ; j++){if(arrayaccay[i]<arrayaccay[j]){var select = arrayaccay[i];arrayaccay[i] = arrayaccay[j];arrayaccay[j] = select;}} }}//给三个动点赋值for(var i = 0 ; i < 3; i++){if(i==0){ pointADistance=arrayaccay[i]console.log("a距离:"+pointADistance); }if(i==1){pointBDistance=arrayaccay[i]console.log("b距离:"+pointBDistance); }if(i==2){ pointCDistance=arrayaccay[i]console.log("c距离:"+pointCDistance); }   }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 left=pointDX*10+"%"  var m = Math.pow(pointADistance,2)/10-Math.pow(pointCDistance,2)/10;pointDY = 2.5 - m; var top=pointDY*10+"%"console.log('目标所在位置X是'+top);console.log('目标所在位置Y是'+left);that.setData({left:left,top:top})}},})})},fail:function(){wx.showToast({title: '没进入设备范围',icon: 'fail',duration: 500})}}),//搜索超时   停止扫描设备setTimeout(function () {wx.stopBeaconDiscovery({success: function () {console.log("停止扫描设备!");}});}, 10000); },

希望各位大侠可以帮忙解决问题,或者有更好的解决方法可以留言或者私信我。

基于ibeacons三点定位(微信小程序)相关推荐

  1. Java课程设计基于ssm的微信小程序

    Java课程设计, 基于ssm的微信小程序 后端涉及技术spring.mysql等 效果查看请扫一扫 喜欢可以点赞哟

  2. java计算机毕业设计基于安卓Android/微信小程序的大学生签到管理系统APP

    项目介绍 随着Internet的发展,人们的日常生活已经离不开网络.未来人们的生活与工作将变得越来越数字化,网络化和电子化.网上管理,它将是直接管理签到系统app的最新形式.本论文是以构建签到系统ap ...

  3. java计算机毕业设计基于安卓Android/微信小程序的游泳馆管理系统APP

    项目介绍 游泳馆管理系统小程序,主要对首页.个人中心.会员管理.场馆类型管理.泳池类型管理.饮食类型管理.场馆信息管理.泳池信息管理.饮食信息管理.泳池预订管理.购买信息管理.会员等级管理.会员充值管 ...

  4. java计算机毕业设计基于安卓Android/微信小程序的校园闲置二手交易平台APP

    项目介绍 网络技术的快速发展给各行各业带来了很大的突破,也给各行各业提供了一种新的管理模式,校园二手交易平台小程序将是又一个从传统管理到智能化信息管理的典型案例,对于传统的校园二手交易,所包括的信息内 ...

  5. 基于SpringBoot和微信小程序的餐馆点餐系统的设计和实现

    作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue.SpringBoot和微信小程序).系统定制.远程技术指导. ...

  6. 基于安卓/android/微信小程序的学生考勤签到APP-#计算机毕业设计

    X项目介绍 目前高校大学生上课考勤管理都是任课老师上课点名,然后用纸质版考勤表来记录学生上课出勤情况,学期末再根据所有上课出勤表及作业登记表对学生平时成绩打分,最后把出勤数据整理上交到各院系,而学生请 ...

  7. 基于mpvue的微信小程序全栈保姆式教程一

    预览最终效果https://github.com/FFGF/XCDHBook/blob/master/static/XCDHBook.gif顺便推荐一个视频转gif的好工具https://ezgif. ...

  8. 【物联网初探】- 09 - 基于 ESP32 和微信小程序的土壤湿度监测【完结篇】

    文章目录 1. 硬件.接线.环境配置 2. 项目简介 2.1 初衷 2.2 技术路线 3. 实现方法 3.1 接线及电源选型 3.2 ESP32 端程序 3.2.1 源码 3.2.2 特别说明 3.3 ...

  9. java计算机毕业设计基于安卓Android/微信小程序的自来水收费系统APP

    项目介绍 网络的广泛应用给生活带来了十分的便利.所以把自来水收费管理与现在网络相结合,利用java技术建设自来水收费系统app,实现自来水收费的信息化.则对于进一步提高自来水收费管理发展,丰富自来水收 ...

  10. 基于uni-app开发微信小程序__手牵手带你开发【懂你找图】项目

    前戏 某一天的夜里,敲完了代码之后便直接倒在床上睡着了,醒来时只记得梦里的一句话:"想要成为高手,就必须要大量实践,大量做项目,必须要把自己不会的东西全部吃透,不要得过且过.",猛 ...

最新文章

  1. 趣味图形之 余弦函数cos与直线相交(另一种相交)
  2. 这是最新的人工发射wifi信号技术吗?
  3. Golang中函数不支持重载
  4. java 多线程阻塞队列 与 阻塞方法与和非阻塞方法
  5. sqlalchemy Column Elements
  6. Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
  7. ftp服务器多用文件夹权限,自己动手搭建隔离用户的FTP服务器之权限分配(二)...
  8. 凌阳单片机c语言延时函数,凌阳单片机C语言(网站整理).doc
  9. MSF之IIS6WebDAV执行漏洞复现
  10. python可以制作大型游戏_python能做游戏吗-python能开发游戏吗
  11. c#/.net操作word插入表格实例
  12. wim工具扫描linux磁盘,WimTool Pro(WIM映像处理工具)
  13. 罗振宇2017跨年演讲:我们这代人的机会在哪里?
  14. 从项目管理角度如何保证质量
  15. 2021年知到网课《艾滋病性与健康》第一单元考试答案
  16. 杰理之LINEIN 左右声道与 DACLR 输入出的注意【篇】
  17. sql文字转换全拼_SQL自定义函数:由汉字生成拼音全拼
  18. 谷歌、微软、Meta?谁才是 Python 最大的金主?
  19. andrAndroid 权限
  20. 信阳师范学院计算机老师,信阳师范学院计算机与信息技术学院导师教师师资介绍简介-冯岩...

热门文章

  1. spark Hash Shuffle内幕彻底解密
  2. 单片机c语言每隔1m闪烁一次,单片机c语言闪烁灯程序
  3. 苹果vs剪辑下载_好用的短视频制作与剪辑APP工具盘点
  4. 11.18-刷题日结
  5. DNA序列编码中Hairpin的定义和计算
  6. 设计模式原则之依赖倒转(倒置)原则
  7. 自动驾驶/机器人 SLAM算法 面经1
  8. Nginx for Mac - 苹果系统SSL证书安装
  9. [已解决]Notepad++ 无法安装HexEditor
  10. 计算机不断自动重启,电脑不断自动重启怎么办_解决电脑不断自动重启的方法...