我编写了一个简单的方法来利用 MKMapViewDelegate,但在 xcode 5 模拟器中显示用户位置时遇到了一些问题。我的理解是,应该在按下前一个视图控制器的按钮并创建相应的 UIViewController 类后执行代码。但是,当按下按钮并将具有所述地图视图的视图控制器推入堆栈时,它只会显示没有缩放和位置的地图。如果我运行与单个视图独立应用程序相同的代码,它就可以正常工作。我必须添加或更改什么才能使地图缩放到用户当前位置(在模拟器中它的 San Fran 总部)这是我正在使用的代码;
标题:
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface SPMenuViewController : UIViewController <MKMapViewDelegate>
@property (strong, nonatomic) IBOutlet MKMapView *myMapView;
@end
执行:
#import "SPMenuViewController.h"
@interface SPMenuViewController ()
@end
@implementation SPMenuViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.myMapView.delegate = self;
[self.myMapView setShowsUserLocation:YES];
}
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
// Coords
CLLocationCoordinate2D myLocation = [userLocation coordinate];
// Zoom Region
MKCoordinateRegion zoomRegion = MKCoordinateRegionMakeWithDistance(myLocation, 2500, 2500);
// Show Location
[self.myMapView setRegion:zoomRegion animated:YES];
}
我认为应该注意的是,前一个视图嵌入在导航控制器中,并且 UIButton 类通过“推送”连接连接到包含地图视图的视图控制器。请帮忙谢谢!