如何在Java中从城市名称找到国家名称?

9

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

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

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

4个回答

10

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

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

该请求会返回一个JSON对象。然后,您可以使用您喜爱的JSON解析器解析该对象,并提取“地址组件”字段中类型为“country”的“long_name”字段。在这种情况下,它是“Indonesia”。


3
也许这是显而易见的,但你应该保持一个已知国家名称(和常见的拼写错误)的列表,这样当你不认识这个国家时,才进行 Maps API 请求。 - Chris Taylor
2
请记住,有一些使用限制,比如你必须在(谷歌)地图上显示结果... ;) - Andreas Dolk
2
很有趣 - 我没有意识到你必须在地图上显示结果。当然,他实际上并没有使用地理编码,只是将其用作非常高级的查找表。经过一秒钟的思考,虽然这是一种“快速而肮脏”的获取结果的方法,但显然不是正确的解决方案。更好的方法是构建自己的查找表(也许使用地图 API 来填充它...) - Chris Taylor

5

尝试查找具有方便许可证的资源文件或数据库(例如此处的GeoWorldMap)。无论如何,您都不会从Twitter用户那里获得精确的信息,而且他们在个人资料中写下的内容可能是错误的。因此,我建议使用静态资源并尽可能解码多个位置。


4
您可以使用谷歌地图的自动完成脚本来获取一个城市可能所在的国家。它的工作原理如下:当您输入“纽约”时,它会建议您“美国纽约”。但请记住,您并不总是能够从城市名称中得到国家名称:德国和康涅狄格州都有一个名叫柏林的城市。

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接