【问题标题】:How can I access all users from database?如何从数据库访问所有用户?
【发布时间】:2017-11-10 02:17:41
【问题描述】:

我正在使用 firebase 数据库来保存我的坐标。

这就是我的数据库的样子:

我正在通过令牌保存数据:

        String token = FirebaseInstanceId.getInstance().getToken();
        if (token == null) return;
        databaseReference = FirebaseDatabase.getInstance().getReference(token);`

所以我需要访问坐标并向地图添加标记

我在 onMapReady 方法的 valueEventListener 中做:

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference(FirebaseInstanceId.getInstance().getToken());
    ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            double allLat = (double) dataSnapshot.child("lat").getValue();
            double allLng = (double) dataSnapshot.child("lng").getValue();

            mMap.addMarker(new MarkerOptions().position(new LatLng(allLat, allLng)).title("Пользователь"));
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Toast.makeText(MapsActivity.this, "Не найдены пользователи", Toast.LENGTH_SHORT).show();
        }
    });

但它只设置了我的标记,我如何从我的数据库中访问所有用户?

【问题讨论】:

    标签: java android google-maps firebase firebase-realtime-database


    【解决方案1】:

    您必须在 onDataChange() 中循环遍历您的值:

    for(DataSnapshot child : dataSnapshot.getChildren() ){
                //get your mulitple markers here
            }
    

    【讨论】:

    • 我已经循环了我的代码,正如你所说,但它继续只显示我的位置
    • public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot child : dataSnapshot.getChildren()){ double allLat = (double) dataSnapshot.child("lat").getValue(); double allLng = (double) dataSnapshot.child("lng").getValue(); mMap.addMarker(new MarkerOptions().position(new LatLng(allLat, allLng)).title("Пользователь"));} }
    猜你喜欢
    • 2020-01-05
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多