1. ホーム
  2. ios

[解決済み] 複数のアノテーションを一度に表示するMKMapViewの位置決め

2023-02-07 13:26:56

質問

MKMapViewに追加したい注釈がいくつかあります(0-n個のアイテムが可能で、nは一般的に5程度です)。注釈を追加することはできますが、一度にすべての注釈が画面に収まるようにマップのサイズを変更したいのですが、これを行う方法がわかりません。

私は -regionThatFits: を見てきましたが、それをどうすればいいのかよくわかりません。私がこれまでに得たものを示すために、いくつかのコードを投稿します。これは一般的に簡単なタスクであるべきだと思いますが、これまでのところ、私はMapKitに少し圧倒されているような気がします。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

location = newLocation.coordinate;
//One location is obtained.. just zoom to that location

MKCoordinateRegion region;
region.center = location;

//Set Zoom level using Span
MKCoordinateSpan span;
span.latitudeDelta = 0.015;
span.longitudeDelta = 0.015;
region.span = span;
// Set the region here... but I want this to be a dynamic size
// Obviously this should be set after I've added my annotations
[mapView setRegion:region animated:YES];

// Test data, using these as annotations for now
NSArray *arr = [NSArray arrayWithObjects:@"one", @"two", @"three", @"four", nil];
float ex = 0.01;
for (NSString *s in arr) {
    JBAnnotation *placemark = [[JBAnnotation alloc] initWithLat:(location.latitude + ex) lon:location.longitude];
    [mapView addAnnotation:placemark];
    ex = ex + 0.005;
}
    // What do I do here?
    [mapView setRegion:[mapView regionThatFits:region] animated:YES];
}

これはすべて位置情報の更新を受けたときに発生することに注意してください... これが適切な場所かどうかわかりません。もしそうでなければ、どこが良い場所でしょうか? -viewDidLoad ?

ありがとうございました。

どのように解決するのですか?

iOS7では showAnnotations:animatedを使用することができます。

[mapView showAnnotations:annotations animated:YES];