GeoFire Android:GeoQuery 只显示最近的用户,而不是所有附近的用户
Posted
技术标签:
【中文标题】GeoFire Android:GeoQuery 只显示最近的用户,而不是所有附近的用户【英文标题】:GeoFire Android : GeoQuery is only showing the nearest , not all nearby users 【发布时间】: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 公里。但结果是一样的。 您是否也尝试使用不同的位置坐标,因为您所有的位置都具有大致完全相同的坐标? 我也尝试过不同的位置。如果我使用完全相同的位置坐标有什么问题吗? 如果你要在地图上看到它们,你只会看到一个,因为它们在它下面,对吧? 【参考方案1】:尝试使用另一个事件监听器:
geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener()
@Override
public void onDataEntered(DataSnapshot dataSnapshot, GeoLocation location)
if (dataSnapshot.exists())
arrayListUserIds.add(dataSnapshot.getKey());
...
【讨论】:
以上是关于GeoFire Android:GeoQuery 只显示最近的用户,而不是所有附近的用户的主要内容,如果未能解决你的问题,请参考以下文章
将 Firebase 查询与 GeoQuery 相结合,按名称搜索附近区域的帖子
我想使用 GeoFire 在 android 中填充 Firebase Recycler View