2

マップビューの境界を取得しようとしていますが、緯度が常に 0 に設定され、経度が常に 360*1E6 に設定されるという問題がありました。このリンクによると、それは、マップが完全にロードされたときにのみ正しい座標を提供するためです: Mapview getLatitudeSpan および getLongitudeSpan が機能しない

今、私は解決策について完全に混乱しています。私は、メインアクティビティ(マップビュー)のonCreateから呼び出すこのメソッドを作成しました:

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

マップビューが読み込まれるまでこれを待機させるにはどうすればよいですか? postDelayed の API を調べましたが、動作させることができません。

私が愚かなことをしているなら、私を許してください oo'

4

1 に答える 1

3

Androidで「タイマー」を作成する正しい方法は、次を利用すること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);
        }
    }
};
于 2010-11-22T14:41:19.333 に答える