首页 文章

Api找到附近的城市[关闭]

提问于
浏览
1

我正在寻找一个api,我可以用来根据坐标或名称和国家来找到附近的城市(可能有一个按距离过滤的功能,因为附近可以解释) .

我更喜欢它是宁静的或者有一个我可以在我的.net应用程序中使用的库(包装器) .

我正在寻找一个免费的api(每天有大量的免费请求) .

我的第一个想法是谷歌和我发现了“谷歌地理编码API”,但我不打算把它放在 Map 上,所以根据我不能使用它的限制 .

其他人都知道我可以使用的其他任何东西吗?

2 回答

  • 1

    试着看GeoNames . 他们有RESTful API你可以用来做反向地理编码 . 向下滚动到"Find nearby postal codes / reverse geocoding"部分以查看实时演示 .

  • 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的数据时,您可以放心地假设您不会打扰其他用户 .

相关问题