как получить расстояние 2 маяков и сделать базу условий на этом расстоянии

Я пытаюсь узнать, на каком этаже я нахожусь, получая расстояние между двумя маяками с одинаковым id1,1d2, а id3 равен 1 для маяка 1 и 2 для маяка 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");
            }
    }

person KB24    schedule 05.10.2014    source источник
comment
что не работает в вашем коде? вам нужно быть более конкретным, это сбой, это не вызывается, это что-то еще?   -  person panini    schedule 06.10.2014
comment
logtoDisplay не вызывается .... Я тестирую его, используя 2 телефона под рукой, у 1 есть приложение для поиска altbeacon, чтобы узнать расстояние до 2 маяков и убедиться, что я на расстоянии ‹ 5 в маяке 1 и › 5 метров в маяке 2 в то же время в другой руке у меня есть телефон с моим приложением, которое не будет отображать ничего в дальномерной активности   -  person KB24    schedule 06.10.2014


Ответы (1)


это математика для расстояния

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 
      }
person a-windett    schedule 05.10.2014
comment
это для альтбикона? .... потому что в библиотеке altbeacon есть beacon.distance(), и он работает нормально, но моя проблема в том, что когда я пытаюсь сделать условие с обоими задействованными маяками, он не работает - person KB24; 06.10.2014