Yesterday and today, I’ve been working on improving the reverse geocoding functionality in Ferocity. And by improving, I mean fixing. Because it currently doesn’t work in a lot of places.
I’ve put the code I’ve been working on up on Gist for those who are interested.
There are a few issues with reverse geocoding.
- GPS isn’t that accurate in cities.
- The W3C geolocation API doesn’t always accurately reflect a recent GPS reading. Imagine, you get your phone out, take a photo with geotagging turned on. The phone locks the location and adds that to the photo metadata. You then go into a shop nearby for half an hour, go out a different exit than you went in, then use the W3C geolocation API on a web app. There’s no guarantee that the phone will have updated the GPS fix and may return the old one from half an hour ago.
- Producing a decent reverse geocoding is hard. If I told you I was standing at The Arcade, Somers Town, London, that’s not a very useful description. If I told you that I was standing outside St Pancras railway station, that’s far more useful. Our psychogeography differs from what a computer can infer from OpenStreetMap. Especially in London.
Solving the third problem may require a bit more work. Eventually, I’m planning to build an OSM-based check-in application which would use the points of interest in OSM to allow you to check-in. (I’m someway to building it already.) That’d solve the problem quite neatly.