Получить данные из базы данных и создать маркер - PullRequest
0 голосов
/ 11 июля 2019

Я хотел бы спросить, как получить данные из базы данных, которая должна получить конкретные данные.Моя база данных Firebase выглядит следующим образом. My firebase database is look like this..Я хочу получить данные по кругу.

Полная база будет выглядеть следующим образом.enter image description here

я пытаюсь использовать datasnapshot и значение eventlistener для вызова данных из firebase.

private void getMarkerFromDb()
    {
        String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
        DatabaseReference dataMarker = FirebaseDatabase.getInstance().getReference();

        if (getIntent()!=null) {

            lrpTest = (LRP_model) getIntent().getSerializableExtra("lrp");

            DatabaseReference routeRef = dataMarker.child("LRP")
                    .child(userId)
                    .child("route_models");
            routeRef.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (int counter =0; counter<dataSnapshot.getChildrenCount();counter++) {
                        for (DataSnapshot ss : dataSnapshot.child("route_models").getChildren()) {
                            double latitude = ss.child("rtLat").getValue(Double.class);
                            double longitude = ss.child("rtLng").getValue(Double.class);
                            LatLng loc = new LatLng(latitude, longitude);
                            mMap.addMarker(new MarkerOptions().position(loc).title("test")).setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_action_pole));
                        }
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }
    }

Выходная информация ничего не показывает.

1 Ответ

0 голосов
/ 11 июля 2019

Изменить это:

            routeRef.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (int counter =0; counter<dataSnapshot.getChildrenCount();counter++) {
                        for (DataSnapshot ss : dataSnapshot.child("route_models").getChildren()) {
                            double latitude = ss.child("rtLat").getValue(Double.class);
                            double longitude = ss.child("rtLng").getValue(Double.class);
                            LatLng loc = new LatLng(latitude, longitude);
                            mMap.addMarker(new MarkerOptions().position(loc).title("test")).setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_action_pole));
                        }
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

в это:


            DatabaseReference routeRef = dataMarker.child("LRP")
                    .child(userId);

            routeRef.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for (DataSnapshot ss : dataSnapshot.getChildren()) {
                            for (DataSnapshot datas : ss.child("route_models").getChildren()) {
                            double latitude = datas.child("rtLat").getValue(Double.class);
                            double longitude = datas.child("rtLng").getValue(Double.class);
                            LatLng loc = new LatLng(latitude, longitude);
                            mMap.addMarker(new MarkerOptions().position(loc).title("test")).setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_action_pole));
                          }
                        }
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

Измените ссылку на узел userId, затем дважды выполните внутри нее итерацию, чтобы получить доступ к route_models атрибутам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...