As @incanus points out, you can define an interiorPolygons array. For instance:
NSUInteger interiorCount = 5; CLLocationCoordinate2D interiorCoordinates[interiorCount]; interiorCoordinates[0] = CLLocationCoordinate2DMake(...); interiorCoordinates[1] = CLLocationCoordinate2DMake(...); interiorCoordinates[2] = CLLocationCoordinate2DMake(...); interiorCoordinates[3] = CLLocationCoordinate2DMake(...); interiorCoordinates[4] = CLLocationCoordinate2DMake(...); MKPolygon* interiorPolygon = [MKPolygon polygonWithCoordinates:interiorCoordinates count:interiorCount]; interiorPolygon.title = @"interior polygon"; NSUInteger count = 5; CLLocationCoordinate2D coordinates[count]; coordinates[0] = CLLocationCoordinate2DMake(...); coordinates[1] = CLLocationCoordinate2DMake(...); coordinates[2] = CLLocationCoordinate2DMake(...); coordinates[3] = CLLocationCoordinate2DMake(...); coordinates[4] = CLLocationCoordinate2DMake(...); MKPolygon* polygon = [MKPolygon polygonWithCoordinates:coordinates count:count interiorPolygons:@[interiorPolygon]]; polygon.title = @"exterior polygon"; [self.mapView addOverlay:polygon];
This gives:

The loan goes to @incanus!
source share