@AleAleA

В чем ошибка присвоения действия при нажатии на Маркер Google Maps?

Только на третий-четвертый раз срабатывает действие, которое работает при нажатии на определенный маркер в Google Maps. В связи с чем такое происходит? Вроде в коде проблем не видно. Возможен ли какой-то конфликт? Сам код:
Main.java
public void onMapReady(GoogleMap googleMap) {
    ...

    Lenin = mMap.addMarker(new MarkerOptions()
            .position(LatLng));
    Lenin.setTag(0);

    mMap.setOnMarkerClickListener(this);
}

public boolean onMarkerClick(final Marker marker) {

    ExampleBottomSheetDialog bottomSheet = new ExampleBottomSheetDialog();
    bottomSheet.show(getSupportFragmentManager(), "exampleBottomSheet");

    if (marker.equals(Lenin)) {
        Toast.makeText(getApplicationContext(), "Кот: ",
                Toast.LENGTH_SHORT).show();
    }

    return false;
}


ExampleBottomSheetDialog.java
public class ExampleBottomSheetDialog extends BottomSheetDialogFragment {
    private BottomSheetListener mListener;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.bottom_sheet_layout, container, false);

        Button button1 = v.findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });

        return v;
    }

    public interface BottomSheetListener {
        void onButtonClicked(String text);
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);

        try {
            mListener = (BottomSheetListener) context;
        } catch (ClassCastException e) {
            throw new ClassCastException(context.toString()
                    + " must implement BottomSheetListener");
        }
    }
}
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
Ссылку на Lenin нужно сохранять в глобальную переменную, если вы собираетесь с ней работать дальше. Но лучше завязываться на теги к маркеру и далее их сверять. marker.getTag() === "lenin". Но и этот подход с хардкодом плох. Обычно в таких случаях есть массив с готовыми данными, типа найти в нём объект с id маркера и взять от туда поле text и поместить в балун.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы