MKMapViewDelegate を利用する簡単な方法を作成しましたが、xcode 5 シミュレーターでユーザーの場所を表示するのに問題があります。私の理解では、前のView Controllerのボタンが押され、対応するUIViewControllerクラスが作成された後にコードを実行する必要があります。ただし、ボタンが押され、上記のマップ ビューを含む View Controller がスタックにプッシュされると、ズームも位置も指定されていないマップが表示されます。シングル ビューのスタンドアロン アプリと同じコードを実行すると、問題なく動作します。ユーザーの現在の場所にズームするためにマップを取得するには、何を追加または変更する必要がありますか (シミュレーターでは、サンフランシスコ本社) ここに私が使用しているコードがあります。
ヘッダ:
#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 クラスは "プッシュ" セグエによってマップ ビューを含むビュー コントローラーに接続されていることに注意してください。助けてくださいありがとう!