android - 如何使用 geofire 查询计算特定位置半径中的可用用户?
问题描述
现在 m 使用dataSnapshot.getChildrenCount但它只计算子节点中可用的节点。
这是我的代码
GeoFire geoFire = new GeoFire(ref.child("Userlocation"));
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(latitude, longitude), Raius);
geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener() {
@Override
public void onDataEntered(DataSnapshot dataSnapshot, GeoLocation location) {
int userCounter = (int) dataSnapshot.getChildrenCount();
ads5_userCounter.setText(userCounter + "");
}
@Override
public void onDataExited(DataSnapshot dataSnapshot) {
}
@Override
public void onDataMoved(DataSnapshot dataSnapshot, GeoLocation location) {
}
@Override
public void onDataChanged(DataSnapshot dataSnapshot, GeoLocation location) {
}
@Override
public void onGeoQueryReady() {
}
@Override
public void onGeoQueryError(DatabaseError error) {
}
});
此方法未计算此位置半径内的所有可用用户。请帮忙。
解决方案
onDataEntered
为范围内的每个节点调用该方法。一旦onDataEntered
为最初在范围内的所有节点调用了该onGeoQueryReady
方法,就会调用该方法。这意味着您可以增加一个计数器,onDataEntered
然后将其显示在onGeoQueryReady
.
long count = 0;
geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener() {
@Override
public void onDataEntered(DataSnapshot dataSnapshot, GeoLocation location) {
count++;
}
@Override
public void onDataExited(DataSnapshot dataSnapshot) { }
@Override
public void onDataMoved(DataSnapshot dataSnapshot, GeoLocation location) { }
@Override
public void onDataChanged(DataSnapshot dataSnapshot, GeoLocation location) { }
@Override
public void onGeoQueryReady() {
ads5_userCounter.setText(""+count);
}
@Override
public void onGeoQueryError(DatabaseError error) {
throw databaseError.toException(); // don't ignore errors
}
});
推荐阅读
- javascript - 如何在 JSX 中格式化日期?
- javascript - 为什么我无法访问 Javascript 中的样式元素?Firefox 控制台错误消息显示为“Null”
- python - 如何在 python 中使用 tkinter 显示带有线程的多视频?
- firebase - 如果地图不存在则添加地图,如果它存在于数组中则增加数量
- javascript - 滚动到特定 div 底部后如何触发 javascript 函数?
- python - 字典中单词对集的余弦相似度平均值 (Word2Vec)
- amazon-web-services - 在同一个 aws_s3_bucket 资源上执行 `terraform apply` 两次有不同的结果
- c++ - 为什么三元运算符返回0?
- python - 在动态内容(多页)上使用 Selenium 抓取 - Python
- java - 使用 Java Spring Boot MongoDB 在日期之间获取数据时出现问题