Я хочу получить данные из базы данных firebase с запросом местоположения geofire, но он просто срабатывает onGeoQueryReady вместо onKeyEntered.
Я устанавливаю свое местоположение следующим образом
user = auth.getCurrentUser().getUid();
GeoFire geoFire = new GeoFire(ref.child("businesLocation").child(Education).child(CoachingCenter));
geoFire.setLocation(user, new GeoLocation(latitude, longitude), new GeoFire.CompletionListener() {
@Override
public void onComplete(String key, DatabaseError error) {
}
});
}
});
и извлечение данных, подобных этому
GeoFire geoFire = new GeoFire(ref.child("businesLocation").child(Education).child(CoachingCenter));
GeoQuery geoQuery = geoFire.queryAtLocation((location), Raius);
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
getShoplist(key);
}
@Override
public void onKeyExited(String key) {
getShoplist(key);
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
}
@Override
public void onGeoQueryReady() {
}
@Override
public void onGeoQueryError(DatabaseError error) {
}
});
Этот запрос не получает данные.
Вот моя структура базы данных
Вот мои правила безопасности firebase
{"rules": {
".read": "auth != null",
".write": "auth != null"}}
Нужно ли мне изменить правила безопасности firebase для использования geofire?
Пожалуйста, помогите мне!
GeoFire geoFire = new GeoFire(ref.child("businesLocation").child(shop_categoryName).child(shop_sub_categoryName))
на данные, показанные на скриншоте. Попробуйте воспроизвести проблему в изолированной минимальной структуре данных. Я настоятельно рекомендую прочитать как создать минимальный, полный, проверяемый пример, чтобы узнать, почему и как это сделать. - person Frank van Puffelen   schedule 20.10.2018".read": "auth != null"
означает, что пользователь должен пройти аутентификацию, чтобы иметь возможность читать любые данные. Если это не так, вы получите ошибку вonGeoQueryError
, которую теперь игнорируете. Реализуйте это какpublic void onGeoQueryError(DatabaseError error) { throw error.toException(); }
, чтобы в этом случае получить более явную ошибку. Также см. stackoverflow.com/questions/37403747/firebase -отказано в доступе/ - person Frank van Puffelen   schedule 21.10.2018location
иRaius
. Попробуйте воспроизвести проблему с жестко закодированными значениями, а затем обновите вопрос с ними. - person Frank van Puffelen   schedule 22.10.2018