如何从Java中的城市名称中查找国家/地区名称?

问题描述:

我想获取Twitter用户的国家/地区名称。如何从Java中的城市名称中查找国家/地区名称?

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

我想获取所有用户的国家名称。我怎样才能做到这一点?

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

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

它返回一个JSON对象。然后,使用您最喜欢的JSON解析器解析该解析器,然后提取“地址组件”字段的“long_name”字段,并键入“country”。在这种情况下,即“印度尼西亚”。

+0

非常感谢克里斯。 – 2012-02-16 08:02:50

+0

我知道了.. :) :) :) :) :) – 2012-02-16 08:03:38

+3

也许这是说明显而易见的,但是您应该保留一个公认的国家/地区名称(和常见拼写错误)的列表,以便您只在您执行Maps API请求时还没有认识到这个国家。 – 2012-02-16 08:04:58

您可以使用Google地图的自动填充脚本获取城市的可能国家/地区。它的工作原理是这样的:当你键入“纽约”时,它建议你“纽约,美国”。但请记住,你不能总是从城市名称中得到国名:德国和康涅狄格州都有柏林。

+1

+1,ESP。在德国和康涅狄格州的柏林。 – Ghost 2012-02-16 07:52:30

+1

感谢您的回复。 – 2012-02-16 08:02:28

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

+1

感谢您的回复。:) – 2012-02-16 08:04:12

你可以在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"