2012-10-26 39 views
0

我想知道是否有可能改變地圖覆蓋阿爾法的基礎上選擇maptype這裏是我的代碼我認爲可能會工作,但似乎並沒有。任何人都可以提供一些煽動?基於MapType選擇更改覆蓋阿爾法

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

回答

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

但在圖形頁面:viewForOverlay您根據當前的地圖類型設置阿爾法。要在地圖更改地圖類型時更改Alpha,您需要使用KVO觀察mapType屬性。所以當地圖類型發生變化時,您只需爲所有疊加層設置新的alpha值。要獲得視圖覆蓋使用

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

不知道我會跟着你...我在哪裏把[mapView viewForOverlay:(id )overlay]; 我有mapType選擇使用IBAction –