I answered this in another thread, repeating it here.
In line-of-sight (no obstacles causing change in RSSI), -6dB seems to be double the distance.
If you at 1m distance read RSSI -40dB then 2m gives -46dB, 4m gives -52dB, 8m gives -58dB, 16m gives -64dB.
You can not get an exact position, only a circular maximum distance.
Using triangulation with 2-3 or more devices you get a much more accurate positioning result.
You can get this purely from Advertisement packages but you must either Disable scan -> Enable scan or tell iOS CoreBluetooth to report all adv packages.
In foreground mode you can do this but in background mode you can't get all adv packages. You must connect and read RSSI to do it in the background.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…