我正在尝试学习如何使用MKMapView并创建了一个示例应用程序来执行此操作;但是,在我的代码中,我正在调用setRegion:animated
来更改中心点和范围,但地图永远不会更新。我在StackOverflow(SO)上运行了一些线程,其他人提到了类似的问题并试图实现他们的解决方案无济于事。
我确保根据我发现的其他SO线程在我的代码中尝试的事情:
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
答案 0 :(得分:0)
我通过从NIB中删除MKViewMap对象解决了这个问题,而是使用MK_ViewController.m文件中的以下代码添加它:
[self.view addSubView:myMapView];
问题是NIB没有正确连接到视图控制器,视图控制器正在创建它自己的地图视图。
谢谢@Jason Cabot指出我正确的方向。