GeoFire Android:GeoQuery仅显示最近的用户,而不是所有附近的用户

时间:2018-07-27 14:47:16

标签: android firebase firebase-realtime-database geofire

我正在制作一个应用程序,用户可以在其中找到该应用程序的所有附近用户。这样存储所有用户的位置数据:Firebase Realtime Database Using GeoFire

如果我使用该代码:



    ...
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users");
    GeoFire geoFire = new GeoFire(ref);
    GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(Double.parseDouble(userData.getString("latitude","")),Double.parseDouble(userData.getString("longitude",""))), radius);
    geoQuery.removeAllListeners();
    geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
        @Override
        public void onKeyEntered(String key, GeoLocation location) {
            arrayListUserIds.add(key);
        }
        ...
    }
    ...

它仅提供最近的用户,而不是附近的所有用户。

我在互联网上进行了足够的搜索,但是一无所获。

1 个答案:

答案 0 :(得分:0)

尝试使用另一个事件侦听器:

    geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener() {
                @Override
                public void onDataEntered(DataSnapshot dataSnapshot, GeoLocation location) {
                    if (dataSnapshot.exists()) {
                        arrayListUserIds.add(dataSnapshot.getKey());
                    }
                }
                ...