То, как я читаю ваш вопрос, заключается в том, что вы хотите программно нарисовать многоугольник на карте. Для этого обратитесь к Apple документациям на MapKit.
Вам не нужно добавлять прозрачные виды на карту MapKit (MKMapView
). Вы создаете объект overlay , в данном случае MKPolygon
. (в следующем примере переменная map
будет экземпляром MKMapView
, принадлежащим контроллеру представления, в который вы поместили этот код):
CLLocationCoordinate2D points[4];
points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116);
points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066);
points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981);
points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267);
MKPolygon* poly = [MKPolygon polygonWithCoordinates:points count:4];
poly.title = @"Colorado";
[map addOverlay:poly];
Затем, если вы хотите настроить внешний вид (цвета, обводку и т. Д.) Наложения, вы реализуете протокол MKMapViewDelegate
в имеющемся у вас контроллере представления, который владеет объектом MKMapView
, и обеспечивает реализацию mapView:viewForOverlay
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKPolygon class]])
{
MKPolygonView* aView = [[[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay] autorelease];
aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2];
aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];
aView.lineWidth = 3;
return aView;
}
return nil;
}
Конечно, всегда не забывайте назначать делегат экземпляра карты вашему контроллеру представления (MKMapViewDelegate), либо в построителе интерфейса, либо в коде (например, viewDidLoad
).