Twitter4j v2.2.6 带有地理定位的流式 API

Posted

技术标签:

【中文标题】Twitter4j v2.2.6 带有地理定位的流式 API【英文标题】:Twitter4j v2.2.6 Streaming API with geolocation 【发布时间】:2013-03-11 19:58:14 【问题描述】:

我正在使用 twitter4j v2.2.6 的流式处理 API,但遇到了一些过滤问题。我可以很好地获取示例流,但是当我尝试添加地理位置过滤器时,流输出不会改变(我仍然收到没有地理位置和 geoloc 但在我的边界框之外的推文)。这是我的一些代码:

private static FilterQuery getBoundingBoxFilter() 
    // New Delhi India
    double lat = 28.6;
    double lon = 77.2;
    double lon1 = lon - .5;
    double lon2 = lon + .5;
    double lat1 = lat - .5;
    double lat2 = lat + .5;

    double bbox[][] = lon1, lat1, lon2, lat2;        
    FilterQuery filtro = new FilterQuery();
    return filtro.locations(bbox);        


public static void streamIt() 
    TwitterStream twitterStream = new TwitterStreamFactory().getInstance();
    FilterQuery fq = getBoundingBoxFilter();
    StatusListener listener = new StatusListener() 
        @Override
        public void onStatus(Status status) 
            GeoLocation gl = status.getGeoLocation();
            StringBuilder msg = new StringBuilder();
            if (gl != null) 
                msg.append("Lat/Lon: ").append(gl.getLatitude()).append(",").append(gl.getLongitude()).append(" - ");
                msg.append(status.getText());
                LOG.info(msg.toString());
             else 
              msg.append(status.getText());
              LOG.info(msg.toString());
            
        

        @Override
        public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) 
            System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
        

        @Override
        public void onTrackLimitationNotice(int numberOfLimitedStatuses) 
            System.out.println("Got track limitation notice:" + numberOfLimitedStatuses);
        

        @Override
        public void onScrubGeo(long userId, long upToStatusId) 
            System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
        

        @Override
        public void onException(Exception ex) 
            if (!(ex instanceof IllegalStateException)) 
                ex.printStackTrace();
            
        

        @Override
        public void onStallWarning(StallWarning sw) 
            throw new UnsupportedOperationException("Not supported yet.");
        
    ;
    twitterStream.addListener(listener);
    if (fq != null) 
        twitterStream.filter(fq);
            
    twitterStream.sample();        

那么,我做错了什么?有什么想法吗?

问候,

提姆

【问题讨论】:

【参考方案1】:

删除以下行,然后重试。

twitterStream.sample();   

【讨论】:

以上是关于Twitter4j v2.2.6 带有地理定位的流式 API的主要内容,如果未能解决你的问题,请参考以下文章

twitter4j.Status 是不是在每条推文上返回地理位置

使用twitter4j在运行时添加位置过滤器

带有地理围栏的 html5 地理定位 API

为啥标题在带有 chrome 的 android 上的地理定位中保持“空”

使用带有 jquery 的谷歌地图地理定位 api(wifi 查找)

地理定位不适用于带有 Meteor 的 iOS