Невозможно удалить маркер за пределами GeoFire LocationCallback - PullRequest
0 голосов
/ 15 апреля 2020

Невозможно удалить маркер с того места, где он был создан. Все отлично работает для "не Dynami c". Маркер "meetingPlaceMarker" является глобальным. Я попытался сделать его невидимым, установив альфа в 0 и сделав его нулевым. Я искал и нигде не мог найти ответ.

private void addMarkerListener(){
    FirebaseDatabase.getInstance().getReference().child("users").child(userId).child("meetingPoint").
            addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()) {
                if(dataSnapshot.child("status").getValue().toString().equals("requested") &&
                dataSnapshot.child("requestedBy").getValue().toString().equals(Data.matchId)){
                    DatabaseReference myDb = FirebaseDatabase.getInstance().getReference().child("users").
                            child(userId).child("meetingPoint");
                    GeoFire myGeoFire = new GeoFire(myDb);
                    myGeoFire.getLocation("coordinates", new LocationCallback() {
                        @Override
                        public void onLocationResult(String key, GeoLocation location) {
                            if (location != null) {
                                LatLng latLng = new LatLng(location.latitude, location.longitude);
                                meetingPlaceMarker = mMap.addMarker(new MarkerOptions()
                                        .position(latLng).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
                                acceptMarkerLayout.setVisibility(View.VISIBLE);
                                markerLayout.setVisibility(View.GONE);
                                addMarkerButton.setText(R.string.add_marker);
                                mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
                                mMap.animateCamera(CameraUpdateFactory.zoomTo(14.3f));
                                // HERE I CAN EASILY REMOVE MARKER
                            }
                        }
                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });
                } else if(dataSnapshot.child("status").getValue().toString().equals("accepted") &&
                        dataSnapshot.child("requestedBy").getValue().toString().equals(userId)) {
                    meetingPlaceMarker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
                    mMap.moveCamera(CameraUpdateFactory.newLatLng(meetingPlaceMarker.getPosition()));
                    mMap.animateCamera(CameraUpdateFactory.zoomTo(14.3f));
                } else if(dataSnapshot.child("status").getValue().toString().equals("rejected") &&
                        dataSnapshot.child("requestedBy").getValue().toString().equals(userId)) {
                    meetingPlaceMarker.remove();
                    markerLayout.setVisibility(View.VISIBLE);
                }
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

Здесь я не могу

public void rejectMarker(View view){
    markerLayout.setVisibility(View.VISIBLE);
    FirebaseDatabase.getInstance().getReference().child("users").child(userId).child("meetingPoint").
            child("status").setValue("rejected");
    FirebaseDatabase.getInstance().getReference().child("users").child(Data.matchId).child("meetingPoint").
            child("status").setValue("rejected");
    acceptMarkerLayout.setVisibility(View.GONE);
    meetingPlaceMarker.remove(); //NOTHING HAPPENS AFTER CALLING IT
}
...