简体   繁体   中英

get number of marker displayed on map

I just retrieved information and displayed it in form of marker on the map. Is it possible for me to get the count of the markers displayed.

 btnValidate = (Button)findViewById(R.id.validate);
    btnValidate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Clear map from all markers
            mMap.clear();

            //Filter markers by disease
            disease = String.valueOf(spnDisease.getSelectedItem()).toLowerCase();
            location = String.valueOf(spnLocation.getSelectedItem());

            Query dbQuery = FirebaseDatabase.getInstance().getReference().child("diseaseReported").orderByChild("nameReportedAtReportedOn").equalTo(disease+location+txtDate.getText());
            dbQuery.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    Log.d("v1", dataSnapshot.toString());
                    Map m = dataSnapshot.getValue(Map.class);
                    double lat = m.getLat();
                    double lng = m.getLng();
                    String reportedAt = m.getReportedAt();
                    String reportedOn = m.getReportedOn();
                    String name = m.getName();
                    String snippetText = "Reported on: " + reportedOn;
                    LatLng c = new LatLng(lat, lng);

                    mMap.addMarker(new MarkerOptions().position(c).title("Disease reported: " + name).snippet(snippetText).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));

                    }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

        }
    });

}

Refer to code and picture attached. The code represents the information that was retrieved from firebase. 地图上的标记

Declare the counter:

int markersCount = 0;

And replace your ChildEventListener with a ValueEventListener , increasing the counter on a forEach loop:

            int markersCount = 0;
            Query dbQuery = FirebaseDatabase.getInstance().getReference().child("diseaseReported").orderByChild("nameReportedAtReportedOn").equalTo(disease+location+txtDate.getText());
            dbQuery.addValueEventListener(new ValueEventListener(){
                @Override
                public void onDataChange(DataSnapshot snapshot) {
                    for(DataSnapshot dataSnapshot : snapshot.getChildren())
                    {
                        Log.d("v1", dataSnapshot.toString());
                        Map m = dataSnapshot.getValue(Map.class);
                        double lat = m.getLat();
                        double lng = m.getLng();
                        String reportedAt = m.getReportedAt();
                        String reportedOn = m.getReportedOn();
                        String name = m.getName();
                        String snippetText = "Reported on: " + reportedOn;
                        LatLng c = new LatLng(lat, lng);

                        mMap.addMarker(new MarkerOptions().position(c).title("Disease reported: " + name).snippet(snippetText).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
                        markersCount++;
                    }
                    Log.i("Markers Count", "Total Markers="+markersCount);
                }
            });

Also notice that I've printed the count after the loop finishes.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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