ОК, я понимаю, что вы хотите, чтобы сам значок маркера был не простым растровым изображением, а макетом.
Что вы можете сделать, это использовать информационное окно маркера «вместо» значка маркера.
Прежде всего, создайте новый класс CustomInfoWindow, который наследуется от MarkerInfoWindow - стандартного информационного окна для маркеров и использует ваш собственный макет:
public class CustomInfoWindow extends MarkerInfoWindow {
public CustomInfoWindow(MapView mapView) {
super(my_own_layout, mapView);
}
}
CustomInfoWindow myCustomInfoWindow = new CustomInfoWindow(mapView);
Затем, сразу после создания маркера, выполнитечто:
- Установить значок маркера как растровое изображение размером 1x1 пикселя, полностью прозрачное: setIcon (mySmall_InvisibleIcon)
- Установить собственное информационное окно маркера: setInfoWindow (myCustomInfoWindow)
- Установите информационное окно "якорь" в наиболее подходящую и естественную позицию, в зависимости от "внешнего вида" вашего макета: setInfoWindowAnchor (ANCHOR_CENTER, ANCHOR_CENTER) может быть?
- Принудительное открытие информационного окна: showInfoWindow ()
Все эти шаги довольно просты.
Но тогда, я полагаю, вы ожидаете некоторого поведения, когда пользователь нажимает на кнопки вашего макета.Итак, внутри вашего кода CustomInfoWindow вам, безусловно, придется проделать определенную работу => следовать этому руководству .