CLProximity не сообщит расстояние в метрах это будет просто дать вам цените в
CLProximityUnknown,
CLProximityImmediate,
CLProximityNear,
CLProximityFar
Чтобы найти расстояние в метрах (например, маяк находится в диапазоне 15 метров), вам нужно посмотреть this документ. Формула # 19 на странице 3 и в основном он делает это:
Received Signal Strength is related to distance using the equation below.
RSSI [dBm] = -10n log10 (d) + A [dBm]
Где
является мощность принимаемого сигнала в дБм на 1 метр - вам нужно калибровать это в вашей системе. Поскольку вы калибруете на известном расстоянии, вам не нужно учитывать частоту вашей передачи, и это упрощает уравнение. (Просто поместите IBeacon в пределах 1 метра, и измерить его RSSI)
п является распространение pathloss показатель т.е. 2,7 до 4,3 (Свободное пространство имеет п = 2 для справки, если есть стены будет больше).
dрасстояние от отправителя в метрах
Так у вас есть все значения, кроме г, вам нужно вычислить д с использованием упомянутой формулы.
EDIT: Точность
CoreLocation также предоставляет accuracy
свойство для CLBeacon
. Вы правы, это предусмотрено в метрах, но показывает, насколько точны измерения.
В вашем случае это показывает, что близорукость маяка CLProximityNear, и точность равна +/- 0,32 м.
Вот документация о accuracy
/*
* accuracy
*
* Discussion:
* Represents an one sigma horizontal accuracy in meters where the measuring device's location is
* referenced at the beaconing device. This value is heavily subject to variations in an RF environment.
* A negative accuracy value indicates the proximity is unknown.
*
*/
@property (readonly, nonatomic) CLLocationAccuracy accuracy;
спасибо за ответ l0gg3r, но когда я получаю значения от маяка я вижу что-то вроде этого 'близости: 2 +/- 0.32m' в том, что и можно увидеть 0.32m показаны, есть ли способ получить доступ к этому значению? –
@CodingISLife да, конечно, это свойство точности, см. Мое редактирование. – l0gg3r
спасибо, можем ли мы построить связь между точностью и расстоянием? –