2012-07-08 78 views
0

当我加载我的mapView时,我只有一个刻度 - 用户位置。一些行动后,我添加更多的针。但重点仍在用户位置。我想放大图像以查看所有目标。我怎样才能做到这一点? 我的代码:添加新引脚后更改区域

-(void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 
    if (views.count == 1) { 
     MKAnnotationView *annotationView = [views objectAtIndex:0]; 
     id<MKAnnotation>mp = [annotationView annotation]; 
     MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate], 500, 500); 
     [mapView setRegion:region animated:YES]; 
    } else { 
     for (NSUInteger i = 0; i<views.count; i++) { 
      [mapView addAnnotation:[views objectAtIndex:i]]; 
     } 

    } 
} 

回答

2

MkCoordinateRegion有一个名为span的成员。为了放大/缩小,您必须使用该值:

region.span.longitudeDelta = aValue; 
region.span.latitudeDelta = aValue; 

希望这会有所帮助。

干杯!

+0

你的意思是尝试在'else'分支中创建新区域? – RomanHouse 2012-07-08 19:31:13

+0

是的,你在那里添加了超过1个注释,你想看到它们,对吧?这就是我从你的问题中所理解的。如果这是正确的,你必须计算它们之间的最大距离,以便检测它们都适合的矩形。并将其设置为您的新区域。我看不到另一种方式。虽然计算一些点之间的距离并不是什么大问题,但我不知道如何将它与区域范围关联起来以获得缩放级别。但我相信这两者之间必须有联系。 – George 2012-07-08 19:46:48