2010-11-22 11 views
2

Ich versuche, die Grenzen meiner MapView zu bekommen, aber ich hatte das Problem, dass der Breitengrad immer auf 0 und Longtitude immer auf 360 * 1E6 gesetzt ist. Gemäß dieser Verbindung ist, dass, weil es nur die richtigen Koordinaten bieten, wenn die Karte vollständig geladen ist: Mapview getLatitudeSpan and getLongitudeSpan not workingMapView latitudeSpan/longtitudeSpan funktioniert nicht

Nun, ich bin total verwirrt über die Lösung, ich diese Methode gemacht, die ich aus dem onCreate nenne meine mainactivity (die Kartenansicht):

public int[][] getBounds() 
{ 
GeoPoint center = this.mapView.getMapCenter(); 
int latitudeSpan = this.mapView.getLatitudeSpan(); 
int longtitudeSpan = this.mapView.getLongitudeSpan(); 
int[][] bounds = new int[2][2]; 

bounds[0][0] = center.getLatitudeE6() + (latitudeSpan/2); 
bounds[0][1] = center.getLongitudeE6() + (longtitudeSpan/2); 

bounds[1][0] = center.getLatitudeE6() - (latitudeSpan/2); 
bounds[1][1] = center.getLongitudeE6() - (longtitudeSpan/2); 
return bounds; 
} 

Wie kann ich warten, bis die mapview lädt? Ich habe in der API nach postDelayed gesucht, aber ich kann es nicht zum Laufen bringen.

mir verzeihen, wenn ich dumm o.o‘

Antwort

3

Der richtige Weg, um einen‚Timer‘Bin zu schaffen, in android android.os.Handler zu nutzen ist:

private Handler updateHandler = new Handler(); 

updateHandler.postDelayed(waitForMapTimeTask, TIME_TO_WAIT_IN_MS); 

private Runnable waitForMapTimeTask = new Runnable() { 
    public void run() { 
     getBounds(); 
     // Read the bounds to see if something reasonable is returned 
     if (!mapIsLoaded) { 
      updateHandler.postDelayed(waitForMapTimeTask, TIME_TO_WAIT_IN_MS); 
     } 
    } 
}; 
+0

Dank, die sich wie ein Charme :) – shokora