mapView setRegion没有从函数中调用

时间:2011-06-13 19:34:02

标签: iphone ios ipad mkmapview

我的标题文件:

@interface MapViewController : UIViewController <MKMapViewDelegate, NSFetchedResultsControllerDelegate>
{
    MKMapView *mapView;

    NSFetchedResultsController *fetchedResultsController;
    NSManagedObjectContext *managedObjectContext;
}

@property (nonatomic, retain) MKMapView *mapView;
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;

我正在我的.m文件中合成。

在我的viewDidLoad函数中我有这个(视图通过父控制器中的动画淡入):

- (void)viewDidLoad
{
    [super viewDidLoad];

    mapView = [[MKMapView alloc] initWithFrame:self.view.frame];
    mapView.mapType = MKMapTypeSatellite;
    mapView.delegate = self;
    self.view = mapView;
    [self.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
    self.view.alpha = 0.0;


    MKCoordinateRegion region;
    MKCoordinateSpan span;
    region.center.latitude = 42.764705;
    region.center.longitude = -94.047375;        
    span.latitudeDelta=.02;
    span.longitudeDelta=.02;
    region.span = span;
    [mapView setRegion:region animated:YES];
    NSLog(@"Change this1");
}

这很有效。

我有另一个功能:

- (void)setInitialMapView
{

    MKCoordinateRegion region;
    MKCoordinateSpan span;    
    region.center.latitude = 32.764705;
    region.center.longitude = -84.047375;        
    span.latitudeDelta=50.0;
    span.longitudeDelta=50.0;
    region.span = span;
    [mapView setRegion:region animated:YES];
    NSLog(@"Change this 2");
}

动画完成后我调用第二个函数。

第二个函数不会更改地图的区域,但会打印到日志中。所以函数被调用。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

不确定这是否是您问题的根源,但它看起来确实如此,或者可能有所贡献......

viewDidLoad中的这一行不好:

self.view = mapView;

我建议使用addSubview(docs)将地图视图添加为self.view的子视图

我不知道做你所做的事情的后果会是什么......但我觉得他们不会好。

如果您需要将根视图设为MKMapView,我相信这应该在loadView方法as documented here中完成。