【问题标题】:GeoFire Android : GeoQuery is only showing the nearest , not all nearby usersGeoFire Android:GeoQuery 只显示最近的用户,而不是所有附近的用户
【发布时间】:2019-01-04 17:25:08
【问题描述】:

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

如果我使用该代码代码:



    ...
    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);
        }
        ...
    }
    ...

它只给出最近的用户,而不是附近的所有用户。

我在互联网上搜索了很多但没有任何线索。

【问题讨论】:

  • 您确定所有用户都在半径范围内吗?
  • 是的。可以肯定的是,我已将半径增加到 10 公里。但结果是一样的。
  • 您是否也尝试使用不同的位置坐标,因为您所有的位置都具有大致完全相同的坐标?
  • 我也尝试过不同的位置。如果我使用完全相同的位置坐标有什么问题吗?
  • 如果你要在地图上看到它们,你只会看到一个,因为它们在它下面,对吧?

标签: android firebase firebase-realtime-database geofire


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 2021-03-20
    相关资源
    最近更新 更多