different coloured polygon overlays

2019-01-25 21:47发布

问题:

is it possible to create different coloured polygons on a map view using the following method?

-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id )overlay{

say if i had 2 polygons could i set one to red and the other to yellow?

回答1:

One way is to use the title property to tell one polygon from another.

When adding the polygons, set their title accordingly:

pone.title = @"one";
[mapView addOverlay:pone];

pother.title = @"other";
[mapView addOverlay:pother];

Then in viewForOverlay, you can set the color based on title:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
    MKPolygonView *pv = [[[MKPolygonView alloc] initWithPolygon:overlay] autorelease];

    if ([overlay.title isEqualToString:@"one"])
        pv.fillColor = [UIColor redColor];
    else if ([overlay.title isEqualToString:@"other"])
        pv.fillColor = [UIColor yellowColor];
    else
        pv.fillColor = [UIColor blueColor];

    return pv;
}