對於MKMapView疊加,我需要計算一個圓的boundingMapRect。我有它的中心座標和半徑(以米爲單位) - 但不知道如何獲得相應的boundingMapRect。 作爲解決方法,我使用相同的數據創建MKCircle,並使用此邊界映射。但是......至少這並不算高雅。boundingMapRect for a circle
所以:如何計算給定半徑和中心的圓的boundingMapRect?
對於MKMapView疊加,我需要計算一個圓的boundingMapRect。我有它的中心座標和半徑(以米爲單位) - 但不知道如何獲得相應的boundingMapRect。 作爲解決方法,我使用相同的數據創建MKCircle,並使用此邊界映射。但是......至少這並不算高雅。boundingMapRect for a circle
所以:如何計算給定半徑和中心的圓的boundingMapRect?
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(center_coord, radius, radius);
然後使用答案在這裏MKCoordinateRegion轉換爲MKMapRect Convert MKCoordinateRegion to MKMapRect
克雷格的回答爲我工作:
- (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));
}
那麼,在第一瞬間,我認爲這解決了我的問題。但鏈接答案中的響應需要有一個MKOverlayView - 這將需要從上面的boundingMapRect。循環問題? – Axel 2012-04-09 18:06:41