我有一个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 的下部而不是中心,即使我手动设置它也是如此。