2

MKMapView同じサイズのビューがありますがself.view.bound、「閉じる」と完全に表示されます (マップの一部は非表示ですが、既に描画されています)。

すべての注釈ピンを目に見える四角形に合わせたいのですが、境界線にピンはありません。したがって、私がやりたいことはmapView、マップが閉じているときに、すべての注釈を可視のサブレクト (つまり、のサブレクト) に合わせることです。

マップが開いている (完全に表示されている) 場合は、注釈ピンが四角形全体に収まります。これにより、ズーム効果も得られます。

すべてのピンのMKMapRect(または) を取得する方法は知っていますが、その(/ ) をマップ四角形の目的のサブ四角形に合わせる方法はありません...助けてください。RegionMKMapRectRegion

これが私がやったことです

- (void) fitMapForAnnotationsAnimated:(BOOL)animated{

if ([self.mapView.annotations count]<=1) return;

MKMapRect mapRect = MKMapRectNull;

for(id<MKAnnotation> annotation in [self.mapView annotations]){

    if (![annotation isKindOfClass:[MKUserLocation class]]) {
        MKMapPoint annotationPoint = MKMapPointForCoordinate([annotation coordinate]);
        MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1);
        mapRect = MKMapRectUnion(mapRect, pointRect);
    }

}

MKMapRect newMapRect = mapRect;

if (mapFullScreen) {

    newMapRect =  [self.mapView mapRectThatFits:mapRect edgePadding:UIEdgeInsetsZero];


}else{

    MKMapView *smallMap = [[MKMapView alloc] initWithFrame:self.homeViewController.tableView.tableHeaderView.frame];

    newMapRect = [smallMap mapRectThatFits:mapRect edgePadding:UIEdgeInsetsMake(5, 5, 5, 5)];

    smallMap = nil;
}

MKCoordinateRegion region = MKCoordinateRegionForMapRect(newMapRect);
MKCoordinateRegion fitRegion = [self.mapView regionThatFits:region];

[self.mapView setRegion:fitRegion animated:animated];

}

マップが全画面表示の場合、手動で設定しても、fitRegion の中心は self.mapView の下部にあり、中心ではありません。

4

0 に答える 0