mapView方法显示地图但不执行任何操作

时间:2014-06-16 17:01:12

标签: ios objective-c mkmapview mapkit mkcoordinateregion

我编写了一个使用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类通过“push”segue连接到包含地图视图的View Controller。请帮忙谢谢!

1 个答案:

答案 0 :(得分:0)

如果设置断点,userLocation值是否有效?

设置showsUserLocation:YES应该为您处理获取/显示userLocation,但不保证该位置将在地图上。由于您在委托方法中设置了用户位置和zoomRegion,因此请在视图出现之前检查/是否实际调用了该方法。也许它没有初始值可以使用。

您可以尝试在viewDidLoad中设置初始userLocation和zoomRegion,而不是在didUpdateLocation中设置,以查看是否可以更好地工作。这看起来似乎应该正常工作。

可能缺少模拟位置的XCode设置? Current Location in the Simulator