试图制作一个小型Android应用程序,以Google地图标记的形式显示人的位置。Android Firebase删除Google地图标记
当用户按下按钮使其出现在地图上时,应用程序将从Firebase JSON中检索用户数据并实时显示地图上的用户。如果用户移动,标记随着他移动(当他的位置改变时移除并重新创建)。
除了当用户按下离开地图时,他的标记仍保留在所有其他手机中,即使它已从Firebase JSON中删除。
任何人都可以解释如何解决这个问题?我在地图上检索用户和创建标记代码:
ValueEventListener UsersActiveListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
UsersActive uA = userSnapshot.getValue(UsersActive.class);
if (uA.getUserIDcode() != firebaseauth.getCurrentUser().getUid()) {
Double uAlatindouble = Double.valueOf(uA.getUserlat());
Double uAlonindouble = Double.valueOf(uA.getUserlon());
LatLng uALTLG;
if (uAmarker != null) {
uAmarker.remove();
}
uALTLG = new LatLng(uAlatindouble, uAlonindouble);
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(uALTLG);
markerOptions.title(uA.getUsername());
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.usermarker));
uAmarker = mMap.addMarker(markerOptions);
}
}
}
我进入或离开地图(按两家晶圆厂:goActive
,goNotActive
):代码
public void goActiveFAB (View view){
isActive = true;
FABgoActive.setVisibility(GONE);
FABDontgoActive.setVisibility(View.VISIBLE);
// user in map class
UsersActive CurrentUserActive = new UsersActive();
CurrentUserActive.setUserIDcode(firebaseauth.getCurrentUser().getUid());
CurrentUserActive.setUserlat(String.valueOf(mLastLocation.getLatitude()));
CurrentUserActive.setUserlon(String.valueOf(mLastLocation.getLongitude()));
CurrentUserActive.setUsername(currentUser.getNickname());
groupPosShareRef.child(firebaseauth.getCurrentUser().getUid()).setValue(CurrentUserActive);
}
public void goNotActiveFAB (View view){
isActive = false;
FABgoActive.setVisibility(View.VISIBLE);
FABDontgoActive.setVisibility(View.GONE);
groupPosShareRef.child(firebaseauth.getCurrentUser().getUid()).removeValue();
}
谢谢!
而且您已验证,当用户离开时,Uid位置肯定设置为空,是否正确?它是否留下他们的UID,但只是将其设置为空? – Ryan
感谢Ryan,当用户离开时,Firebase JSON中该用户的整个节点被删除,因此该用户的任何痕迹都不会被保留。 –
uAmarker最初设置在哪里,是FireBase如何看待该用户? – Ryan