问题
I need to add markers from all users on my map. I'm saving all coordinates in my firebase
My database looks like:
So, when I want to get values: lat, lng from database(I do it in onMapReady method):
int allUsers = 100;
while(allUsers >= 0) {
double latAll = Double.parseDouble(users.child("lat").toString());
double lngAll = Double.parseDouble(users.child("lng").toString());
mMap.addMarker(new MarkerOptions().position(new LatLng(latAll, lngAll)));
}
I get an error
Here i'm saving values ito my database:
GPSTracker gpstracker = new GPSTracker(mContext, SearchActivity.this);
double locationLng = gpstracker.getLongitude();
double locationLat = gpstracker.getLatitude();
databaseReference.child("lng").setValue(locationLng);
databaseReference.child("lat").setValue(locationLat);
here is my error:
FATAL EXCEPTION: main Process: kz.mul.livemeet_finalversion, PID: 24598 java.lang.NumberFormatException: For input string: "https://livemeetfinalversion.firebaseio.com/ekeLu1W_1RU%3AAPA91bFt2knzJYknyWLpuFb1Wm1nxl0TkM-bWdkNrjaoPUmv5JP_hm6b64Hx3m3X805A3QR8paMAOABJN6DZcb99z_EfwGwadN1dUN6ngtqTbGwxD6iMLlP7IW6RvEzg9UTW7HQKHyT0/lat" at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1306) at java.lang.Double.parseDouble(Double.java:547) at kz.mul.livemeet_finalversion.MapsActivity.onMapReady(MapsActivity.java:118) at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source) at com.google.android.gms.maps.internal.zzt$zza.onTransact(Unknown Source) at android.os.Binder.transact(Binder.java:499) at com.google.android.gms.maps.internal.bw.a(:com.google.android.gms.DynamiteModulesB:82) at com.google.maps.api.android.lib6.impl.bf.run(:com.google.android.gms.DynamiteModulesB:1805) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
回答1:
Step 1) Make a PoJo.class which contains all the keys that are in database in you case like age,lat,lng etc.
Step 2) Now call this method for getting all the data.like below
public void getAllUsersFromFirebase() {
DatabaseReference UserRef = FirebaseDatabase.getInstance().getReference().child("Parent_child");
UserRef.keepSynced(true);
UserRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterator<DataSnapshot> dataSnapshots = dataSnapshot.getChildren().iterator();
List<PoJo> fcmUsers = new ArrayList<>();
while (dataSnapshots.hasNext()) {
DataSnapshot dataSnapshotChild = dataSnapshots.next();
PoJo fcmUser = dataSnapshotChild.getValue(PoJo.class);
fcmUsers.add(fcmUser);
}
// Check your arraylist size and pass to list view like
if(fcmUsers.size()>0)
{
fcmUsers arraylist pass to your Map activity.
}else
{
// Display dialog for there is no user available.
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// for handling database error
}
});
}
来源:https://stackoverflow.com/questions/44427213/android-get-value-from-firebase-database