0

我试图通过获取具有相同 id1,1d2 的 2 个信标的距离来了解我所在的楼层,并且信标 1 的 id3 为 1,信标 2 的 id3 为 2 ......但我的代码不起作用:(。 ..我在编程方面不是很好,我不知道如何使用 altbeacon 的大部分功能或方法.. 有人可以帮助我如何获取信标的距离并根据 2 个信标的距离做出条件.. ..这样做有示例代码吗?

    public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {

            if((beacon.getId3().equals(Identifier.parse("1")) && beacon.getDistance() < 0.5) && (beacon.getDistance() > 5 && beacon.getId3().equals(Identifier.parse("2"))
            logToDisplay("1st floor");
            }
    }
4

1 回答 1

0

this is the math for distance

var R = 6371; // km
  var φ1 = toRad(lat1);
  var φ2 = toRad(lat2);
  var Δφ = toRad((lat2-lat1));
  var Δλ = toRad((lon2-lon1));

  var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
        Math.cos(φ1) * Math.cos(φ2) *
        Math.sin(Δλ/2) * Math.sin(Δλ/2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

  var d = R * c;

  // printing distance to 2 decimal points in KM
  $("#distance").append(d.toFixed(2) + " Km")

you will need to get the distance of the two beacons, save them to a variable and then write something like this

var beacon1 = foo
var beacon2 = baa   
if ( beacon1 - beacon2 <= 0.5 ) {
            do something 
       } else {
      do something else 
      }
于 2014-10-05T20:21:19.900 回答