【问题标题】:How can I get city name from coordinates [unlimited requests]?如何从坐标 [无限请求] 中获取城市名称?
【发布时间】:2018-01-20 10:48:27
【问题描述】:

我需要从用户的 GeoLocation 中获取城市名称。我知道 Google 的反向地理编码服务,但它限制每天 2500 个请求。

是否有一项服务可以无限量请求,或者是否有任何替代有效的方式将坐标映射到城市?

【问题讨论】:

  • 这不是编码问题
  • 有一些像 geonames.org 这样的服务,但我认为你必须为所有这些服务的无限请求付费
  • @darkermuffin 如果您尝试解决此问题,请随时在 cmets 中更新 :)

标签: javascript google-maps


【解决方案1】:

您可以使用基于 OpenStreetMap (OSM) API 的工具进行反向地理编码。这是一个开放数据项目,所以有no pricing(尽管您可以通过捐款帮助他们)。他们确实对usage and bandwidth 有一些限制

一个这样的工具是Nominatim,您可以使用它使用纬度和经度坐标获取城市地址。这是来自链接 wiki 的示例

https://nominatim.openstreetmap.org/reverse?format=xml&lat=52.5487429714954&lon=-1.81602098644987&zoom=18&addressdetails=1

给你这个结果

<reversegeocode timestamp="Sat, 20 Jan 18 10:53:40 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright" querystring="format=xml&lat=52.5487429714954&lon=-1.81602098644987&zoom=18&addressdetails=1">
<result place_id="91015268" osm_type="way" osm_id="90394420" lat="52.54877605" lon="-1.81627033283164" boundingbox="52.5487321,52.5488299,-1.8163514,-1.8161885">

137, Pilkington Avenue, Sutton Coldfield, Birmingham, West Midlands Combined Authority, West Midlands, England, B72 1LH, United Kingdom
</result>
<addressparts>
<house_number>137</house_number>
<road>Pilkington Avenue</road>
<suburb>Sutton Coldfield</suburb>
<city>Birmingham</city>
<county>West Midlands Combined Authority</county>
<state_district>West Midlands</state_district>
<state>England</state>
<postcode>B72 1LH</postcode>
<country>United Kingdom</country>
<country_code>gb</country_code>
</addressparts>
</reversegeocode>

更新

  1. 使用前请参考Nominatim服务的usage guidelines
  2. 您还可以查看其他用于 OSM 的 search engines

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    相关资源
    最近更新 更多