0

我想知道是否可以根据选择地图类型来更改地图叠加 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];
}
4

1 回答 1

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];
于 2012-10-29T10:02:30.980 回答