2014-10-05 43 views
0

我试图通过获取2个信标与相同的id1,1d2的距离和id3为信标1 1和2的信标2 ...但我的代码不工作:(...我不是很好的编程,我不知道如何使用altbeacon的大部分功能或方法....有人可以帮我获得标距离,并在2个信标的距离的condtion基地....是否有这样一个示例代码?如何获得2个信标的距离,并在这个距离作出condtion基地

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

什么“不工作”你的代码?你需要更具体,是否崩溃,是不是被调用,是否是别的? – panini 2014-10-05 20:15:57

+0

logtoDisplay没有被调用....我使用2个手机在我手上测试它有1找到altbeacon的应用程序知道2个信标的距离,并确保在<5距离信标1和> 5在另一只手中同时在灯塔2米我有一个手机与我的应用程序,将不会显示任何在测距活动 – KB24 2014-10-05 20:23:34

回答

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

您将需要获得两个信标之间的距离,将它们保存到一个变量,然后写类似这样

+0

这是为altbeacon? ....因为有一个beacon.distance()在altbeacon库和它的工作正常,但我的问题是当我试图让我condtion两个信标涉及其不工作 – KB24 2014-10-05 21:02:08