0

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 クラスは "プッシュ" セグエによってマップ ビューを含むビュー コントローラーに接続されていることに注意してください。助けてくださいありがとう!

4

1 に答える 1

0

ブレークポイントを設定した場合、userLocation の値は有効ですか?

設定 showsUserLocation:YES は userLocation の取得/表示を処理する必要がありますが、場所がマップ上にあることを保証するものではありません。デリゲート メソッドでユーザーの場所と zoomRegion を設定しているため、ビューが表示される前にそのメソッドが実際にいつ呼び出されるかを確認してください。動作する初期値がない可能性があります。

didUpdateLocation の代わりに viewDidLoad で初期の userLocation と zoomRegion を設定してみて、それがうまく機能するかどうかを確認できます。これはすべて正常に動作するはずです。

ロケーションをシミュレートするための XCode 設定が欠落している可能性がありますか? シミュレーターの現在位置

于 2014-06-16T18:18:05.597 に答える