ポイントのリストでaMKPolygon
と aを使用できます。MKPolygonView
viewController が作成されるか、データが読み込まれるときに、MKPolygon
色付きのブロックごとにマップに追加します。
- (void)viewDidLoad {
for (NSDictionary *coloredAreas in coloredAreas) {
NSArray *coordinateData = coloredArea[@"coords"];
// this assumes coordinateData is an array of arrays like:
// [[0, 0], [0, 1], [0, 1]]
NSUInteger coordsLen = [coordinateData count];
CLLocationCoordinate2D *coords = malloc(sizeof(CLLocationCoordinate2D) * coordsLen);
for (int i=0; i < coordsLen; i++) {
coords[i] = CLLocationCoordinate2DMake(coordinateData[i][0], coordinateData[i][1]);
}
MKMapPoint point[] = coloredAreas['points'];
MKPolygon *polygon = [MKPolygon polygonWithPoints:points count:3];
[self.mapView addOverlay:polygon];
}
}
次に、mapView:viewForOverlay
各ポリゴンを描画するメソッドを追加します。
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKPolygonView *polygonView = [[MKPolygonView alloc] initWithPolygon:overlay]];
polygonView.fillColor = [UIColor greenColor];
return polygonView;
}
これにより、ポリゴンごとに緑色のボックスが描画されます。各ポリゴンを特定の色にするために、プロパティを持つColoredPolygon
サブクラスであるクラスを作成します。次に、データをロードするときに色を作成して設定します。では、 を aにキャストしてから、を に設定します。MKPolygon
color
ColoredPolygon
mapView:viewForOverlay
MKOverlay
ColoredPolygon
fillColor
ColoredPolygon.color