android - Geofire 查询多个引用

标签 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 是用户选择的汽车类型。

最佳答案

要更改引用,您必须创建一个新的 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( ... );
}

关于android - Geofire 查询多个引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41510951/

相关文章:

firebase存储-防止垃圾邮件

java - Firebase Android 在长按的 ListView 中删除节点键

android - Firebase 离线功能和 addListenerForSingleValueEvent

firebase - 数据库异常 : Found two getters or fields with conflicting case sensitivity

java - Google 服务应用插件错误,无法解析 com.google.android.gms.11.0.4 和错误 :(45, 0)

java - 如何在 Android 中反序列化 Drupal JSON 服务字符串?

android - 在 Android 上将视频录制到外部 SD 卡

android - React native-fbsdk 未知问题?

java.lang.NoSuchMethodError : No virtual method toString(Z)Ljava/lang/String; in class Lokhttp3/Cookie; or its super classe

javascript - 通过单击 tr 进行 Angular 编辑