1

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

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

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

现在,任何用户都可以使用 twitter API 获取他的个人资料。API 返回一个包含用户位置的 json 对象,该位置基本上是一个字符串,例如“旧金山,CA”。可以将此位置传递给上述地理搜索 api,以获取定义用户位置的多边形的坐标。

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

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

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

有人可以帮我解释一下为什么 twitter4j 和 twitter API 之间存在这种差异。另外,有人可以建议一些其他方法来查找某个 twitter 用户是否来自纽约。

PS:任何对用户位置进行地理编码以获得纬度、经度的尝试也需要 GeoQuery 对象,该对象又需要经度、经度,我似乎也无法弄清楚如何做到这一点。

提前致谢。

4

1 回答 1

1

我也遇到过这种情况。一种解决方法是:

GeoQuery geo = new GeoQuery((String)null);
geo.setQuery("New York")
于 2014-11-11T13:39:32.993 回答