2014-03-30 132 views

回答

0

试试下面这段代码。在尝试之前,您必须将一些值写入keywordlatitude,longituderadiuskeyword是您搜索的内容,我认为您可以理解其他值的含义。

try { 
     Query query = new Query(keyword); // 

     GeoLocation location = new GeoLocation(latitude, longitude); 
     String unit = Query.KILOMETERS; // or Query.MILES; 
     query.setGeoCode(location, radius, unit); 

     QueryResult result; 

     do { 
      result = twitter.search(query); 
      List<Status> tweets = result.getTweets(); 

      for (Status tweet : tweets) { 
       System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText()); 
      } 

     } while ((query = result.nextQuery()) != null); 

    } catch (TwitterException te) { 
     System.out.println("Failed to search tweets: " + te.getMessage()); 
     System.exit(-1); 
    } 
1

使用GET search/tweets端点,您可以指定地理编码和半径以从该区域内获取一组Tweets。参数值如下:纬度,经度,半径。

例:37.781157,-122.398720,1mi

+0

是否有使用Twitter4J Query做到这一点? – user3461851

0

基于@Seohyun Choi的回答,这是完整的带验证码的java代码。 在编译此代码之前,请在路径中添加twitter4j-core-3.0.5.jar

import java.util.List; 
import twitter4j.GeoLocation; 
import twitter4j.Query; 
import twitter4j.QueryResult; 
import twitter4j.Status; 
import twitter4j.Twitter; 
import twitter4j.TwitterException; 
import twitter4j.TwitterFactory; 
import twitter4j.conf.ConfigurationBuilder; 

public class TweetsInParticularLocation { 
    private static final String TWITTER_CONSUMER_KEY = "****"; 
    private static final String TWITTER_SECRET_KEY = "*****"; 
    private static final String TWITTER_ACCESS_TOKEN = "****"; 
    private static final String TWITTER_ACCESS_TOKEN_SECRET = "***"; 
public static void main(String arg[]) 
{ 
    ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setDebugEnabled(true) 
     .setOAuthConsumerKey(TWITTER_CONSUMER_KEY) 
     .setOAuthConsumerSecret(TWITTER_SECRET_KEY) 
     .setOAuthAccessToken(TWITTER_ACCESS_TOKEN) 
     .setOAuthAccessTokenSecret(TWITTER_ACCESS_TOKEN_SECRET); 
    TwitterFactory tf = new TwitterFactory(cb.build()); 
    Twitter twitter = tf.getInstance(); 

    try { 
     Query query = new Query("India"); // 

     GeoLocation location = new GeoLocation(20.593684, 78.962880); //latitude, longitude 
     String unit = Query.KILOMETERS; // or Query.MILES; 
     query.setGeoCode(location, 1, unit); //location, radius, unit 

     QueryResult result; 

     do { 
      result = twitter.search(query); 
      List<Status> tweets = result.getTweets(); 

      for (Status tweet : tweets) { 
       System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText()); 
      } 

     } while ((query = result.nextQuery()) != null); 

    } catch (TwitterException te) { 
     System.out.println("Failed to search tweets: " + te.getMessage()); 
     System.exit(-1); 
    } 

}}