使用 twitter4j 获取用户位置的地点对象



Twitter 提供了一个 API,用于获取任何给定位置的 place 对象。根据 https://dev.twitter.com/docs/api/1/get/geo/search 上的推特 API 文档:

"给定纬度和经度对、IP 地址或名称,此请求将返回更新状态时可用作place_id的所有有效位置的列表。

API 返回一个 place 对象。我对获取该地点的边界坐标特别感兴趣,该坐标可以是包含在 place 对象中的点或多边形。然后,我将使用它来检查用户的位置是否位于其他位置,例如纽约。

现在,对于任何用户,都可以使用Twitter API获取他的个人资料。API 返回一个包含用户位置的 json 对象,该对象基本上是一个字符串,例如"旧金山,加利福尼亚州"。此位置可以传递给上面提到的地理搜索 api,以获取定义用户位置的多边形的坐标。

我正在使用twitter4j库来做同样的事情。方法 'searchPlaces((' 对应于Twitter 的/geo/search API,并将 GeoQuery 对象作为参数。但是,GeoQuery对象只有两个构造函数,它们采用地理位置,即纬度,经度信息或IP地址。

https://github.com/twitter/twitter4j/blob/master/twitter4j-core/src/main/java/twitter4j/GeoQuery.java

正如在GET地理/搜索API中所看到的,所有参数都是可选的。但是,如果在 GeoQuery 类中仅提供两个构造函数,则会强制其中一个构造函数提供纬度和经度值或 IP 地址。相反,我拥有的是用户个人资料中用户位置的字符串。

有人可以帮我解决为什么 twitter4j 和 Twitter API 之间存在这种差异吗?另外,有人可以建议其他方法来查找某些推特用户是否来自纽约。

PS:任何对用户的位置进行地理编码以获取纬度,长度的尝试都需要地理查询对象,该对象再次需要纬度,长,我似乎也无法弄清楚如何做到这一点。

提前谢谢。

我也遇到了这个问题。解决方法是:

GeoQuery geo = new GeoQuery((String)null);
geo.setQuery("New York")

最新更新