根据MapType选择更改Overlay Alpha

时间:2012-10-26 04:07:22

标签: mkmapview mapkit mkoverlay

我想知道是否有可能根据选择maptype更改地图叠加alpha这里是我认为可能有用的代码,但似乎没有。任何人都可以提供一些煽动吗?

- (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 个答案:

答案 0 :(得分:0)

此代码工作正常

- (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;
}

但是在mapView:viewForOverlay中,您可以根据当前地图类型设置alpha。要在地图更改地图类型时更改Alpha,您需要使用KVO观察mapType属性。因此,当地图类型发生变化时,您只需为所有叠加层设置新的Alpha。获取叠加使用的视图

[mapView viewForOverlay:(id<MKOverlay>)overlay];