如何在没有谷歌地图的情况下进行反向地理编码?

57

除了Google Maps API以外,还有任何允许你进行反地理编码的网络服务(付费或免费)吗?

我的特定应用程序将可以访问纬度和经度,我需要能够获得美国邮政编码或州名。

我不能使用Google是因为其服务条款似乎表明如果您使用Google Maps API,则需要使用数据来显示Google地图。

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

7个回答

44

如果您遇到速率限制,请使用商业Nominatim服务,例如locationiq.org - kouton

11


9

+1 哇,谢谢。我一定会研究这个的。 - jessegavin
2
进一步查看,如果该数据用于需要用户名/密码的商业应用程序,则需要付费。 http://www.microsoft.com/maps/product/licensing_for_enterprise.aspx - jessegavin
有趣!我想知道在http://msdn.microsoft.com/en-us/library/ff859477.aspx中声明“不计费”对REST位置API有什么意义。 - xueru
在我提供的链接中说明了什么是可计费的:可计费与不可计费的交易可计费交易是指根据商业(企业)许可协议而收取费用的交易。非可计费交易不会根据商业许可协议收费。但是,非可计费交易仍然记录下来,以便为您提供有关应用程序使用情况的信息。 - xueru
请查看以下内容:http://developers.cloudmade.com/projects/show/geocoding-http-api,http://cloudmade.com/select/mobile。 - xueru

8

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);
});

1
顺便提一下,geonames挂了。 - handsome
@handsome 感谢您指出。API已经迁移到https://secure.geonames.org/countryCode。 - rahulroy9202

6

4

他们现在增加了每月15000美元的限制。 - kouton
@kouton 我认为如果你想依赖这样的API,最好支持几个替代方案而不是只有一个,这样如果一个服务崩溃了,也不会影响到你的服务。如果这比其他服务提供更好的结果,那么在达到限制后,在本月的其余时间里使用其他服务对我来说也没问题。我只是不确定这些服务之间是否存在真正的质量差异。有没有一种比较它们的方法? - inf3rno
很抱歉,没有简单的方法。我们已经转而使用locationiq.org - kouton

1

请看Geocoda - 免费提供每月最多1K次正向或反向地理编码调用,更多调用需付费。

2019年2月更新 - Geocoda现已关闭。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接