I was looking at Date & Time preferences on my iMac and under Time Zone I checked the box where it said “Set time zone automatically using current location”, at which point a message popped up telling me to “Turn on WiFi to determine your current location”. Since my machine is connected to the router by Ethernet I don’t normally have Wi-Fi turned on and in fact I had deleted the interface in Network preferences. So I added a Wi-Fi interface and turned it on. When I went back to Date & Time preferences there was now a pin on the map marking my closest city, which it had correctly determined to be Hatfield – United Kingdom (though strictly Hatfield is a town not a city). When I unchecked the auto time zone box the pin disappeared but the closest city was still set to Hatfield, as if I had set it manually.
I still generally use Google Maps but I fired up the OS X Maps app and when I clicked on the little diagonal arrow to the left of the search box the map centred on a point about 50m from my house. At that point was a blue pulsing circular marker to indicate my most likely location. The marker was at the centre of a blue shaded circle that looked to have a radius of about 70m on the ground (it got bigger and smaller on screen as I zoomed). I assume that the shaded circle is meant to indicate uncertainty and that on an iOS device with GPS it would be smaller. Also the marker is not static, it wanders about a bit. Going back to Network Preferences and turning off Wi-Fi resulted in the marker and shaded circle immediately disappearing and when I clicked the diagonal arrow again a warning popped up saying “Cannot Show Your Location”.
I had discovered the basics of OS X Location Services, which “allows applications and websites to gather and use information based on the current location of your computer”. Your approximate location is determined “using information from local Wi-Fi networks”. Provided Wi-Fi is turned on the system will know the names of nearby access points and could guess how far away they are based on signal strength. However, it can’t estimate its own location without knowing the locations of the access points. So how does it know?
Although I do not (yet) have any iOS devices I found the answer to my question in Understanding privacy and Location Services on iPhone, iPad, and iPod touch with iOS 8. In both iOS 8 and Yosemite, Location Services can be turned on or off under privacy preferences. Assuming they are turned on then an app can request access to your location. On iOS devices Location Services can use information from cellular, Wi-Fi, Bluetooth and GPS, so if you don’t have clear line of sight to any GPS satellites your location is estimated using crowd-sourced locations of nearby Wi-Fi and cell tower locations. And how is this crowd-sourcing done? Using people’s iOS devices of course! When Location Services are turned on, “your device will periodically send the geo-tagged locations of nearby Wi-Fi hotspots and cell towers to augment Apple’s crowd-sourced database”. That seems perfectly reasonable, if you are using Location Services then you are also helping crowd-source the database that makes it all work, and it seems to work pretty well, at least where I am.
The thing is, I would like my iMac to know its location without having to turn on Wi-Fi. I know its location, right here on my desk where it has sat for nearly five years with only a couple of brief absences. It seems to me that in this situation there should be a way to manually set a location.
By the way, I found this May 2013 article by Darren Pauli which indicates that Apple’s crowd-sourced database of wireless access points contains MAC addresses rather than SSIDs. That makes sense because SSIDs are not globally unique (though it is unlikely that there will be duplicate SSIDs amongst devices within wireless range) and can change (people have been known to communicate with neighbours by updating their SSID).