如何在Processing中对地图上的推文进行可视化?

时间:2017-01-07 17:02:55

标签: twitter processing twitter4j tweets unfoldingmap

我尝试使用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

我对处理起来很陌生,所以请耐心等待我,因为我甚至不知道我是否以正确的方式解决这个问题。

感谢任何帮助!!

1 个答案:

答案 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。我完全没有测试过。