问题
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.
回答1:
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
回答2:
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.
回答3:
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.
回答4:
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);
});
回答5:
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
回答6:
Nominatim Search Service from MapQuest Open API is free and has no request limit (soft limit of 1/sec).
http://open.mapquestapi.com/nominatim/v1/reverse.php?format=json&lat=44.0776182&lon=-92.5296981
TOS can be found here
回答7:
Take a look at Geocoda - free for up to 1K forward or reverse geocoding calls per month, reasonably priced for more.
Update Feb. 2019 - Geocoda is now closed.
来源:https://stackoverflow.com/questions/3513134/how-to-reverse-geocode-without-google