2

我正在尝试使用 twitter API 搜索关键字并获取该特定推文的位置,然后将其可视化到地图上。

我已经使用展开地图和 tilemill 成功创建了我的地图,我只是在推特部分苦苦挣扎。使用 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

我对处理很陌生,所以请耐心等待我,因为我什至不知道我是否以正确的方式进行。

任何帮助将不胜感激!

4

1 回答 1

0

把你的问题分成更小的子问题做得很好。将“获取推文和位置”步骤与“在地图上显示内容”步骤分开是个好主意。干得好。

至于获取推文的位置,您应该查看两个位置:

Twitter4J JavaDocs:这是 Twitter4J 库中可用的每个类、函数和变量的列表。这应该是您的第一站。你在这里看到什么有用的东西吗?具体来说,Status该类有一个getGeoLocation()看起来很有前途的功能。

Twitter API:这是构建 Twitter4J 库的底层 JavaScript API。查看此文档以获取有关 Twitter4J 库下发生的事情的更多详细信息。具体来说,此页面说该geo对象已弃用,您应该改用该coordinates字段。

所以我首先要尝试的是getGeoLocation()函数。但请注意,并非每条推文都有位置,因为用户可以禁用位置跟踪。另请注意,如果底层 JavaScript 库不再提供该geo对象,并且 Twitter4J 库正在使用它来填充其getGeoLocation()功能,那么您将无法通过 Twitter4J 获得该位置。我根本没有测试过。

于 2017-01-08T00:17:39.627 回答