簡體   English   中英

獲取在地圖上顯示的標記的數量

[英]get number of marker displayed on map

我只是檢索信息並在地圖上以標記形式顯示它。 我能否獲得顯示的標記數。

 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) {

                }
            });

        }
    });

}

請參閱隨附的代碼和圖片。 該代碼表示​​從Firebase檢索的信息。 地圖上的標記

聲明櫃台:

int markersCount = 0;

並替換ChildEventListenerValueEventListener ,在增加計數器forEach循環:

            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);
                }
            });

還要注意,循環結束后,我已經打印了計數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM