移除标记,同时移除消防仓库中的文件



当我创建一个标记时,我希望链接到它的FirebaseFirestore文档的信息跟在它后面,这样以后当我想删除标记时,FirebaseFirestore标记也会随之删除。

在我的例子中,当按下一个标记,用户长按infoWindow时,它应该删除标记,但也删除文档。onInfoWindowLongClickListener的逻辑如下:

gMap.setOnInfoWindowLongClickListener(new GoogleMap.OnInfoWindowLongClickListener() { 
@Override
public void onInfoWindowLongClick(Marker marker) {
FirebaseFirestore db = FirebaseFirestore.getInstance(); // I guess this is needed.
marker.remove(); // removes marker
}
});

标记被删除了,但我仍然可以在Firestore中看到文档。

我应该使用marker.getTag()吗?

当我创建标记时,它会变成这样:

btnRetrieveMarkers.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("my_collection")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()){
for(QueryDocumentSnapshot documentSnapshot : task.getResult()){
HashMap hashMap = (HashMap) documentSnapshot.getData();
String status = (String) hashMap.get("Status");
GeoPoint geo = (GeoPoint) hashMap.get("Geopoint");
LatLng latLng = new LatLng(geo.getLatitude(), geo.getLongitude());
Marker mark =  gMap.addMarker(new MarkerOptions().position(latLng).title(status)));
mark.setDraggable(true);
// mark.setTag() < -- how to save the info about the document here?
}
}else {
// TODO: handle error here
}
if (task.getResult().isEmpty()) {
Toast.makeText(MapsActivity.this, R.string.no_markers_registered_yet, Toast.LENGTH_LONG).show();
}
}
});

更新:问题已被编辑/更新以澄清目的,因为我对此不够清楚。

如果您想只使用标记删除标记的消防仓库文档,请在创建标记时使用其消防仓库文档id对其进行标记。

Marker marker = mMap.addMarker(new MarkerOptions()
...
);
marker.setTag("[document id]");

当你想删除它时:

FirebaseFirestore db = FirebaseFirestore.getInstance();
String markerId = (String) marker.getTag();
db.collection("[name of the collection]")
.document(markerId)
.delete();

您可能还想实现OnMarkerClickListener,以便在单击时获得选定的标记。

相关内容

  • 没有找到相关文章

最新更新