如何获得2个信标的距离并根据该距离制定条件

时间:2014-10-05 20:13:05

标签: android android-ibeacon altbeacon

我试图通过获得相同id1,1d2的2个信标的距离以及信标1的id3和信标2的2来了解我所处的楼层...但是我的代码不起作用:( ...我不是很好的编程,我不知道如何使用altbeacon的大部分功能或方法....有人可以帮助我如何获得信标的距离,并建立一个condtion基础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");
            }
    }

1 个答案:

答案 0 :(得分:0)

这是距离的数学

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")

你需要获得两个信标的距离,将它们保存到一个变量然后写下这样的东西

var beacon1 = foo
var beacon2 = baa   
if ( beacon1 - beacon2 <= 0.5 ) {
            do something 
       } else {
      do something else 
      }