MKMapView
同じサイズのビューがありますがself.view.bound
、「閉じる」と完全に表示されます (マップの一部は非表示ですが、既に描画されています)。
すべての注釈ピンを目に見える四角形に合わせたいのですが、境界線にピンはありません。したがって、私がやりたいことはmapView
、マップが閉じているときに、すべての注釈を可視のサブレクト (つまり、のサブレクト) に合わせることです。
マップが開いている (完全に表示されている) 場合は、注釈ピンが四角形全体に収まります。これにより、ズーム効果も得られます。
すべてのピンのMKMapRect
(または) を取得する方法は知っていますが、その(/ ) をマップ四角形の目的のサブ四角形に合わせる方法はありません...助けてください。Region
MKMapRect
Region
これが私がやったことです
- (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 の下部にあり、中心ではありません。