如何在没有 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 数据库

如何使用geofire从firebase获取位置

如何在没有时间的情况下将 LocalDate 保存到 MongoDB(即使我只保存日期,为啥 mongo 会随时间保存日期)?

如何在没有数据库的情况下将数据保存到数组中

如何在没有 Redux 的情况下将状态保存在本地存储 React 中?

如果没有创建 Geofire,我如何检查 Geofire 以注销用户?