Geofire查询多个引用

时间:2017-01-06 17:25:46

标签: android firebase firebase-realtime-database geofire

我正在制作一个出租车应用程序,我使用Geofire和Geoquery来获得最近的司机。

现在我有3种类型的汽车和3个座位,4个座位和7个座位"并且用户可以在它们之间切换,我想更改查询以从正确的引用中获取数据。

我的代码供参考和查询:

refDrivers = FirebaseDatabase.getInstance().getReference("drivers_locations_" + car_seats + "seat");
geoFireDrivers = new GeoFire(refDrivers);
geoQuery = geoFireDrivers.queryAtLocation(new GeoLocation(31.2551039, 30.0162619), 3);

其中car_seats是用户选择的汽车类型。

1 个答案:

答案 0 :(得分:2)

要更改引用,您必须创建GeoFire的新实例,然后再次查询它,只需确保在添加新侦听器之前删除GeoQuery的侦听器。

没有方法可以动态更改参考。

private GeoQuery geoQuery;

public void switchCarSeatType() {
    if (geoQuery != null) {
        // remove the previous listeners
        geoQuery.removeAllListeners();
    }
    setGeoQuery(car_seats);
}

private void setGeoQuery(int car_seats) {
    refDrivers = FirebaseDatabase.getInstance().getReference("drivers_locations_" + car_seats + "seat");
    geoFireDrivers = new GeoFire(refDrivers);
    geoQuery = geoFireDrivers.queryAtLocation(new GeoLocation(31.2551039, 30.0162619), 3);
    geoQuery.addGeoQueryEventListener( ... );
}