我试图通过获得相同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");
}
}
答案 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
}