My family moved to a new house about 30 miles from our old house. But when leaving my new house, Google Maps would give directions starting from my old house!
Finally I figured out the problem (thanks to a website that's now gone). Apparently when Google Street View cars drive around the world mapping everything, they also collect the locations, SSID, and router MAC address of every WiFi hotspot they encounter. When Google Maps (or maybe any app) wants to find your phone's location, it first checks whether you are connected to a WiFi hotspot. If you are, then it queries Google's servers to find out where that hotspot is located. If this data is found, then your phone uses that as your location, rather than turning on the battery-hungry GPS antenna.
Why does this cause a problem? Because when I moved I brought my router with me to my new house. Our phones connect to the same router, with the same MAC address and the same SSID, and so Google's servers tell our phones that we're at our old house.
Google apparently has no way for people to update the location of their WiFi hotspot. And this probably makes sense, since it would be impossible to verify who owns which hotspots. There are ways to prevent Google from assigning a location to your hotspot in the first place, but in my case it's too late for that. So, as far as I can tell, there are four possible solutions:
Update: The problem fixed itself after about 6 weeks. A Google Street View car must've driven by my house and picked up the WiFi hotspot.
-P.J.