Question

Je suis en train d'obtenir les limites de mon MapView mais j'ai eu le problème que la latitude est toujours à 0 et Longtitude est toujours à 360 * 1E6. Selon ce lien, qui est parce qu'il n'offre les bonnes coordonnées lorsque la carte est entièrement chargée: Mapview getLatitudeSpan et getLongitudeSpan ne fonctionne pas

Maintenant, je suis totalement confus au sujet de la solution, je fait cette méthode que j'appelle de la onCreate de mon MainActivity (le MapView):

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;
}

Comment puis-je faire de cette attente pour le MapView à la charge? Je l'ai regardé dans l'API pour postDelayed, mais je ne peux pas le faire au travail.

Pardonnez-moi si je suis o.o stupide »

Était-ce utile?

La solution

La bonne façon de créer un "Timer" dans Android est d'utiliser android.os.Handler:

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);
        }
    }
};
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top