Как открыть новую активность или фрагмент по нажатию на маркер?
Работаю с Google maps API в Android Studio. Возник вопрос:как открыть новую активность или фрагмент по нажатию на маркер? Как я понял, Info Windows мне не подходит, Info Windows является статическим View, отображаемым в виде изображения на карте, а мне требуется, чтобы пользователь мог взаимодействовать с этим окном, нажимая на кнопки. В программирование новичок, буду рад любой помощи в этом вопросе. Работаю во фрагменте, пробовал сделать так:
map.addMarker(new MarkerOptions().position(location).title(name));
map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
FragmentManager fragmentManager = getChildFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.info_fr, new InfoFragment());
fragmentTransaction.commit();
}
});
Но в итоге он не реагирует на нажатие как надо, а просто выводит имя.
Этот кусок кода оказывается работал, но только по нажатию имени, который указывается сверху маркера при его нажатии, мне же требовалось немного другое. В итоге реализовал вот так:
map.addMarker(new MarkerOptions().position(location).title(name));
map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Toast.makeText(getActivity().getApplicationContext(), " has been clicked ", Toast.LENGTH_SHORT).show();
return false;
}
});
Теперь он срабатывает именно на клики по маркеру.
А чтобы открыть из фрагмента новую активность, просто прописываем:
startActivity(new Intent(getActivity(), InfoActivity.class));
Ответы (1 шт):
Вы можете в вашей View имплементировать интерфейс OnMarkerClickListener и в методе onMarkerClick вызывать вашу активити/фрагмент.
public class MarkerDemoActivity extends FragmentActivity implements
OnMarkerClickListener{
//Some code
public boolean onMarkerClick(final Marker marker){
Toast.makeText(this, marker.getTitle() + " has been clicked ", Toast.LENGTH_SHORT).show();
return false;
}
}
Соответственно при создании маркера методом addMarker вы получаете объект маркера и можете задавать ему теги или хранить сами маркеры и в зависимости от этих параметров в методе onMarkerClick выполнять разные действия.
Вот тут можно прочитать больше https://developers.google.com/maps/documentation/android-sdk/marker