我在ios的Beacons幫助下開發室內導航系統。現在我們有3個Bluecast信標,而且我沒有從這三個信標獲得準確的距離。我已經通過將三個信標放在同一位置進行測試,但它在主要時間顯示不同的距離和rssi值。計算精確的Ibeacon距離
我試過與信標提供程序顯示應用程序和我自己的應用程序相同,但是這兩個應用程序都顯示相同的值。
示例代碼
locationManager = CLLocationManager()
locationManager.delegate = self
let uuid = UUID(uuidString: uuidStr)
beaconRegion = CLBeaconRegion(proximityUUID: uuid!, identifier: "Beacones")
beaconRegion.notifyOnEntry = true
beaconRegion.notifyOnExit = true
locationManager.requestAlwaysAuthorization()
locationManager.startMonitoring(for: beaconRegion)
locationManager.startUpdatingLocation()
距離計算器邏輯是在下面
public func calculateAccuracy(txPower : Double, rssi : Double) -> Double {
if (rssi == 0) {
return -1.0; // if we cannot determine accuracy, return -1.
}
let ratio :Double = rssi*1.0/txPower;
if (ratio < 1.0) {
return pow(ratio,10.0);
}
else {
let accuracy :Double = (0.89976)*pow(ratio,7.7095) + 0.111;
return accuracy;
}
}