The GEOLOC webservice is totally FREE and allow to find a place or POI and the distance from a GPS coordinate via a REST webservice.
It uses (free) data from Geonames that are imported into a local database.
You can see an example of use bellow. You can find documentation on how to use the XML API of the webservice and see how to download and install Gisgraphy.
You can use this interface to call the webservice and see the output.