MKMapView无法通过调用setRegion进行更新:动画

时间:2012-10-07 20:23:26

标签: ios mkmapview ios6 ios6-maps

我正在尝试学习如何使用MKMapView并创建了一个示例应用程序来执行此操作;但是,在我的代码中,我正在调用setRegion:animated来更改中心点和范围,但地图永远不会更新。我在StackOverflow(SO)上运行了一些线程,其他人提到了类似的问题并试图实现他们的解决方案无济于事。

我确保根据我发现的其他SO线程在我的代码中尝试的事情:

  • 确保我用框架
  • 初始化MKMapView
  • 尝试在主线程上运行setRegion:animated方法调用

我的下面包含了我的代码,有人可以解释为什么我的MKMapView实例不会更新它的视图吗?

编辑:正确的代码如下所示: 的 MK_ViewController.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

@interface MV_ViewController : UIViewController {
    IBOutlet MKMapView *myMapView;
    MKCoordinateRegion defaultRegion;
    CLLocationCoordinate2D defaultCenter;
    MKCoordinateSpan defaultSpan;
}

@end

MK_ViewController.m

#import "MV_ViewController.h"

@interface MV_ViewController ()

@end

@implementation MV_ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    // initialize default map view properties
    defaultCenter = CLLocationCoordinate2DMake(33.732894,-118.091718);
    defaultSpan = MKCoordinateSpanMake(0.028270, 0.0465364);

    // Setup MapView's inital region
    defaultRegion = MKCoordinateRegionMake(defaultCenter, defaultSpan);

    // create the map view
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    myMapView = [[MKMapView alloc] initWithFrame:screenRect];

}

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    // update map's initial view
    [myMapView setRegion:defaultRegion animated:YES];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

MK_ViewController + MKMapViewDelegate.m

#import "MV_ViewController.h"

@implementation MV_ViewController (MKMapViewDelegate)

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
    MKCoordinateRegion region = mapView.region;
    CLLocationCoordinate2D center = region.center;
    MKCoordinateSpan span = region.span;

    NSLog(@"Center (lat,lon): (%f,%f)",center.latitude,center.longitude);
    NSLog(@"Span (lat,lon): (%f,%f)",span.latitudeDelta,span.longitudeDelta);
}

@end

1 个答案:

答案 0 :(得分:0)

我通过从NIB中删除MKViewMap对象解决了这个问题,而是使用MK_ViewController.m文件中的以下代码添加它:

[self.view addSubView:myMapView];

问题是NIB没有正确连接到视图控制器,视图控制器正在创建它自己的地图视图。

谢谢@Jason Cabot指出我正确的方向。