2017-01-06 10 views
1

私はタクシーアプリを作成しています。私はGeofireとGeoqueryを使用して最寄りのドライバを取得しています。Geofireは複数の参照を照会します

私は3種類の車を「3席、4席、7席」持っていて、ユーザーはそれらを切り替えることができます。正しい参照からデータを取得するためにクエリを変更します。参照およびクエリの

マイコード: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); 

答えて

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(...); 
} 
関連する問題