我有一个 MapActivity,旨在显示由实例变量 mCenterPoint、mLatSpan 和 mLongSpan 定义的特定区域。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 调用发生时,地图可能没有完全绘制,因此缩放没有注册。不过,我还无法检验这个理论。