我不知道如何在不使用Geofire的情况下在Firebase中保存位置。一种可能的方法可能是仅将坐标保存到Firebase,但查看位置对象(Android(,它具有许多属性以及坐标。如何保存完整的对象并在以后检索它?
您可以按照以下步骤实现此目的。首先创建一个如下所示的模型类:
public class LocationModel {
private double lat, lng;
LocationModel() {}
public LocationModel(double lat, double lng) {
this.lat = lat;
this.lng = lng;
}
public double getLat() { return lat; }
public double getLng() { return lng; }
}
创建类的对象并将其添加到数据库中,如下所示:
LocationModel locationModel = new LocationModel(48.858383, 2.294480);
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference locationOneRef = rootRef.child("locations").child("locationOne");
locationOneRef.setValue(locationModel);
您的数据库应如下所示:
Firebase-root
|
--- locations
|
--- locationOne
|
--- lat: 48.858383
|
--- lng: 2.294480
要取回数据,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference locationOneRef = rootRef.child("locations").child("locationOne");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
double lat = dataSnapshot.child("lat").getValue(Double.class);
double lng = dataSnapshot.child("lng").getValue(Double.class);
Log.d("TAG", lat + / " + lng);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
locationOneRef.addListenerForSingleValueEvent(valueEventListener);
输出将是:
48.858383 / 2.294480