尝试学习有关MKMapView的方法,但是我遵循了一些教程,但似乎无法将其放大到定义的位置,而是将其加载到以大西洋为中心的整个地图视图中。我猜测iOS6中发生了一些变化,这意味着我正在使用的教程不再起作用? (这些教程是iOS3-iOS5)。
我已经在Interface Builder中制作了一个ViewController,并为其指定了MapViewController的自定义类。然后,我在MKMapView上拖动并使用助手编辑器将其放入MapViewController.h
MapViewController.h
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface MapViewController : UIViewController
@property (weak, nonatomic) IBOutlet MKMapView *myMapView;
@end
MapViewController.m
#import "MapViewController.h"
#define CLS_LATITUDE 54.85477
#define CLS_LONGITUDE -1.57371
#define SPAN 0.10f;
@interface MapViewController ()
@end
@implementation MapViewController
@synthesize myMapView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
MKCoordinateRegion myRegion;
CLLocationCoordinate2D center;
center.latitude = CLS_LATITUDE;
center.longitude = CLS_LONGITUDE;
MKCoordinateSpan mySpan;
mySpan.latitudeDelta = SPAN;
mySpan.longitudeDelta = SPAN;
myRegion.center = center;
myRegion.span = mySpan;
[myMapView setRegion:myRegion animated:YES];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
最佳答案
该区域的代码看起来正确。您确定已在界面生成器中链接了myMapView出口吗?
如果单击并按住左侧的“文件所有者”对象,则按住Ctrl并将其从文件所有者拖到界面中的地图视图中,放开鼠标按钮时,您应该可以选择设置出口到myMapView
。然后,您可以在“连接”检查器中看到该链接,如右图所示。
编辑:
好的,因此看来,当您使用自动布局时,在调用viewDidLoad
时尚未设置地图视图的框架。我建议您将其移至- (void)viewWillLayoutSubviews
。例如:
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
[self setLocation];
}
-(void)setLocation {
// Set region etc...
}
关于ios - MKMapView不会缩放或设置动画,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13386235/