我的MKMapView
视图的大小与self.view.bound
大小相同,但是当“关闭”(地图的一部分被隐藏但已经绘制)时,它完全可见。
我想将所有注释引脚放到可见的rect上,但边界没有任何引脚。所以我想做的是在关闭地图时将所有注释适合于可见的子矩形(即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的下半部分而不是中心,即使我手动设置它。