Я пытаюсь разработать небольшое приложение для тестирования маяков 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();