我尝试使用twitter API搜索关键字并获取该特定推文的位置,然后将其可视化到地图上。
我已经使用展开的地图和tilemill成功创建了我的地图,我只是在与twitter部分挣扎。使用twitter 4J库,我尝试了以下代码,但我无法将该位置作为坐标。此外,一旦我获得了坐标,我就不知道如何在地图上对它们进行可视化。
import twitter4j.*;
import twitter4j.api.*;
import twitter4j.auth.*;
import twitter4j.conf.*;
import twitter4j.json.*;
import twitter4j.management.*;
import twitter4j.util.*;
import twitter4j.util.function.*;
ConfigurationBuilder cb = new ConfigurationBuilder();
Twitter twitterInstance;
Query queryForTwitter;
void setup() {
cb.setOAuthConsumerKey("**********");
cb.setOAuthConsumerSecret("*******");
cb.setOAuthAccessToken("*********");
cb.setOAuthAccessTokenSecret("*********");
twitterInstance = new TwitterFactory( cb.build()).getInstance();
queryForTwitter = new Query("#nature");
size(640, 440);
background(0);
FetchAndDrawTweets();
}
void FetchAndDrawTweets() {
try {
QueryResult result = twitterInstance.search(queryForTwitter);
ArrayList tweets = (ArrayList) result.getTweets();
for (int i=0; i<tweets.size(); i++) {
Status t = (Status) tweets.get(i);
String user = (t.getUser()).getLocation();
text(user + ":" , 20,15+i*15);
}
}
catch(TwitterException te) {
println("Couldn't connect:" + te);
}
}here
我对处理起来很陌生,所以请耐心等待我,因为我甚至不知道我是否以正确的方式解决这个问题。
感谢任何帮助!!
答案 0 :(得分:0)
将问题分解为较小的子问题的很好的工作。将“获取推文和位置”步骤与“在地图上显示内容”步骤分开是一个好主意。干得好。
至于获取推文的位置,您应该看两个地方:
The Twitter4J JavaDocs:这是Twitter4J库中可用的每个类,函数和变量的列表。这应该是你的第一站。你看到这里看起来有用的东西吗?具体来说,Status
类具有getGeoLocation()
函数,看起来很有希望。
The Twitter API:这是构建Twitter4J库的基础JavaScript API。查看此文档以获取有关Twitter4J库下发生的更多详细信息。具体而言,this page表示不推荐使用geo
对象,而应使用coordinates
字段。
所以我要尝试的第一件事是getGeoLocation()
函数。但请注意,并非每条推文都有一个位置,因为用户可以禁用位置跟踪。另请注意,如果基础JavaScript库不再提供geo
对象,并且如果Twitter4J库正在使用它来填充其getGeoLocation()
函数,那么您将无法通过它来到达该位置Twitter4J。我完全没有测试过。