Я использую GeoFire, чтобы прочитать данные о местоположении в Firebase, а затем добавить их на карту Google.
Когда я запускаю метод GeoQueryDataEventListener ()
, в зависимости от центра и установленного радиуса, он не дает никаких результатов (и это хорошо, потому что у меня нет информации, загруженной для этих параметров).
Затем, когда это произойдет, я бы хотел, чтобы пользователь выдал предупреждение об изменении радиуса поиска (например).
В какой части метода GeoQueryDataEventListener ()
мне следует вставить предупреждение? Я тестировал все вспомогательные методы, но ни с одним из них мне это не удалось.
Я оставляю код, который я написал:
private void leerUbicaciones() {
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(userLatitude, userLongitude), radio);
geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener() {
@Override
public void onDataEntered(DataSnapshot dataSnapshot, GeoLocation location) {
final String key = dataSnapshot.getKey();
firebaseDatabase = FirebaseDatabase.getInstance();
firebaseDatabase.getReference().child("location/" + key).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mMap.addMarker(new MarkerOptions()
.snippet(dataSnapshot.child("city").getValue(String.class))
.title(dataSnapshot.child("name").getValue(String.class))
.draggable(false)
.position(new LatLng(dataSnapshot.child("latitude").getValue(Double.class), dataSnapshot.child("longitude").getValue(Double.class))));
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.v("TAG", "onCancelled");
}
});
}
@Override
public void onDataExited(DataSnapshot dataSnapshot) {
Log.v("TAG", "onDataExited");
}
@Override
public void onDataMoved(DataSnapshot dataSnapshot, GeoLocation location) {
Log.v("TAG", "onDataMoved");
}
@Override
public void onDataChanged(DataSnapshot dataSnapshot, GeoLocation location) {
Log.v("TAG", "onDataChanged");
}
@Override
public void onGeoQueryReady() {
Log.v("TAG", "onGeoQueryReady");
}
@Override
public void onGeoQueryError(DatabaseError error) {
Log.v("TAG", "onGeoQueryError");
}
});
}