Java 如何从Firebase数据库检索数据以显示标记?
我试图从我的Firebase数据库中检索纬度和经度,但我很难做到这一点。正如您在屏幕截图下所看到的,每张照片都有自己的ID,并附加到用户ID。我想在地图上用标记显示数据库中的所有位置。附在这是我的代码和我的数据库截图 数据库截图: 编辑:我根据要求添加了更多代码Java 如何从Firebase数据库检索数据以显示标记?,java,android,firebase,google-maps-markers,Java,Android,Firebase,Google Maps Markers,我试图从我的Firebase数据库中检索纬度和经度,但我很难做到这一点。正如您在屏幕截图下所看到的,每张照片都有自己的ID,并附加到用户ID。我想在地图上用标记显示数据库中的所有位置。附在这是我的代码和我的数据库截图 数据库截图: 编辑:我根据要求添加了更多代码 public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener, GoogleMap.OnMarke
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener, GoogleMap.OnMarkerClickListener {
private GoogleMap mMap;
private ChildEventListener mChildEventListener;
private DatabaseReference mUsersDataRef;
private DatabaseReference mPhotosDataRef;
private Map<String, User> mUsers = new HashMap<>(); //Map<(String) user-id, (User) user>
private List<Photo> mPhotos = new ArrayList<>();
private boolean usersFetched;
private boolean photosFetched;
private String photo_id;
Marker marker;
尝试使用数据快照。可通过以下方式修改代码:
if (usersFetched && photosFetched) {
for (Photo photo : mPhotos) {
User thisPhotosUser = mUsers.get(photo.getUser_id());
thisPhotoUser.addListenerForSingleValueEvent(new ValueEvent Listner()){
public void onDataChange(DataSnapshot datasnapshot){
for(Datasnapshot photos : dataSnapshot.getChildren()){
if(photos.child(thisPhotoUser.exists())){
LatLng location = new LatLng(mPhotosDataRef.child(getPhoto_id(isChild(latitude))),user.longitude);
mMap.addMarker(newMarkerOptions().position(location).title(photo.name)).setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW));
}
}
}
}
}
}
尝试使用数据快照。可通过以下方式修改代码:
if (usersFetched && photosFetched) {
for (Photo photo : mPhotos) {
User thisPhotosUser = mUsers.get(photo.getUser_id());
thisPhotoUser.addListenerForSingleValueEvent(new ValueEvent Listner()){
public void onDataChange(DataSnapshot datasnapshot){
for(Datasnapshot photos : dataSnapshot.getChildren()){
if(photos.child(thisPhotoUser.exists())){
LatLng location = new LatLng(mPhotosDataRef.child(getPhoto_id(isChild(latitude))),user.longitude);
mMap.addMarker(newMarkerOptions().position(location).title(photo.name)).setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW));
}
}
}
}
}
}
请分享更多代码,包括您正在使用的引用。您好,第一次使用stackoverflow。我可以分享我的代码或者编辑我的帖子吗?是的,在标签下面有一个编辑按钮。签出。我就是这么做的:``public void onDataChange(DataSnapshot DataSnapshot){for(DataSnapshot ds:DataSnapshot.getChildren(){Marker Marker=ds.getValue(Marker.class);LatLng LatLng=new LatLng(marker.latitude(),marker.getLongitude());mMap.addMarker(new MarkerOptions().position(LatLng));}}```请共享更多代码,包括您正在使用的引用。您好,第一次使用stackoverflow。我可以分享我的代码或者编辑我的帖子吗?是的,在标签下面有一个编辑按钮。签出。我就是这么做的:``public void onDataChange(DataSnapshot DataSnapshot){for(DataSnapshot ds:DataSnapshot.getChildren(){Marker Marker=ds.getValue(Marker.class);LatLng LatLng=new LatLng(marker.latitude(),marker.getLongitude());mMap.addMarker(new MarkerOptions().position(LatLng));}```