当前位置: 首页 > 知识库问答 >
问题:

从Firebase数据库中检索数据

姬飞昂
2023-03-14

我正在两个标记之间画一条路线,我想保存那条路线。为此,我将包含lat和lng的ArrayList保存在Firebase数据库中。但我在取回航路点时遇到了问题。我是这样插入的:

  @Override
    protected void onPostExecute(List<List<HashMap<String, String>>> result) {
        ArrayList points = null;
        PolylineOptions lineOptions = null;
        MarkerOptions markerOptions = new MarkerOptions();

        for (int i = 0; i < result.size(); i++) {
            points = new ArrayList();
            lineOptions = new PolylineOptions();

            List<HashMap<String, String>> path = result.get(i);

            for (int j = 0; j < path.size(); j++) {
                HashMap<String, String> point = path.get(j);

                double lat = Double.parseDouble(point.get("lat"));
                double lng = Double.parseDouble(point.get("lng"));
                LatLng position = new LatLng(lat, lng);

                points.add(position);
            }

            lineOptions.addAll(points);
            lineOptions.width(12);
            lineOptions.color(Color.RED);
            lineOptions.geodesic(true);

            database.child("Route").child("route").setValue(points);

        }

        mMap.addPolyline(lineOptions);
    }

在检索数据时,我尝试执行以下操作:

 userRef.child("Route").child("route).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            ArrayList ids = null;
            for (DataSnapshot childData : dataSnapshot.getChildren()) {
                ids.add(childData.getValue());
            }

        }

共有1个答案

皇甫心思
2023-03-14
class Route {
    private ArrayList<Location> locations;
    @PropertyName("route")
    public ArrayList<Location> getLocations() {
       return locations;
    }
    @PropertyName("route")
    public void setLocations(ArrayList<Locations> locations) {
        this.locations = locations;
    }
}


class Location{ 
    private Double latitude;
    private Double longitude;

    //getter and setter for lat - long 
}

然后您可以将它们用作

public void onDataChange(DataSnapshot dataSnapshot) {
     Route route = dataSnapshot.getValue(Route.class);
}

现在您可以根据需要使用检索到的数据。

编辑:工作代码:

public class RouteActivity extends AppCompatActivity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.abc);

    FirebaseDatabase.getInstance().getReference("Route").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Route route = dataSnapshot.getValue(Route.class);

            for(Location location : route.getLocations() ) {
                Log.d("stackoverflow", location.getLatitude()+","+location.getLongitude());
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}

public static class Route {

    private ArrayList<Location> locations;

    public Route() {

    }

    @PropertyName("route")
    public ArrayList<Location> getLocations() {
        return locations;
    }
    @PropertyName("route")
    public void setLocations(ArrayList<Location> locations) {
        this.locations = locations;
    }
}


public static class Location{
    private Double latitude;
    private Double longitude;

    //getter and setter for lat - long

    public Location() {

    }

    public Double getLatitude() {
        return latitude;
    }

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

    public Double getLongitude() {
        return longitude;
    }

    public void setLongitude(Double longitude) {
        this.longitude = longitude;
    }
}
}
 类似资料:
  • 我试图创建一个简单的程序,从用户的名字,手机号码和电子邮件地址,然后把数据在Firebase实时数据库。 有3个输入框和一个按钮,按一下就可以完成上面的操作。代码如下: 我这样设置了消防基地:

  • 问题内容: 我目前正在学习Firebase和iOS的知识,因此请耐心等待。我当前正在发布到我的表,如下所示: 我正在尝试检索插入新记录时创建的内容,但是无法检索它。我已经尝试过( 但是由于浏览网页而无法找到一个可靠的解决方案,所以这是一个随机的猜测 )。有任何想法吗? 问题答案: 注意 :-Althogh 是自以来的一项强大功能,但是当您想创建具有唯一键的节点时更喜欢将数据存储到其中。我之所以喜欢

  • 我对Firebase和Android是新手。我已经在我的Firebase帐户中存储了用户身份验证详细信息(姓名、个人资料图像而不是电子邮件ID)。我想检索那些数据(如姓名等)到我的应用程序的其他部分。如何检索实时数据库子值?

  • 请帮助我想从Firebase实时数据库检索一个特定的数据,我有2个用户,教授和学生,我想使用该数据进行验证。 FireBase实时数据库 FireBase实时数据库

  • 我试图显示一个零件的"loc",如果它的零件号我给。以下是数据结构的样子: 活动代码: getLoc是Product类的getter函数,它返回给定curP对应的“loc”。curP部分表示子值。 逻辑对我来说似乎是正确的,但我没有得到输出。我哪里出了问题?