Android geofire获取一定半径内的用户列表
Posted
技术标签:
【中文标题】Android geofire获取一定半径内的用户列表【英文标题】:Android geofire get a list of users within certain radius 【发布时间】:2019-07-29 06:59:10 【问题描述】:我正在尝试将所有用户添加到距用户位置一定距离内的列表中。我已成功获取用户当前位置,并使用 geofire 将其存储在我的数据库中。我知道我必须使用 geofire 来查询结果,但我不确定如何将用户添加到我的列表中。我相信这是在 onKeyEntered 方法中完成的,但我不确定。
private void addLocationToDB()
database = FirebaseDatabase.getInstance().getReference("Leaderboard").child(userID);
geoFire = new GeoFire(database);
geoFire.setLocation("Location", new GeoLocation(latitude, longitude), new GeoFire.CompletionListener()
@Override
public void onComplete(String key, DatabaseError error)
if(error != null)
Log.d(TAG, "Problem storing users location - onComplete: " + error.getMessage());
else
getListNearbyUsers();
);
private void getListNearbyUsers()
geoQuery = geoFire.queryAtLocation(new GeoLocation(latitude, longitude), 1);
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener()
@Override
public void onKeyEntered(String key, GeoLocation location)
nearbyUsers.add(key);
@Override
public void onKeyExited(String key)
@Override
public void onKeyMoved(String key, GeoLocation location)
@Override
public void onGeoQueryReady()
@Override
public void onGeoQueryError(DatabaseError error)
);
【问题讨论】:
【参考方案1】:任何寻找答案的人都发现了我的错误。此方法应将用户 ID 作为参数而不是“位置”。然后我可以将所有“密钥”作为用户 ID 并过滤数据。希望这对遇到同样问题的人有所帮助。
geoFire.setLocation("Location", new GeoLocation(latitude, longitude), new GeoFire.CompletionListener()
@Override
public void onComplete(String key, DatabaseError error)
if(error != null)
Log.d(TAG, "Problem storing users location - onComplete: " + error.getMessage());
else
getListNearbyUsers();
);
【讨论】:
以上是关于Android geofire获取一定半径内的用户列表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 geofire 查询计算特定位置半径中的可用用户?