如何在没有Google的情况下反转地理编码?

除Google Maps API以外,是否还有任何networking服务(付费或免费)可让您反向地理编码?

我的具体应用程序将有权访问经纬度,我需要能够获得美国邮政编码或州。

我无法使用Google的原因是,服务条款似乎表明,如果您使用Google Maps API,则需要使用这些数据来显示Google地图。

如果相关,我正在使用C#.Net框架。

Geonames可以给你一个地名:

http://ws.geonames.org/findNearbyPlaceName?lat=40.65&lng=-73.78

或一个邮政编码:

http://ws.geonames.org/findNearbyPostalCodes?lat=40.65&lng=-73.78

只要您信任它们,每天只需要less于15000次查询就可以免费使用。 如果你需要更多,你可以付钱 。

我不是MS的粉丝。 但请检查: http : //msdn.microsoft.com/en-us/library/ff859477.aspx

RESTful Location服务API似乎没有任何限制。

您可以使用用户通过Point API查找位置: http : //msdn.microsoft.com/en-us/library/ff701710.aspx

我尝试了geoNames的样本,结果对我来说还不够好,因为我需要县信息,响应时间很慢。

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://ws.geonames.org/countryCode', { lat: position.coords.latitude, lng: position.coords.longitude, type: 'JSON', username: 'demo' }, function (result) { console.log(result); }); 

从MapQuest Open API提供的Nominatimsearch服务是免费的,没有请求限制(软限制为1 /秒)。

http://open.mapquestapi.com/nominatim/v1/reverse.php?format=json&lat=44.0776182&lon=-92.5296981

服务条款可以在这里find

看看Geocoda – 每月最多1K转发或反向地理编码呼叫,合理定价更多。

ArcGIS提供免费(和付费)API:

https://developers.arcgis.com/rest/geocode/api-reference/geocoding-reverse-geocode.htm

它提供给定位置的地址(经纬度)。 它甚至不需要一个API密钥,但是他们build议你得到一个免费的,以避免费率限制。

以下是一个示例API调用,带有JSON响应:

http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/reverseGeocode?location=4.366281%2C50.851994&langCode=fr&outSR=&forStorage=false&f=pjson