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