0

I would like to know if its possible to change the map overlay alpha based on selecting the maptype here is my code I thought might work but it doesn't seem to. Can anyone provide some incite?

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay{
TileOverlayView *view = [[TileOverlayView alloc] initWithOverlay:overlay];
if(mapview.mapType == MKMapTypeHybrid) {
    view.tileAlpha = 0.55;
} else if(mapview.mapType == MKMapTypeSatellite) {
    view.tileAlpha = 0.0;
} else {
    view.tileAlpha = 0.75;
}
return [view autorelease];
}

1 Answers1

0

This code works fine

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
    MKCircleView *circleView = [[MKCircleView alloc] initWithCircle:overlay];

    CGFloat alpha;

    if (mapView.mapType == MKMapTypeStandard) {
        alpha = 0.5f;
    } else {
        alpha = 1.0f;
    }

    circleView.fillColor = [[UIColor blackColor] colorWithAlphaComponent:alpha];

    return circleView;
}

But in mapView:viewForOverlay you set alpha based on current map type. To change alpha when map change map type you need to observe mapType property using KVO. So when map type is changing you just set new alpha for all overlays. To get view for overlay use

[mapView viewForOverlay:(id<MKOverlay>)overlay];
AntonPalich
  • 1,488
  • 12
  • 13
  • Not sure im following you...where do I put the [mapView viewForOverlay:(id)overlay]; I have the mapType select using a IBAction – Russell Benzing Dec 04 '12 at 20:50