【发布时间】:2017-02-10 18:48:43
【问题描述】:
尝试制作一个小型 Android 应用,将人们的位置显示为 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);
}
}
}
我进入或离开地图的密码(按两个FAB: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 看到该用户,这是否说明了这一点?
标签: android firebase firebase-realtime-database google-maps-markers