Geolocation 仅使用地理位置处理twitter4j查询

Geolocation 仅使用地理位置处理twitter4j查询,geolocation,processing,twitter4j,Geolocation,Processing,Twitter4j,嗯。每次我们只收到100条推特。我想根据地理位置在地图上显示它们。有没有办法让我得到100条推文,所有推文都有地理位置。因为现在100人中只有3-4人有地理定位 我阅读了一些FilterQuery的示例,但处理过程中出现了一个错误,原因是未知。import twitter4j.conf.*; 导入twitter4j.*; 导入twitter4j.auth.*; 导入twitter4j.api.*; //导入twitter4j.FilterQuery; 导入java.util.*; 推特; Str

嗯。每次我们只收到100条推特。我想根据地理位置在地图上显示它们。有没有办法让我得到100条推文,所有推文都有地理位置。因为现在100人中只有3-4人有地理定位

我阅读了一些FilterQuery的示例,但处理过程中出现了一个错误,原因是未知。

import twitter4j.conf.*;
导入twitter4j.*;
导入twitter4j.auth.*;
导入twitter4j.api.*;
//导入twitter4j.FilterQuery;
导入java.util.*;
推特;
String searchString=“购物”;
查询;
ArrayList推文,推文2;
无效设置()
{
帧率(0.2);
tweets=newarraylist();
ConfigurationBuilder cb=新的ConfigurationBuilder();
cb.setOAuthConsumerKey(“*”);
cb.SetOAuthConsumerCret(“*”);
cb.setOAuthAccessToken(“*”);
cb.setOAuthAccessTokenSecret(“*”);
twitter=newtwitterfactory(cb.build()).getInstance();
查询=新查询(搜索字符串);
getNewTweets();
}
作废提款()
{
试一试{
if(current>=tweets.size())//如果读取所有接收到的tweets,则进行新查询
{  
tweets.clear();
tweets2.clear();
getNewTweets();
电流=0;
}
状态currentTweet=(状态)tweets.get(当前);
GeoLocation loc=currentTweet.getGeoLocation();
用户currentUser=(用户)currentTweet.getUser();//获取用户信息
双纬度=currentTweet.getGeoLocation().getLatitude();
双经度=currentTweet.getGeoLocation().getLength();
println(“经度:+经度);
println(“纬度:+纬度);
字符串user=currentUser.getScreenName();
字符串msg=currentTweet.getText();
println(“用户:”+用户);
println(“消息:“+msg”);
}
捕获(特例te){
println(te);
}
}
void getnewweets()
{
尝试
{
//FilterQuery filtro=新建FilterQuery();
/*过滤位置(边界框);
addListener(listener);
twitter.filter(filtro);
*/
query.setCount(100);//设置每页返回的tweet数
QueryResult result=twitter.search(查询);
tweets2=(ArrayList)result.getTweets();
对于(inti=0;i
以下是一个工作示例。这是使用twitter4j 4.0.2进行测试的

界面StatusListener是你可以用你的推文做任何你想做的事情的地方。。。他们到了吗

使用流API:

import twitter4j.util.*;
导入twitter4j.*;
导入twitter4j.管理。*;
导入twitter4j.api.*;
导入twitter4j.conf.*;
导入twitter4j.json.*;
导入twitter4j.auth.*;
推特流推特流;
双[][]边界框={
{
-180, -90
}
, {
180, 90
}
}; /// 全世界;
无效设置(){
大小(100100);
背景(0);
openTwitterStream();
}  
void draw(){
背景(0);
}  
//流式传输
void openTwitterStream(){
ConfigurationBuilder cb=新的ConfigurationBuilder();
cb.setOAuthConsumerKey(填写);
cb.SetOAuthConsumerCret(填写);
cb.setOAuthAccessToken(填写);
cb.setOAuthAccessTokenSecret(填写);
TwitterStream TwitterStream=新建TwitterStreamFactory(cb.build()).getInstance();
twitterStream.addListener(listener);
FilterQuery filter=新建FilterQuery();
过滤器。位置(边界框);
twitterStream.filter(filter);
println(“关联”);
} 
//实现StatusListener接口
StatusListener=新建StatusListener(){
//@凌驾
公共无效状态(状态){
GeoLocation loc=status.getGeoLocation();
System.out.println(“@”+status.getUser().getScreenName()+”-“+loc”);
}
//@凌驾
删除通知的公共作废(状态删除通知状态删除通知){
System.out.println(“获得状态删除通知id:+statusDeletionNotice.getStatusId());
}
//@凌驾
公开无效onTrackLimitationNotice(int NumberOfLimitedStatus){
System.out.println(“获得跟踪限制通知:+numberoflimitedstatus”);
}
//@凌驾
onScrubGeo上的公共无效(长用户ID、长状态ID){
System.out.println(“Get-scrub\u geo事件用户ID:+userId+”upToStatusId:+upToStatusId”);
}
//@凌驾
安装警告(安装警告)中的公共无效{
System.out.println(“得到失速警告:+警告”);
}
//@凌驾
公共无效OneException(例外情况除外){
例如printStackTrace();
}
};
不是答案,而是简单的解决方法:

我知道大多数人在推特时没有启用GPS,其他人不想分享他们的位置

但是他们仍然在共享他们的位置!!你猜怎么着?在他们的个人资料上!他们的家乡,他们的国家大部分都是可见的,这可以给你一个推特来自哪里的大致位置!您可以使用RESTAPI查询用户的配置文件以及他/她的位置


twitter.showUser(userScreenName.getLocation()

我认为如果在搜索之前设置地理代码,那么大多数结果都会有地理位置(高达90%)。但我不知道为什么地理定位的结果不是全部。也许会有点帮助

   GeoLocation obj = new GeoLocation(35.8007019, -97.3383211);
   query.setGeoCode(obj, 2000, Unit.valueOf("km"));
   result = twitter.search(query);

请发布您的代码,并说出它引发的错误。使用流API的一种方法:我相信这种方法可以获得所有推文,并且只添加带有地理位置数据的推文,因此无论是否带有地理位置数据,您仍然可以获得100个结果。但我不知道是否可以使用搜索API仅获取具有地理位置的。仅通过如上所述使用流API。我的尝试没有成功…是的,你是对的。我得到了所有的推文,然后添加了