繁体   English   中英

将多个 gps 位置保存到同一个 firebase 实时数据库

[英]Saving multiple gps locations to same firebase real-time database

当按下一个按钮时,我已经成功地将经度和纬度坐标存储到 Firebase 实时数据库中。 如果手机的位置发生变化,当前数据库会覆盖坐标。 但是,我想将 append 新坐标写入数据库,而不覆盖以前保存的坐标。

我试图将其中一个坐标字符串作为孩子传递,但是数据库只接受 az 字母。 有五个独立的按钮,每个按钮记录用户的心情和那个心情的位置。

btnGreat = (ImageButton) view.findViewById(R.id.btnGreat);
btnGreat.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        rootNode = FirebaseDatabase.getInstance();
        reference =  rootNode.getReference("Location");
        String latitude = Latitude.getText().toString();
        String longitude = Longitude.getText().toString();

        Coordinates coordinates = new Coordinates(latitude, longitude);
        reference.child("great").setValue(coordinates);
    }
});

坐标 class:

public class Coordinates {
    String latitude, longitude;

    public Coordinates() {
    }

    public Coordinates(String latitude, String longitude) {
        this.latitude = latitude;
        this.longitude = longitude;
    }

    public String getLongitude() {
        return longitude;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public String getLatitude() {
        return latitude;
    }

    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }
}

由于您使用的是setValue()方法,这意味着每次调用此方法时它都会覆盖现有位置的数据。 如果你想在great节点下的坐标有不同的值,那么你应该考虑像这样使用push()方法:

reference.child("great").push().setValue(coordinates);

这将创建一个如下所示的数据库结构:

Firebase-root
  |
  --- Location
        |
        --- great
             |
             --- $pushedId
             |      |
             |      --- latitude: 1.11
             |      |
             |      --- longitude: 2.22
             |
             --- $pushedId
                    |
                    --- latitude: 3.33
                    |
                    --- longitude: 4.44

然后你可以简单地读取数据:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM