Я создаю этот метод для поиска рядом с пользователями, когда этот метод вызывается как найдено рядом с пользователем, если пользователь не рядом, затем увеличиваю и снова называю его сам, но я хочу установить ограничение для пользователя в 5 км, проблема заключается в том, когда я устанавливаю ограничение доступного пользователи не отображаются ..
этот код без установленного лимита работает отлично
int radius=0; //radius=0
String driverId; //driverId=null
boolean driverFound=false;
//This Method Find Near Dear
void FindDriver(final LatLng theLocation){
DatabaseReference mRef= FirebaseDatabase.getInstance().getReference(DriverType);
GeoFire geoFire=new GeoFire(mRef);
GeoQuery query=geoFire.queryAtLocation(new GeoLocation(theLocation.latitude,theLocation.latitude),radius);
query.removeAllListeners();
query.addGeoQueryEventListener(new GeoQueryEventListener() {
//When this method find driver call antoher method and finish this activity
@Override
public void onKeyEntered(String key, GeoLocation location){
if(!driverFound){
driverFound=true;
driverId=key;
SetDriver(driverId)}
@Override
public void onKeyExited(String key) {}
@Override
public void onKeyMoved(String key, GeoLocation location) {}
@Override
public void onGeoQueryReady() {
if(!driverFound){
radius++;
FindDriver(theLocation); //Method Call it self and increase the radius if driver still not found
}
}
@Override
public void onGeoQueryError(DatabaseError error) {
}
});
}
}
это еще один метод, в котором я устанавливаю предел
int radius=0; //radius=0
String driverId; //driverId=null
boolean driverFound=false;
//This Method Find Near Dear
void FindDriver(final LatLng theLocation){
DatabaseReference mRef= FirebaseDatabase.getInstance().getReference(DriverType);
GeoFire geoFire=new GeoFire(mRef);
GeoQuery query=geoFire.queryAtLocation(new GeoLocation(theLocation.latitude,theLocation.latitude),radius);
query.removeAllListeners();
query.addGeoQueryEventListener(new GeoQueryEventListener() {
//When this method find driver call antoher method and finish this activity
@Override
public void onKeyEntered(String key, GeoLocation location){
if(!driverFound){
driverFound=true;
driverId=key;
SetDriver(driverId)}
@Override
public void onKeyExited(String key) {}
@Override
public void onKeyMoved(String key, GeoLocation location) {}
@Override
public void onGeoQueryReady() {
if(!driverFound){
if(radius<5){
radius++;
FindDriver(theLocation); //Method Call it self and increase the radius if driver still not found
}else{
Dismiss();
Toast.makeText(getActivity(),"No Near Driver",Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onGeoQueryError(DatabaseError error) {
}
});
}
}
Может быть, я использую другую логику, но я не знаю как, пожалуйста, помогите мне,
Заранее спасибо:)