我正在寻找一个api,我可以根据坐标或名称和国家来找到附近的城市(可能有一个按距离过滤的功能,因为附近可以解释)。
我希望它是安静的,或者我可以在我的.net应用程序中使用库(包装器)。
我正在寻找一个免费的api(每天有大量的免费请求)。
我的第一个想法是谷歌,我发现了“谷歌地理编码API”,但我不打算把它放在地图上,所以根据我不能使用它的限制。
其他人知道我可以使用的其他任何人吗?
答案 0 :(得分:1)
尝试查看GeoNames。他们可以使用RESTful API进行反向地理编码。向下滚动到“查找附近的邮政编码/反向地理编码”部分以查看实时演示。
答案 1 :(得分:1)
您可以尝试使用Overpass API,它使用Open Street Map数据。我不确定它是否会完全符合您的要求,但它可能是一个开始。
以下电话会搜索城市。 bbox创建一个要在其中搜索的区域。我在下面创建的示例使用围绕英国朴茨茅斯的坐标。
http://overpass.osm.rambler.ru/cgi/xapi?node[place=city][bbox=-1.150818,50.761653,-0.987396,50.851908]
从此返回的结果提供了一些有用的数据
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2013-04-11T23:39:03Z"/>
<node id="17721995" lat="50.8065249" lon="-1.0744016">
<tag k="is_in" v="EnglaHampshire, England, UK"/>
<tag k="is_in:continent" v="Europe"/>
<tag k="is_in:country" v="United Kingdom"/>
<tag k="is_in:country_code" v="GB"/>
<tag k="is_in:county" v="Hampshire"/>
<tag k="name" v="Portsmouth"/>
<tag k="name:ru" v="Портсмут"/>
<tag k="name:sr" v="Портсмут"/>
<tag k="place" v="city"/>
<tag k="population" v="197700"/>
<tag k="url" v="http://www.visitportsmouth.co.uk"/>
</node>
</osm>
我相信可以用其他搜索功能(例如国家/地区名称)替换坐标。
编辑:
带有查询基地址http://overpass-api.de/的http://overpass-api.de/api/(4核,64 GB RAM)。 http://overpass.osm.rambler.ru/,查询基地址为http://overpass.osm.rambler.ru/cgi/(8个内核,64 GB RAM)。
两台服务器的总容量约为每天1.000.000个请求。您可以放心地假设,当您每天执行少于10,000次查询或每天下载少于5 GB的数据时,您不会打扰其他用户。