我的项目有问题。 我想删除特定的谷歌地图标记,当我(例如(按下按钮删除时。但是我想删除标记,我将在我的应用程序中选择,而不是所有标记。我的数据库看起来像这样: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);
}
甚至有可能做出这样的东西吗?感谢您的所有回答。
void del(String key) {
DatabaseReference usersRef = rootRef.child("markers").child(key).removeValue();
}
传递要删除的标记的键。