如何在离子3中获得最接近的美恩



当前我正在与IBEACONS合作,到目前为止,已经设法扫描并将其显示在屏幕上。但是后来我被告知要扫描并显示仅最近的一个(最接近一个(,然后忽略所有其他。有人可以给我一个大概的想法,如何在我拥有的一堆信标中获得最接近的信标?

我相信,在这种情况下,我无法使用邻近性和准确性,因为它们经常会波动。

基本上,我还没有弄清楚如何使用逻辑:

onBeaconsDiscovered() {
    this.delegate.didRangeBeaconsInRegion().subscribe( data => {
      if (data.beacons !== null) {
        let nearestBeacon = // { code for detecting the nearest beacon }
        // then show up a notification / alert / toast ...
      }
    });
  }

请帮忙!我感谢每个主意。

您可以在此处看到我在本机Swift代码中执行此操作的答案:Swift查找rssi

的最接近信标

这是该快速代码的直接翻译为JavaScript:

 var closestBeacon = null;
 for (var beacon in data.beacons) {
   if (beacon.rssi < 0 && closestBeacon != null && beacon.rssi > closestBeacon.rssi) {
     closestBeacon = beacon;
   }
 }

请记住,this.delegate.didRangeBeaconsInRegion().subscribe( data => {回调将每秒发生一次。因此,如果您想根据最近的信标发布警报,您还需要注意不要每一秒钟弹出新的警报。

如果您想跟踪已经处理的信标,则可以在回调之外的某些类似全球的范围中声明一个新对象:

  var triggeredBeacons = {};

然后,在您在信标上进行任何处理之前,根据信标标识符构建字符串键,并确保其之前没有触发:

  var beaconIdentifiers = beacon.uuid + " " + beacon.major + " " + beacon.minor;
  if (triggeredBeacons[beaconIdentifiers] == true) {
    // beacon has already triggered.  Ignore it
  }
  else {
    triggeredBeacons[beaconIdentifiers] = true;
    // Put your beacon processing here
  }

相关内容

  • 没有找到相关文章

最新更新