インスタンス変数 mCenterPoint、mLatSpan、および mLongSpan で定義された特定の領域を表示するための MapActivity があります。Map オブジェクトには、マップの緯度スパンと経度スパンだけでなく、中心点を取得するメソッドがあります。MapActivity が開かれたら、すぐに中心点を中心にして正しい範囲にズームしたいと考えています。
これが私の onCreate メソッドと私の setRegionOfMap メソッドです:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.google_map);
mMapView = (MapView) findViewById(R.id.mapview);
mMapView.setBuiltInZoomControls(true);
setRegionOfMap();
}
private void setRegionOfMap(){
mMapView.getController().setCenter(mCenterPoint);
mMapView.getController().zoomToSpan(mLatSpan, mLongSpan);
}
mMap は、私のマップ オブジェクトの単なるインスタンスです。データは動的に変化しないため、中心点とスパンは常に同じ値です。約 1/4 から 1/2 の時間で、マップが期待どおりに正確にズームされます。それでも、ズームアウトしすぎていることを除いて、マップは正しく中央に配置されているように見えます。MapView が一部の時間だけズームし、他の時間は正しくないのはなぜですか? 私の唯一の理論は、 zoomToSpan 呼び出しが発生したときにマップが完全に描画されていない可能性があるため、ズームが登録されないということでした。ただし、その理論をテストすることはできませんでした。