'beacon.disance' не работает в моем приложении для маяков?

Я пытаюсь разработать небольшое приложение для тестирования маяков Estimote. Я нашел фрагменты кода, которые отлично работают с моим iPad: для каждого маяка в комнате отображаются значения uuid, Major, Minor и Proximity. Но команда «beacon.distance» возвращает «неопределенное» значение в моем приложении. Может кто-нибудь сказать мне, почему?

К вашему сведению, я использую Jquery и платформу PhoneGap Build.

СПАСИБО заранее! Ваше здоровье

var app = (function()
{

var app = {};

var regions = [ {uuid:'B9407F30-F5F8-466E-AFF9-25556B57FE6D'} ];

var beacons = {};

var updateTimer = null;

app.initialize = function()
{
    document.addEventListener('deviceready', onDeviceReady, false);
};

function onDeviceReady()
{

    window.locationManager = cordova.plugins.locationManager;

    startScan();

    updateTimer = setInterval(displayBeaconList, 500);
}

function startScan()
{

    var delegate = new locationManager.Delegate();

    delegate.didRangeBeaconsInRegion = function(pluginResult)
    {

        for (var i in pluginResult.beacons)
        {
            var beacon = pluginResult.beacons[i];
            beacon.timeStamp = Date.now();
            var key = beacon.uuid + ':' + beacon.major + ':' + beacon.minor;
            beacons[key] = beacon;
        }
    };

    delegate.didStartMonitoringForRegion = function(pluginResult)
    {
        //console.log('didStartMonitoringForRegion:' + JSON.stringify(pluginResult))
    };

    delegate.didDetermineStateForRegion = function(pluginResult)
    {
        //console.log('didDetermineStateForRegion: ' + JSON.stringify(pluginResult))
    };

    locationManager.setDelegate(delegate);

    locationManager.requestAlwaysAuthorization();

    for (var i in regions)
    {
        var beaconRegion = new locationManager.BeaconRegion(
            i + 1,
            regions[i].uuid);

        // Start ranging.
        locationManager.startRangingBeaconsInRegion(beaconRegion)
            .fail(console.error)
            .done();

        // Start monitoring.
        // (Not used in this example, included as a reference.)
        locationManager.startMonitoringForRegion(beaconRegion)
            .fail(console.error)
            .done();
    }
}

function displayBeaconList()
{
    $('#found-beacons').empty();

    var timeNow = Date.now();

    $.each(beacons, function(key, beacon)
    {
        if (beacon.timeStamp + 60000 > timeNow)
        {
            var rssiWidth = 1; 
            if (beacon.rssi < -100) { rssiWidth = 100; }
            else if (beacon.rssi < 0) { rssiWidth = 100 + beacon.rssi; }

            var element = $(
                '<li>'
                +   '<strong>UUID: ' + beacon.uuid + '</strong><br />'
                +   'Major: ' + beacon.major + '<br />'
                +   'Minor: ' + beacon.minor + '<br />'
                +   'Proximity: ' + beacon.proximity + '<br />'
                +   'RSSI: ' + beacon.rssi + '<br />'
                +   'Distance: ' + beacon.distance + ' m<br />'                 
                +   '<div style="background:rgb(255,128,64);height:20px;width:'
                +       rssiWidth + '%;"></div>'
                + '</li>'
            );

            $('#warning').remove();
            $('#found-beacons').append(element);
        }
    });
}

return app;
})();

app.initialize();

person Biotripacer    schedule 29.07.2015    source источник
comment
Какой именно плагин PhoneGap?   -  person heypiotr    schedule 29.07.2015
comment
Я уже протестировал с помощью плагинов Proximity Beacon и Bluetooth LE phonegap.   -  person Biotripacer    schedule 29.07.2015


Ответы (1)


Расстояние вычисляется по значению rssi.

У вас есть значение rssi?

Если да, вы можете использовать колебание диапазона ibeacon Radius Networks, чтобы вычислить расстояние от rssi .

person Kcm    schedule 29.07.2015
comment
Большое спасибо, Kcm, но по коду из вашей ссылки, как получить значение TxPower? - person Biotripacer; 29.07.2015