GeoFire Найти пользователя поблизости и увеличить радиус - PullRequest
0 голосов
/ 18 ноября 2018

Я создаю этот метод для поиска рядом с пользователями, когда этот метод вызывается как найдено рядом с пользователем, если пользователь не рядом, затем увеличиваю и снова называю его сам, но я хочу установить ограничение для пользователя в 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) {

            }
        });
    }
   }

Может быть, я использую другую логику, но я не знаю как, пожалуйста, помогите мне, Заранее спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...