Ionic framework 如何获得离子3中最接近的beaon

Ionic framework 如何获得离子3中最接近的beaon,ionic-framework,ibeacon,ionic-native,proximity,Ionic Framework,Ibeacon,Ionic Native,Proximity,目前我正在使用iBeacons,到目前为止,我已经成功地扫描并在屏幕上显示了它们。但是后来我被告知只扫描并显示最近的一个(最近的一个),而忽略所有其他的。有人能给我一个粗略的想法,如何在我拥有的一堆信标中找到最近的信标吗 我认为我不能在这种情况下使用接近度和准确性,因为它们经常波动 基本上,我还没有弄明白如何使用逻辑: onBeaconsDiscovered() { this.delegate.didRangeBeaconsInRegion().subscribe( data =>

目前我正在使用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代码到JavaScript的直接翻译:

 var closestBeacon = null;
 for (var beacon in data.beacons) {
   if (beacon.rssi < 0 && closestBeacon != null && beacon.rssi > closestBeacon.rssi) {
     closestBeacon = beacon;
   }
 }
然后,在对信标进行任何处理之前,根据信标标识符构造一个字符串键,并确保它以前未触发:

  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
  }

嗨,谢谢你的解决方案。是的,我也有回拨问题。那么,我们有什么方法可以暂时“暂停”该回调吗?典型的方法是跟踪您已经在globalish范围的对象中处理的所有信标。有关示例,请参见我的编辑。
  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
  }