如何在没有 Geofire 的情况下将位置对象保存在 Firebase 中?
Posted
技术标签:
【中文标题】如何在没有 Geofire 的情况下将位置对象保存在 Firebase 中?【英文标题】:How to save location object in firebase without Geofire? 【发布时间】:2018-10-29 13:24:39 【问题描述】:我不知道如何在不使用 Geofire 的情况下在 Firebase 中保存位置。一种可能的方法可能是仅将坐标保存到 Firebase,但查看位置对象(android),它具有许多属性以及坐标。如何保存完整的对象并在以后检索它?
【问题讨论】:
【参考方案1】:您可以按照以下步骤实现此目的。首先创建一个如下所示的模型类:
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
【讨论】:
以上是关于如何在没有 Geofire 的情况下将位置对象保存在 Firebase 中?的主要内容,如果未能解决你的问题,请参考以下文章
GeoFire setLocation 方法不会将位置保存到 Firebase 数据库
如何在没有时间的情况下将 LocalDate 保存到 MongoDB(即使我只保存日期,为啥 mongo 会随时间保存日期)?