2014-03-31 22 views
0

我有MKMapItems的数组,我想找到我可以插入坐标进入边界地区,这将使最放大地图包含所有MKMapItems找到最小的可能边界区域给予MKMapItems

每这些地图项目的坐标是这样的,一些简单的边界计算可以找到四个角落。我正在寻找一个已经定义的功能,如果它可用的话。

如果还没有预定义的函数,那么任何帮助都可以计算出给定的一组点的适当的跨度值,同样也将被赞赏!

在此先感谢!

回答

3

的iOS 7具有与方法:

- (void)showAnnotations:(NSArray *)annotations animated:(BOOL)animated 

给它标数组,它会改变区域为您:

[self.mapView showAnnotations:placemarks animated:YES]; 

您可以从地图项目中获得地标:

NSMutableArray *placemarks = [NSMutableArray array]; 
for (MKMapItem *mapItem in mapItems) { 
    [placemarks addObject:mapItem.placemark]; 
} 
+0

由于MKMapItem本身并未实现MKAnnotation协议,因此需要将'mapItem.placemark'添加到'placemarks'数组,因为showAnnotations:需要一组实现MKAnnotation的对象。 – Anna

+0

@安娜啊,你说得对。我已经意识到,然后忘了在代码中正确地做到这一点。 –

1

尝试用以下代码:

MKMapRect zoomRect = MKMapRectNull; 
for (EveryMapItem in MKMapItems) 
{ 
    MKMapPoint annotationPoint = MKMapPointForCoordinate(EveryMapItem.coordinate); 
    MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1); 
    zoomRect = MKMapRectUnion(zoomRect, pointRect); 
} 
[mapView setVisibleMapRect:zoomRect animated:YES];