【问题标题】:How to find Country name from city name in Java?如何从Java中的城市名称中找到国家名称?
【发布时间】:2012-03-07 14:51:12
【问题描述】:

我想获取 Twitter 用户的国家/地区名称。

为此,我从<location> 标签中获得了位置,其中一些用户写了他们的国家名称,一些写了他们的城市名称,还有一些写了他们的州名。

我想获取所有用户的国家/地区名称。我该怎么做?

【问题讨论】:

    标签: java android twitter


    【解决方案1】:

    一种方法是使用 Google Maps API(尽管它可能有点矫枉过正)。例如,假设有人将他们的国家列为“雅加达”(实际上是印度尼西亚的一个城市)。然后您将提交以下 Maps API 请求:

    http://maps.googleapis.com/maps/api/geocode/json?address=Jakarta&sensor=false

    返回一个 JSON 对象。然后,您使用您最喜欢的 JSON 解析器对其进行解析,并提取“地址组件”字段的“long_name”字段,类型为“国家”。在这种情况下,就是“印度尼西亚”。

    【讨论】:

    • 也许这是显而易见的,但您应该保留一个已识别国家/地区名称(和常见拼写错误)的列表,以便仅在您不认识该国家/地区时才执行 Maps API 请求。
    • 请记住,有一些usage limits,就像您必须在(谷歌)地图上显示结果...;)
    • 这很有趣 - 我没有意识到您必须在地图上显示结果。当然,他实际上并没有使用地理编码,只是将其用作一个非常精美的查找表。想了想,虽然这是一种“快速而肮脏”的方式来获得结果,但显然不是正确的解决方案。更好的方法是构建您自己的查找表(也许使用 Maps API 来填充它......)
    【解决方案2】:

    尝试使用方便的许可证(如GeoWorldMap from here)查找资源文件或数据库。无论如何,你不会从 Twitter 用户那里获得准确的信息,而且他们在个人资料中写的内容可能是完全错误的。所以我会使用静态资源并解码尽可能多的位置。

    【讨论】:

      【解决方案3】:

      您可以使用 Google 地图的自动填充脚本来获取城市的可能国家/地区。它的工作原理是这样的:当您键入“New York”时,它会提示您“New York, USA”。但请记住,您不能总是从城市名称中得到国家名称:德国有柏林,康涅狄格州也有。

      【讨论】:

        【解决方案4】:

        您可以在 YQL 中使用地理表: http://developer.yahoo.com/yql/console/#h=select%20*%20from%20geo.places%20where%20text%3D%22jakarta%22

        查询示例:select * from geo.places where text="jakarta"

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-27
          相关资源
          最近更新 更多