Попытка сделать небольшое приложение для Android, в котором отображаются местоположения людей в качестве маркеров Google Maps.Android Firebase удаляет маркеры Google Maps
Когда пользователь нажимает кнопку для отображения на карте, приложение извлекает данные пользователей из 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);
}
}
}
Мой код для входа или выхода из карты (нажав две системы FABS: 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 определенно установлено равным null, правильно? Оставляет ли он их Uid, а просто устанавливает его в null? – Ryan
благодарит Райана, когда пользователь уходит, весь узел этого пользователя в Firebase JSON удаляется, поэтому никаких следов этого пользователя не остается. –
Где первоначально установлен uAmarker и что говорит, что FireBase видит этого пользователя или нет? – Ryan