首页 文章

Geofire查询多个引用

提问于
浏览
1

我正在制作一个出租车应用程序,我使用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 回答

  • 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( ... );
    }
    

相关问题