userLocation上的MKMapView中心(最初) - 仅适用于iPhone 4?

我实现了以下MKMapView方法,该方法在添加注释后运行。我在接口生成器中将我的MKMapView地图(parishMap)设置为“显示用户位置”,并且在加载地图视图时,蓝点总是出现在mapview的第二个左右。 这是我在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)上打开mapview时,它不会以userLocation为中心,而只是停留在我为地图视图设置的默认缩放/区域。 关于为什么这段代码不能用于非iPhone 4设备的任何想法(它们都运行4.2.x最新的iOS)?     
已邀请:
这可能是GPS锁定这些不同设备上的位置所花费的时间量的问题。 我建议使用CLLocationManager及其委托方法使地图居中。 您可以通过创建CLLocationManager的实例来开始更新位置,将其delegate属性设置为self,然后实现:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
您可以根据最新的位置更新,相应地将地图居中。     
您是否尝试过使用此代码将地图居中:
[mapView setCenterCoordinate:location animated:YES];
我不确定为什么它适用于iPhone 4而不是其他,但这是我用来调整区域的代码:
    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(location, 0.03, 0.03);
    MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];

    [mapView setRegion:adjustedRegion animated:YES];
试试这种方式,看看它是如何工作的。你在做regionThatFits方法的方式,实际上不应该是方法的使用方式。您可以尝试注释掉代码的最后一行,它应该没有区别。无论如何,请尝试我刚给出的方法,如果您有任何问题请告诉我。     

要回复问题请先登录注册