WiFi location scrambling could hide the location better
The location scrambling used by the WiFi provider to provide city level accuracy currently could allow a potential attacker to obtain the unscrambled location if given enough samples of the scrambled location. Currently only the latitude is scrambled and there are only 6 possible variations of it. The unscrambled location can be obtained by calculating the center of the two locations that are 6km apart.
Using a more fine grained random translation of the location will not solve this issue as it would still be possible to determine the center point if given enough samples.
A better way of scrambling the location would be to round the latitude to the next "full" kilometer in a 1km (or larger) grid: latitude = round(latitude / LATITUDE_IN_KM) * LATITUDE_IN_KM
. The only way to extract more precise location information from this would require the original location to be on the grid lines such that different location requests could return different grid cells. This problem decreases the larger the grid cells become, because there are fewer grid lines.
Something similar would have to be done for longitude, which is currently not scrambled at all.