1

MKMapView の現在の領域をカバーするスクエア オーバーレイを作成するにはどうすればよいですか。私の MKMapView は、ユーザーの現在の場所の座標で設定されていますが、それらは中心座標です。現在のビューに完全に収まる正方形のオーバーレイを作成できるように、正方形の座標を計算するにはどうすればよいですか?

みんなありがとう!

4

1 に答える 1

6

以下のコードのように、centerCoordinateregionプロパティを使用して、4 つのコーナーを抽出MKMapViewすることでオーバーレイを作成できます。MKPolygon

    vertex[0]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude+map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude-map.region.span.longitudeDelta/2.);
    vertex[1]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude+map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude+map.region.span.longitudeDelta/2.);
    vertex[2]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude-map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude+map.region.span.longitudeDelta/2.);
    vertex[3]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude-map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude-map.region.span.longitudeDelta/2.);
    MKPolygon *square = [MKPolygon polygonWithCoordinates:vertex count:4];

次に、ポリゴンをオーバーレイとして追加します。

[map addOverlay:square]

最後にmapView:rendererForOverlay:、ポリゴン オーバーレイに基づいてレンダリングされる正方形を定義します。

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id)overlay {  
    if([overlay isKindOfClass:[MKPolygon class]]) {
        MKPolygonRenderer *renderer = [[MKPolygonRenderer alloc] initWithPolygon:(MKPolygon *)overlay];
        renderer.fillColor = [[UIColor redColor] colorWithAlphaComponent:0.25];
        return renderer;
    } else {
        return nil;
    }    
}
于 2014-05-03T21:37:45.047 に答える