Twitter提供了一个API,用于获取任何给定位置的位置对象。根据{{3}}上的Twitter API文档:
“给定纬度和经度对,IP地址或名称,此请求将返回更新状态时可用作place_id的所有有效位置的列表。”
API返回一个位置对象。我特别感兴趣的是获取该位置的边界坐标,该坐标可以是包含在位置对象中的点或多边形。然后,我将使用它来检查用户的位置是否位于纽约的其他位置。
现在,对于任何用户,都可以使用Twitter API获取他的个人资料。 API返回一个json对象,该对象包含用户的位置,该对象基本上是一个字符串,例如“San Francisco,CA”。可以将此位置传递给上面提到的地理搜索API,以获取定义用户位置的多边形的坐标。
我正在使用twitter4j库来做同样的事情。方法'searchPlaces()'对应 twitter的/ geo / search API并将GeoQuery对象作为参数。但是,GeoQuery对象只有两个采用GeoLocation的构造函数,即纬度,经度信息或ip地址。
https://dev.twitter.com/docs/api/1/get/geo/search
从GET geo / search API中可以看出,所有参数都是可选的。但是,在GeoQuery类中仅提供两个构造函数会强制其中一个提供纬度和经度值或ipaddress。我所拥有的是用户位置的字符串。
有人可以帮助我解释为什么twitter4j和twitter API之间存在这种差异。此外,有人可以建议其他方式来查找某些Twitter用户是否来自纽约。
PS:任何尝试对用户的位置进行地理编码以获取lat,long也需要GeoQuery对象,这又需要lat,很长时间,我似乎也无法弄清楚如何做到这一点。先谢谢。
答案 0 :(得分:1)
我也遇到过这个。解决方法是:
GeoQuery geo = new GeoQuery((String)null);
geo.setQuery("New York")