How can I get each value from Firebase and set it to my variable (Lat&Long)
My Code :
FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference reference = database.getReference(); reference.child("Hutan").addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { for (DataSnapshot snapshot : dataSnapshot.getChildren()) { // String Bude = snapshot.getValue().toString(); String Lat = snapshot.child("Lat").getValue().toString(); String Long = snapshot.child("Long").getValue().toString(); LatLng Bude = new LatLng(Double.valueOf(Lat), Double.valueOf(Long)); // googleMap.addMarker(new MarkerOptions().position(Bude).title("Curug Dago!")); // googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(Bude, 17)); Log.e("TAG", "Location: " + Bude); } }
Advertisement
Answer
Since you’re using Java, here is the code that can help you read the value of Lat
, as well the value of Long
:
DatabaseReference db = FirebaseDatabase.getInstance().getReference(); DatabaseReference hutanRef = db.child("Hutan"); hutanRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() { @Override public void onComplete(@NonNull Task<DataSnapshot> task) { if (task.isSuccessful()) { DataSnapshot snapshot = task.getResult(); double lat = snapshot.child("Lat").getValue(Double.class); double lng = snapshot.child("Long").getValue(Double.class); Log.d("TAG", lat + ", " + lng); } else { Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors! } } });
As you can see, there is no need for any loop. You can directly access both values. The result in the logcat will be:
-6.858573273779082, 107.630600755386
P.S. Try to find reasonable field names, as Long in the database might be confused with the Long class. So you can use latitude
and longitude
, or even simpler, lat
and lng
.