java - Twitter4j v2.2.6 具有地理定位功能的流媒体 API

标签 java api geolocation streaming twitter4j

我正在使用 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();        
}

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

问候,

蒂姆

最佳答案

删除以下行并重试。

twitterStream.sample();   

关于java - Twitter4j v2.2.6 具有地理定位功能的流媒体 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15347462/

相关文章:

java - 无法解析符号 setOnPageChangeListener

java - 无法追踪我的答案有什么问题

用于测试类的 Java Bean

java - 如何通过测试解决 API 调用上的错误代码 "405"?

geolocation - Foursquare 如何或从何处获取其地理数据?

javascript - 在移动 Web/HTML5 中访问 compass 数据

java - 如何从 Java 中用户填写的 JTable 中提取数据

javascript - 从 API 调用中选择选项

javascript - 网站 API : separate backend and frontend with an API

geolocation - 跨多个多边形搜索点的最佳方法