RSSI fingerprinting and weighted centroid calculation/trilateration are well-known techniques for Wi-Fi positioning. In RSSI fingerprinting, the set of observed access points and their respective measured RSSI values is associated with a particular position. This is done, by means of a survey, for a number of positions and the set of access points and RSSI values is referred to as a fingerprint. When it comes to positioning a device, the set of measured access points and their RSSI values is compared with those previously surveyed fingerprints and the final position estimate is based on the positions of the most closely matching fingerprints. In weighted centroid positioning, estimates of access point locations are averaged to yield a position estimate for the user. The calculation is likely to be a weighted average, based on the estimated signal path loss from each of the access points. According to some respects, these well-known positioning techniques represent the two extremes of the trade-off between database size and accuracy. More particularly RSSI fingerprinting is very accurate, but requires a large database to implement. Weighted centroid positioning uses much less memory to implement, but is not very accurate. Accordingly, a need remains in the art for improved Wi-Fi positioning techniques.