2

CLRegion (中心と半径) を 2 点 (左上、右下) の座標セットに変換したいと思います。

この回答を見たことがありますが、適切ではありません: Convert MKCoordinateRegion to MKMapRect

私が CLRegion を持っている理由は、それが Forward Geolocation の出力であるためです。

データベースを照会するには、2 つの緯度/経度ポイントが必要です (したがって、CLRegion の containsCoordinate は使用できません)。

4

2 に答える 2

3

CLCircularRegion (CLRegion と同様) を MKMapRect に変換するメソッドを次に示します。

メソッドによって返される領域は、円である CLCircularRegion に適合する正方形であることに注意してください。

- (MKMapRect) rectForCLRegion:(CLCircularRegion *) cicularRegion {
    MKCoordinateRegion region =  MKCoordinateRegionMakeWithDistance(cicularRegion.center, cicularRegion.radius*2, cicularRegion.radius*2);

    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));
}
于 2014-12-04T01:40:29.843 に答える