2017-01-06 5 views
1

Я делаю приложение для такси, и я использую Geofire и Geoquery для получения ближайших драйверов.Geofire query несколько ссылок

Теперь у меня есть 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 является выбранным типом автомобиля пользователя.

ответ

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(...); 
} 
Смежные вопросы