To draw polygon on google map with MapKit framework

ios, mapkit, objective-c

Solution

The way I'm reading your question is that you want to programmatically draw the polygon on the map. For this, consult the Apple docs on MapKit.

You don't need to add transparent views over the MapKit map (`MKMapView`). You create an overlay object, in this case an `MKPolygon`. (in the following example, the variable `map` will be the `MKMapView` instance owned by the view controller that you put this code in):

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];

Then, if you want to customize the look (colors, stroke, etc.) of the overlay, you implement the `MKMapViewDelegate` protocol in the view controller you have that owns the `MKMapView` object and provide an implementation of `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;
}

Of course, always remember to actually assign the map instance's delegate to your view controller (MKMapViewDelegate), either in the interface builder, or in code (e.g. `viewDidLoad`).

Problem

I wanted to display Google map in a map view on which I want to draw a polygon/circle. Any advice?

Original source