Как обновить маркеры на MapView?

Я добавил несколько маркеров в мой MapView:

List<Overlay> mapOverlays;
Drawable drawable;
MapOverlay itemizedOverlay;

mapOverlays = mapView.getOverlays();
drawable = this.getResources().getDrawable(R.drawable.map_dot_green);
itemizedOverlay = new MapOverlay(drawable, mapView);
GeoPoint markerPoint = new GeoPoint(lat, lng);
OverlayItem overlayItem = new OverlayItem(markerPoint, "name", "description");
itemizedOverlay.addOverlay(overlayItem);
mapOverlays.add(itemizedOverlay);

Теперь мне нужно поменять маркеры (drawables) регулярно для них. Я планирую использовать Runnable за это. Но как я могу заменить маркеры?

Upd. Вот текущий код для того же:

public class Map extends MapActivity {
    private MapOverlay itemizedOverlay;
    private MapView mapView;

private Runnable mUpdateMapMarkers = new Runnable() {
     public void run() {
       Drawable drawable_green = getResources().getDrawable(R.drawable.map_dot_green);
       int w = drawable_green.getIntrinsicWidth();
       int h = drawable_green.getIntrinsicHeight();
       drawable_green.setBounds(-w / 2, -h, w / 2, 0);

       for (int i = 0; i < itemizedOverlay.size(); i++) {
         itemizedOverlay.getItem(i).setMarker(drawable_green);
       }
       mapView.invalidate();

         mHandler.postDelayed(mUpdateMapMarkers, 5*60*1000); // once in 5 minutes   
     }
  };

1 ответ

Решение

Либо использовать LevelListDrawables и изменить уровень, или создать свой собственный OverlayItem подкласс и переопределение getMarker(), Этот пример проекта демонстрирует последний подход.

Другие вопросы по тегам