Когда я создаю маркер, я каким-то образом хочу, чтобы информация о документе FirebaseFirestore, который связан с ним, следовала за ним, чтобы позже, когда я захочу удалить маркер, маркер FirebaseFirestore удалялся вместе с ним.
В моем случае, когда маркер нажат, а пользователь долго щелкает информационное окно, он должен удалить маркер, но также и документ. Лог c для 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();
}
}
});
Обновление: вопрос был отредактирован / обновлен, чтобы прояснить цель, поскольку я не достаточно прояснил это.