Я работаю над приложением для Android и могу отображать несколько значков на карте с помощью ItemizedOverlay, и я также реализовал метод ItemTOverlay onTap (int index) для отображения информации о значках в необходимом окне.
Теперь я хочу изменить значок выбранного наложения, когда пользователь нажимает на какой-либо другой компонент. Я вызываю setFocus (OverlayItem) метод ItemizedOverlay, чтобы отобразить другой значок определенного оверлея. он работает хорошо, когда пользователь нажимает на какое-либо определенное наложение, но не меняет значок, когда я вызываю метод setFocus (OverlayItem).
Есть указатели? Как лучше всего программно изменить значок выбранного наложения в mapView?
Я переопределил метод getMarker моего пользовательского класса OverlayItem для отображения разных маркеров для разных состояний overlayItem.
и я хочу использовать метод setFocus (OverlayItem), чтобы изменить состояние OverlayItem, а также изменить маркер при его выборе.
@Override
public Drawable getMarker(int stateBitset){
if(stateBitset==0){
icon = Util.getCategoryMapIcon(0);
icon.setBounds(0-icon.getIntrinsicWidth()/2, 0-icon.getIntrinsicHeight(), icon.getIntrinsicWidth()/2, 0);
return icon;
}else {
icon = Util.getCategoryMapIcon(OverlayItem.ITEM_STATE_SELECTED_MASK);
icon.setBounds(0-icon.getIntrinsicWidth()/2, 0-icon.getIntrinsicHeight(), icon.getIntrinsicWidth()/2, 0);
return icon;
}
}
здесь Util.getCategoryMapIcon (0) - это служебный метод для возврата соответствующего значка, этот метод принимает некоторые параметры, которые я удалил, чтобы сделать этот пример простым.
и ниже - код для изменения состояния
Button leftNavigation = (Button) findViewById(R.id.left_navigation_button);
leftNavigation.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
OverlayItem item = searchResultsOverlay.get(index+1);
setFocus(item);
}
});
Любая помощь будет высоко ценится.
Спасибо,
Аамир