試圖製作一個小型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