MKMapView在mapView可见矩形的子对象中拟合注释

时间:2014-03-08 13:43:25

标签: ios annotations mkmapview frame pins

我的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的下半部分而不是中心,即使我手动设置它。

0 个答案:

没有答案