Aktualisieren overlay-Objekt in der Map-Aktivität auf Android

Habe ich eine Karte zu erstellen Aktivität und oben auf, dass, ich brauche etwas zeigen Ort Punkte. Diese Standorte sind abrufen aus einer hashtable in einer anderen Klasse. Der Inhalt dieser hashtable immer verpasst. Ich erwarte also zu sehen, dass diese Position Flecken auf der Karte, Aktivität, bewegen, wie die Hash-Tabelle wird geändert.
Der code ist unten dargestellt:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mapview);

    MapView mapView = (MapView) this.findViewById(R.id.map);   
    mapView.setStreetView(true);
    mc = mapView.getController();


    mc.animateTo(...);
    mc.setZoom(12); 

    mapView.invalidate();

    List<Overlay> listOfOverlays = mapView.getOverlays();
    listOfOverlays.clear();

    MarkerOverlay mark = new MarkerOverlay(p);
     listOfOverlays.add(mark);

    for(Entry<Long,Pair> p: LQTManager.getInstance().ResultTable.entrySet())
    {

        GeoPoint point = new GeoPoint(
                    (int) (p.getValue().x * 1E6), 
                    (int) (p.getValue().y * 1E6));//some code is not shown
         MarkerOverlay markerOverlay = new MarkerOverlay(point);
         listOfOverlays.add(markerOverlay); 



    }

    mapView.postInvalidate();


}


class MarkerOverlay extends com.google.android.maps.Overlay
{
    public GeoPoint pt;

    public MarkerOverlay(GeoPoint pt){
        this.pt=pt;
        }

    @Override
    public boolean draw(Canvas canvas, MapView mapView, 
    boolean shadow, long when) 
    {
        super.draw(canvas, mapView, shadow);                   

        Point screenPts = new Point();
        mapView.getProjection().toPixels(pt, screenPts);

        Bitmap bmp = BitmapFactory.decodeResource(
            getResources(), R.drawable.pushpin);            

        canvas.drawBitmap(bmp, screenPts.x-16, screenPts.y-32, null); 

        return true;
    }
} 

Gibt es eine Möglichkeit, zu aktualisieren overlay-Objekte, wenn ich den Bildschirm berühren. Ich denke auch über einige Funktionen im onTap Methode überschreiben von MarkerOverlay. Aber ich denke, es ist nicht logisch, wenn ich versuche das Overlay-Bild versuchen Sie, sich deutlich?
Jede vorgeschlagene Idee?

MapView.invalidate() bewirkt, dass ein Neuzeichnen. Nicht, dass die Arbeit?
es Neuzeichnen der mapview, nicht-overlay-Objekt.

InformationsquelleAutor aladine | 2011-03-14

Schreibe einen Kommentar