How to reverse geocode without Google? [closed]
Are there any web services (paid or free) out there besides the Google Maps API which allow you to reverse geocode?
My particular application will have access to a latitude and longitude and I need to be able to get the US Zip Code or State.
The reason I can't use Google is that the Terms of Service seems to indicate that if you use Google Maps API, you need to use the data to display a Google map.
I am using C# .Net framework in case that's relevant.
I use http://nominatim.openstreetmap.org for reverse lookups, it's very easy to use:
http://nominatim.openstreetmap.org/reverse?format=json&lat=54.9824031826&lon=9.2833114795&zoom=18&addressdetails=1
Geonames can give you either a placename:
http://ws.geonames.org/findNearbyPlaceName?lat=40.65&lng=-73.78
or a zip code:
http://ws.geonames.org/findNearbyPostalCodes?lat=40.65&lng=-73.78
It's free as long as you credit them and you need fewer than 15000 lookups per day. You can pay if you need more.
I am not a fan of MS. But check this out: http://msdn.microsoft.com/en-us/library/ff859477.aspx
RESTful Location Service API does not seem to post any restriction.
You can user Find Location By Point API: http://msdn.microsoft.com/en-us/library/ff701710.aspx
I tried out the sample for geoNames, the result is not good enough for me as I need county information, and the response time is slow.
openstreetmap:
$.getJSON('https://nominatim.openstreetmap.org/reverse', {
lat: position.coords.latitude,
lon: position.coords.longitude,
format: 'json',
}, function (result) {
console.log(result);
});
geonames:
$.getJSON('https://secure.geonames.org/countryCode', {
lat: position.coords.latitude,
lng: position.coords.longitude,
type: 'JSON',
username: 'demo'
}, function (result) {
console.log(result);
});
ArcGIS provides a free (and paid) API:
https://developers.arcgis.com/rest/geocode/api-reference/geocoding-reverse-geocode.htm
It provides an address for a given location (lat/lon). It doesn't even require an API key, but they suggest you get a free one to avoid rate limits.
Here is an example API call, with a JSON response:
http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/reverseGeocode?location=4.366281%2C50.851994&langCode=fr&outSR=&forStorage=false&f=pjson