2012-10-26 5 views
0

지도 제작 오버레이를 알파 기반으로 변경할 수 있는지 알고 싶습니다. 내 지도력이 작동한다고 생각하지만 내지도 않은 것 같습니다. 누군가가 약간의 자극을 줄 수 있습니까?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]; 
} 

답변

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는 현재지도 유형에 따라 알파를 설정합니다. 지도 변경지도 유형에서 알파를 변경하려면 KVO를 사용하여 mapType 속성을 관찰해야합니다. 따라서지도 유형이 변경되면 모든 오버레이에 대해 새 알파를 설정하기 만하면됩니다. [(ID ) 오버레이지도보기 viewForOverlay] ... 오버레이 뷰는 다음

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

확실하지 메신저를 사용 얻으려면 내가 넣어 않는 경우 IBAction을 사용하여 mapType을 선택했습니다. –