[英]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. 该代码表示从Firebase检索的信息。
Declare the counter: 声明柜台:
int markersCount = 0;
And replace your ChildEventListener
with a ValueEventListener
, increasing the counter on a forEach
loop: 并替换ChildEventListener
与ValueEventListener
,在增加计数器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);
}
});
Also notice that I've printed the count after the loop finishes. 还要注意,循环结束后,我已经打印了计数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.