通过 geofire 让用户在我的半径范围内进入列表和规则
getting users on my radius via geofire to a list and rules
到目前为止,我面临两个问题,
第一个是
Using an unspecified index. Consider adding '".indexOn": "g"' at
Geofire to your security and Firebase Database rules for better
performance
而 运行 应用程序
这些是我通过 firebase
制定的安全规则
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
这是我的数据库
第二个问题,我试图获取除我以外的用户数量代码,请帮助我
final Set<String> runnersNearby = new HashSet<String>();
geoFire.setLocation(uid, new GeoLocation(lat, lang));
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(lat, lang), radius);
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
Toast.makeText(UserProfile.this, "Successfully Found", Toast.LENGTH_SHORT).show();
if (key != user.getUid())
runnersNearby.add(key);
Log.d("Number of users", String.valueOf(runnersNearby.size()));
Log.d("KEY", String.valueOf(key));
}
@Override
public void onKeyExited(String key) {
Toast.makeText(UserProfile.this, "left the place", Toast.LENGTH_SHORT).show();
runnersNearby.remove(key);
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
Toast.makeText(UserProfile.this, "key moved but here", Toast.LENGTH_SHORT).show();
}
@Override
public void onGeoQueryReady() {
System.out.println("All initial data has been loaded and events have been fired!");
}
@Override
public void onGeoQueryError(DatabaseError error) {
Toast.makeText(UserProfile.this, "Error Occured", Toast.LENGTH_SHORT).show();
}
});
消息非常明确:
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"Geofire": {
".indexOn": "g"
}
}
}
1- 将位置保存到 Firebase:geoFire.setlocation......
2- 从 firebase 查询位置:getlocationforkey.....
a- 按区域查询 geoFire.querybyregion(region) 你需要在 mapKit 中用坐标声明区域。
b- 观察事件:
1- ObserveEventType(.keyEntered....)
2- ...............(.keyExited....)
到目前为止,我面临两个问题, 第一个是
Using an unspecified index. Consider adding '".indexOn": "g"' at Geofire to your security and Firebase Database rules for better performance
而 运行 应用程序 这些是我通过 firebase
制定的安全规则{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
这是我的数据库
第二个问题,我试图获取除我以外的用户数量代码,请帮助我
final Set<String> runnersNearby = new HashSet<String>();
geoFire.setLocation(uid, new GeoLocation(lat, lang));
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(lat, lang), radius);
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
Toast.makeText(UserProfile.this, "Successfully Found", Toast.LENGTH_SHORT).show();
if (key != user.getUid())
runnersNearby.add(key);
Log.d("Number of users", String.valueOf(runnersNearby.size()));
Log.d("KEY", String.valueOf(key));
}
@Override
public void onKeyExited(String key) {
Toast.makeText(UserProfile.this, "left the place", Toast.LENGTH_SHORT).show();
runnersNearby.remove(key);
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
Toast.makeText(UserProfile.this, "key moved but here", Toast.LENGTH_SHORT).show();
}
@Override
public void onGeoQueryReady() {
System.out.println("All initial data has been loaded and events have been fired!");
}
@Override
public void onGeoQueryError(DatabaseError error) {
Toast.makeText(UserProfile.this, "Error Occured", Toast.LENGTH_SHORT).show();
}
});
消息非常明确:
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"Geofire": {
".indexOn": "g"
}
}
}
1- 将位置保存到 Firebase:geoFire.setlocation......
2- 从 firebase 查询位置:getlocationforkey.....
a- 按区域查询 geoFire.querybyregion(region) 你需要在 mapKit 中用坐标声明区域。
b- 观察事件:
1- ObserveEventType(.keyEntered....)
2- ...............(.keyExited....)