繁体   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