Pracuję nad aplikacją na Androida i jestem w stanie wyświetlić wiele ikon na mapie przy użyciu ItemizedOverlay i mam również zaimplementowaną metodę onTap (int index) ItemizedOverlay do wyświetlania informacji specyficznych dla ikony w wymagane okno.setFocus (overlayItem) z ItemizedOverlay nie działa
Teraz chcę zmienić ikonę wybranej nakładki, gdy użytkownik kliknie na inny element. Wywołuję metodę setFocus (OverlayItem) ItemizedOverlay, aby wyświetlić inną ikonę konkretnej nakładki. działa dobrze, gdy użytkownik dotknie jakiejś określonej nakładki, ale nie zmieni ikony, gdy zadzwonię do metody setFocus (OverlayItem).
Jakieś wskazówki? jaki jest najlepszy sposób na programową zmianę ikony wybranej nakładki w mapView?
Mam overriden metodę getMarker mojej niestandardowej klasy OverlayItem do wyświetlania różnych znaczników dla różnych stanów overlayItem. i chcę użyć metody setFocus (OverlayItem), aby zmienić stan OverlayItem, a także zmienić zaznaczony znacznik.
@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;
}
}
tutaj Util.getCategoryMapIcon (0) jest metoda Utility, aby powrócić odpowiednią ikonę, metoda ta zajmuje pewne parametry, które usunąłem, aby ten przykład wyglądać proste.
i poniżej jest kod, aby zmienić stan
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);
}
});
Każda pomoc będzie mile widziane. Dzięki, Aamir
szczęścia z tej odpowiedzi? Zapraszam do śledzenia. –
Dzięki Roman. To działało bardzo dobrze. –