MKMapView の現在の領域をカバーするスクエア オーバーレイを作成するにはどうすればよいですか。私の MKMapView は、ユーザーの現在の場所の座標で設定されていますが、それらは中心座標です。現在のビューに完全に収まる正方形のオーバーレイを作成できるように、正方形の座標を計算するにはどうすればよいですか?
みんなありがとう!
以下のコードのように、centerCoordinate
とregion
プロパティを使用して、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;
}
}