无法让UIMapView“缩放”/ setRegion:当地图首次加载时

我有一个UIViewController加载一个地图上已经有一堆针脚。 有没有问题让引脚出现,但我似乎无法让用户第一次到达mapView时MKMapView执行setRegion。 我试着把代码放在可能工作的所有可能的方法中, mapViewWillStartLoadingMapviewWillLoadmapViewWillStartLoadingMapmapViewDidFinishLoadingMap等都无济于事。

然而,如果我返回到前一个viewController,然后再次进入包含mapView的viewContoller,它将“缩放”到指定区域。

有没有这样做的超级秘密方式,我不知道? 不应该调用[mapView setRegion:(...) animated:YES]; 足以让地图“缩放”/更新显示选定的区域?

此外,如果有人知道如何获得引脚(我正在使用MKPointAnnotation为我的)animation下降,以及得到的地图animation放大,(既不这样做,虽然我设置animation…. ),我会很感激这个信息。

谢谢!

码:

 @implementation FindOnMapMapView @synthesize mapView; @synthesize mapViewTabBarItem; @synthesize results; @synthesize reverseGeocoder; - (void)viewDidLoad { [super viewDidLoad]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; MKCoordinateRegion mapRegion = MKCoordinateRegionMake(CLLocationCoordinate2DMake([defaults doubleForKey:@"latitude"], [defaults doubleForKey:@"longitude"]), MKCoordinateSpanMake(0.744494189288569, 0.744494189288569)); mapView.region = mapRegion; [mapView setRegion:mapRegion animated:YES]; NSMutableArray *annotations = [[NSMutableArray alloc] init]; for(ThePlace *place in results) { MKPointAnnotation *addAnnotation = [[MKPointAnnotation alloc] init]; [addAnnotation setCoordinate:CLLocationCoordinate2DMake(place.latitude, place.longitude)]; addAnnotation.title = place.placename; addAnnotation.subtitle = [NSString stringWithFormat:@"Distance: %@", place.distance]; [mapView addAnnotation:addAnnotation]; } [self.mapView addAnnotations:annotations ]; } - (void)viewWillAppear:(BOOL)animated { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; MKCoordinateRegion mapRegion = MKCoordinateRegionMake(CLLocationCoordinate2DMake([defaults doubleForKey:@"latitude"], [defaults doubleForKey:@"longitude"]), MKCoordinateSpanMake(0.744494189288569, 0.744494189288569)); NSLog(@"Region Coords are: Latitude:%f, Longitude:%f", [defaults doubleForKey:@"latitude"], [defaults doubleForKey:@"longitude"]); mapView.region = mapRegion; [mapView setRegion:mapRegion animated:YES]; } 

你知道吗?

 - (void) viewDidAppear:(BOOL)animated { MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(firstPoint.coordinate, 2000, 2000); [mapView setRegion:region animated:YES]; } 

为我工作