Android - 从 Firebase 数据库中删除“活动”标记
Posted
技术标签:
【中文标题】Android - 从 Firebase 数据库中删除“活动”标记【英文标题】:Android - remove "active" marker from firebase database 【发布时间】:2019-02-02 01:50:38 【问题描述】:我的项目有问题。 当我(例如)按下按钮进行删除时,我想删除特定的谷歌地图标记。但我想删除我将在我的应用程序中选择的标记,而不是所有标记。我的数据库是这样的:Firebase Database
我需要的一切是,如果我激活标记(可能是当我点击它时),我将能够从数据库和我的应用程序的地图中删除这个标记。添加标记的代码:
btnPridatKontejner = (Button)findViewById(R.id.btn_pridat_kontejner);
btnPridatKontejner.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
final AlertDialog.Builder dialog = new AlertDialog.Builder(Welcome.this);
dialog.setTitle("Přidat kontejner");
dialog.setMessage("Prosím, zadejte typ kontejneru pro přidání");
LayoutInflater inflater = LayoutInflater.from(Welcome.this);
View info_layout = inflater.inflate(R.layout.layout_info_map, null);
final MaterialEditText edtTypKontejneru = info_layout.findViewById(R.id.edtTypKontejneru);
dialog.setView(info_layout);
dialog.setPositiveButton("Přidat kontejner", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialogInterface, int i)
dialogInterface.dismiss();
final double latitude = mLastLocation.getLatitude();
final double longitude = mLastLocation.getLongitude();
MarkerOptions mp = new MarkerOptions();
long date = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("dd. MM. yyyy, k:mm");
String dateString = sdf.format(date);
mp.position(new LatLng(latitude, longitude));
mp.title(edtTypKontejneru.getText().toString());
mp.snippet(dateString);
mMap.addMarker(mp);
DatabaseReference markerRef = FirebaseDatabase.getInstance().getReference("markers");
String key = markerRef.push().getKey();
markerRef.child(key).child("long").setValue(longitude);
markerRef.child(key).child("lat").setValue(latitude);
markerRef.child(key).child("title").setValue(mp.getTitle());
markerRef.child(key).child("snippet").setValue(mp.getSnippet());
if (TextUtils.isEmpty(edtTypKontejneru.getText().toString()))
return;
);
dialog.setNegativeButton("Zavřít", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialogInterface, int i)
dialogInterface.dismiss();
);
dialog.show();
这是我将标记从 Firebase 加载到我的应用程序的代码:
mMap = googleMap;
//Disable Map Toolbar:
//map.getUiSettings().setMapToolbarEnabled(false);
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef
.child("markers");
ValueEventListener eventListener = new ValueEventListener()
@Override
public void onDataChange(DataSnapshot dataSnapshot)
for(DataSnapshot ds : dataSnapshot.getChildren())
String latitude_Display = ds
.child("lat")
.getValue().toString();
String longitude_Display = ds
.child("long")
.getValue().toString();
String title_Display = ds
.child("title")
.getValue().toString();
String info_Display = ds
.child("snippet")
.getValue().toString();
String latLng = latitude_Display;
String latLng1 = longitude_Display;
String title = title_Display;
String info = info_Display;
double latitude = Double.parseDouble(latLng);
double longitude = Double.parseDouble(latLng1);
String titleInfo = title;
String infoInfo = info;
LatLng currentLocation = new LatLng( latitude, longitude );
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position( currentLocation );
mMap.addMarker(new MarkerOptions()
.position(new LatLng(latitude, longitude))
.title(titleInfo).snippet(infoInfo));
@Override
public void onCancelled(DatabaseError databaseError)
;
usersRef.addListenerForSingleValueEvent(eventListener);
甚至有可能制作这样的东西吗?谢谢大家的回答。
【问题讨论】:
【参考方案1】:void del(String key)
DatabaseReference usersRef = rootRef.child("markers").child(key).removeValue();
传递要删除的标记的键。
【讨论】:
有问题..我想删除任何标记,我将在以后创建..不仅仅是一个,我将在此处指定。 当您点击标记然后获取该标记的键并传入方法。 无法接收符号“key”..我认为,我将其粘贴在我的代码中是错误的.. 您在另一种方法中添加一种方法。所以,这就是你得到错误的原因。只需调用 onMarkerClick() 中的方法 del(key) 并在类中添加该方法即可。 我认为我只是个白痴。我现在明白了吗?因为我仍然遇到错误.. :/ 真的很抱歉,但我真的不知道该放在哪里.. :/ imgur.com/a/QpKtIcy以上是关于Android - 从 Firebase 数据库中删除“活动”标记的主要内容,如果未能解决你的问题,请参考以下文章
发送数据时,从 Android 应用中的 Firebase 检索 ServerValue.Timestamp
无法从firebase数据库android,recycler视图中检索数据
如何根据 android 中的用户位置从 Firebase 数据库中检索数据?
如何使用 java/android 从 Firebase ONCE 读取数据?