0

MKMapView の使い方を学ぼうとしていますが、いくつかのチュートリアルに従っていますが、定義した場所にズームインできないようです。代わりに、大西洋を中心としたマップ ビュー全体に読み込まれます。私が使用しているチュートリアルが機能しなくなったことを意味する iOS6 で何かが変更されたと思いますか? (チュートリアルは iOS3-iOS5 です)。

MapViewController のカスタム クラスを指定して、Interface Builder で ViewController を作成しました。次に、MKMapView をドラッグし、アシスタント エディターを使用してこれを MapViewController.h に入れました。

MapViewController.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

@interface MapViewController : UIViewController
@property (weak, nonatomic) IBOutlet MKMapView *myMapView;

@end

MapViewController.m

#import "MapViewController.h"

#define CLS_LATITUDE 54.85477
#define CLS_LONGITUDE -1.57371
#define SPAN 0.10f;

@interface MapViewController ()

@end

@implementation MapViewController
@synthesize myMapView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

 - (void)viewDidLoad
{
    [super viewDidLoad];
    MKCoordinateRegion myRegion;
    CLLocationCoordinate2D center;
    center.latitude = CLS_LATITUDE;
    center.longitude = CLS_LONGITUDE;
    MKCoordinateSpan mySpan;
    mySpan.latitudeDelta = SPAN;
    mySpan.longitudeDelta = SPAN;
    myRegion.center = center;
    myRegion.span = mySpan;
    [myMapView setRegion:myRegion animated:YES];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 @end
4

1 に答える 1

1

地域のコードは正しいようです。インターフェイス ビルダーで myMapView アウトレットをリンクしましたか?

ここに画像の説明を入力

左側の「ファイルの所有者」オブジェクトをクリックして保持し、Ctrlキーを押しながらファイルの所有者からインターフェイスのマップ ビューにドラッグすると、マウス ボタンを放すと、アウトレットを設定するオプションが表示されます。にmyMapView。右側に示すように、接続インスペクタにリンクが表示されます。

編集:

OK、Autolayout を使用しているため、呼び出されるまでにマップ ビューのフレームが設定されていないようviewDidLoadです。に移動することをお勧めします- (void)viewWillLayoutSubviews。例えば:

- (void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];
    [self setLocation];
}

-(void)setLocation {
    // Set region etc...
}
于 2012-11-14T20:22:58.247 に答える