我实现了以下 MKMapView 方法,该方法在添加注释后运行。我在 Interface Builder 中将我的 MKMapView 地图(parishMap)设置为“显示用户位置”,并且在加载地图视图时,蓝点总是在一秒钟左右出现在地图视图上。
这是我在 Map View 控制器实现中的代码:
// Center map on user location (initially)
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
for(MKAnnotationView *annotationView in views) {
if(annotationView.annotation == parishMap.userLocation) {
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta=0.03;
span.longitudeDelta=0.03;
CLLocationCoordinate2D location=parishMap.userLocation.coordinate;
location = parishMap.userLocation.location.coordinate;
region.span=span;
region.center=location;
[parishMap setRegion:region animated:TRUE];
[parishMap regionThatFits:region];
}
}
}
当我在 iPhone 4 上打开 mapview 时,mapview 总是(并且几乎立即)移动到 userLocation 点的中心。但是,当我在 iPhone 3Gs 或 iPod Touch (2010) 上打开地图视图时,它不会以 userLocation 为中心,而是停留在我为地图视图设置的默认缩放/区域。
关于为什么此代码不适用于非 iPhone 4 设备的任何想法(它们都运行 4.2.x 最新的 iOS)?