0

我编写了一个简单的方法来利用 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 类通过“推送”连接连接到包含地图视图的视图控制器。请帮忙谢谢!

4

1 回答 1

0

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

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

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

也许缺少 XCode 设置来模拟位置? 模拟器中的当前位置

于 2014-06-16T18:18:05.597 回答