2011-08-01 4 views
2

私はこのコードをどのように動作させることができるのだろうかと思います。セルをクリックすると、DetailViewControllerが呼び出されます。これは、サンフランシスコの座標を持つマップです。しかし、私のマップは「世界」マップのみを表示し、私が設定した地域には行っていません。どうすれば「私」の座標で始めることができますか?ここでMKCoordinateRegionから "my"座標で始めるには?

は私のコードです:

#import "DetailViewController.h" 

@implementation DetailViewController 

@synthesize mapView; 

- (void) gotoLocation { 
    NSLog(@"allo"); 

    //start off in San Francisco 
    MKCoordinateRegion region; 
    region.center.latitude = 37.786996; 
    region.center.longitude = -122.440100; 
    region.span.latitudeDelta = 0.112872; 
    region.span.longitudeDelta = 0.109863; 

    [self.mapView setRegion:region animated:YES]; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self gotoLocation]; 
} 

- (void)dealloc { 
    [super dealloc]; 
    [mapView release]; 
} 

- (void)viewDidUnload { 
    [super viewDidUnload]; 
    self.mapView = nil; 
} 

@end 

おかげ

ポール

答えて

6
- (void)viewDidLoad{ 
[super viewDidLoad]; 

// define span for map: how much area will be shown 
MKCoordinateSpan span; 
span.latitudeDelta = 0.002; 
span.longitudeDelta = 0.002; 

// define starting point for map 
CLLocationCoordinate2D start; 
start.latitude = 37.786996; 
start.longitude = 0.109863; 

// create region, consisting of span and location 
MKCoordinateRegion region; 
region.span = span; 
region.center = start; 

// move the map to our location 
[self.mapView setRegion:region animated:YES]; 

}

+0

ありがとう、私はmapViewでIBを使用するのを忘れていました、とにかく説明に感謝します!また、世界の特定のポイントの緯度と経度をどのように知ることができますか? SF座標をコピー&ペーストしましたが、「ローマ」や「ブエノスアイレス」のようにどのように知っていますか? googleマップで何か...? – Paul

+0

ローマ、ブエノスアイレスなどのデータを入手するには、このWebサイトhttp://www.geonames.org/を使用してください。または、アプリケーションで使用したい場合は、クエリを実行するためのコードを書くことができます。 – rich

+0

ありがとうございます。 – Paul

1

あなたのフレームは、あなたがインスタンス化するIBを使用している本のルックスで、地域を設定する前に設定する必要がありますあなたはおそらくsetRegionメッセージをviewDidAppear:に入れ、これをあなたのDetailViewControllerに入れます。あなたは世界地図を見ているので

-(void)viewDidAppear { 
    MKCoordinateRegion region; 
    region.center.latitude = 37.786996; 
    region.center.longitude = -122.440100; 
    region.span.latitudeDelta = 0.112872; 
    region.span.longitudeDelta = 0.109863; 
    [self.mapView setRegion:region animated:YES]; 
} 

または

あなたが地域を設定する前に、あなたはこのような何かを行うことができ

self.mapView.frame = self.view.bounds 
+0

本当に私はIBでmapViewをリンクするのを忘れました。とにかくありがとう ! – Paul

2

を(動作しない場合があります)マップビューのフレームはきれいでなければならず、リージョンを設定するコードは機能するはずです。

setRegionコールが機能しない可能性が最も高い理由は、mapView IBOutletがxibのマップビューコントロールに接続されていないことが原因です。 IBでは、File's Ownerを右クリックし、mapViewコンセントをマップビューコントロールに接続します。

マップビューコントロールのdelegateアウトレットをFile's Ownerに接続して、実装するデリゲートメソッド(後で)が呼び出されるようにすることもできます。

deallocでは、[super dealloc]を最後に呼び出す必要があります(問題とは関係ありません)。説明はthis answerを参照してください。

+0

この素晴らしい答えのアンナありがとう!私はスーパーdeallocについて知りませんでした。それは完璧に動作します! – Paul

関連する問題