2012-04-07 38 views
1

對於MKMapView疊加,我需要計算一個圓的boundingMapRect。我有它的中心座標和半徑(以米爲單位) - 但不知道如何獲得相應的boundingMapRect。 作爲解決方法,我使用相同的數據創建MKCircle,並使用此邊界映射。但是......至少這並不算高雅。boundingMapRect for a circle

所以:如何計算給定半徑和中心的圓的boundingMapRect?

回答

1
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(center_coord, radius, radius); 

然後使用答案在這裏MKCoordinateRegion轉換爲MKMapRect Convert MKCoordinateRegion to MKMapRect

+0

那麼,在第一瞬間,我認爲這解決了我的問題。但鏈接答案中的響應需要有一個MKOverlayView - 這將需要從上面的boundingMapRect。循環問題? – Axel 2012-04-09 18:06:41

0

克雷格的回答爲我工作:

- (MKMapRect)boundingMapRect 
{ 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.coordinate, self.radius, self.radius); 
    MKMapRect boundingRect = MKMapRectForCoordinateRegion(region); 
    return boundingRect; 
} 

MKMapRect MKMapRectForCoordinateRegion(MKCoordinateRegion region) 
{ 
    MKMapPoint a = MKMapPointForCoordinate(CLLocationCoordinate2DMake(
                     region.center.latitude + region.span.latitudeDelta/2, 
                     region.center.longitude - region.span.longitudeDelta/2)); 
    MKMapPoint b = MKMapPointForCoordinate(CLLocationCoordinate2DMake(
                     region.center.latitude - region.span.latitudeDelta/2, 
                     region.center.longitude + region.span.longitudeDelta/2)); 
    return MKMapRectMake(MIN(a.x,b.x), MIN(a.y,b.y), ABS(a.x-b.x), ABS(a.y-b.y)); 
}