2012-06-02 4 views
3

MKOverlayView에서 서로 다른 두 가지 MKPolylineView를 추가하는 데 문제가 있습니다. 이것을 달성하는 방법에 대한 아이디어가 있습니까?두 개 추가 MKPolylineView

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 
{ 
MKOverlayView* overlayView = nil; 
UIColor *mycolor; 

self.routeLineView = [[[MKPolylineView alloc] initWithPolyline:self.routeLine] autorelease]; 

mycolor = [UIColor colorWithRed:85.0/255.0 green:133.0/255.0 blue:255.0/255.0 alpha:0.6]; 
self.routeLineView.fillColor = mycolor; 
self.routeLineView.strokeColor = mycolor; 
self.routeLineView.lineWidth = 15; 
[overlayView addSubview:self.routeLineView]; 

self.routeLineView2 = [[[MKPolylineView alloc] initWithPolyline:self.routeLine2] autorelease]; 
mycolor = [UIColor colorWithRed:85.0/255.0 green:19.0/255.0 blue:25.0/255.0 alpha:0.6]; 
self.routeLineView2.fillColor = mycolor; 
self.routeLineView2.strokeColor = mycolor; 
self.routeLineView2.lineWidth = 15; 
[overlayView addSubview:self.routeLineView2]; 

return overlayView; 
} 

답변

0

viewForOverlay 방법 것은 당신이지도에 추가하는 각 오버레이에 대해 개별적으로 호출됩니다 : 덕분에 여기

내 코드입니다. 따라서이 메서드에서는 현재 호출되고있는 오버레이 (즉, overlay 매개 변수)에 대한 오버레이 뷰만 반환합니다.

보기를 요청하는 오버레이를 확인하고 해당 오버레이에 대한보기 만 생성하고 반환합니다. 예를 들어

는 :

if (overlay == self.routeLine) 
{ 
    //create and return overlay view for routeLine... 
    //set color, etc... 
    return self.routeLineView; 
} 
else 
if (overlay == self.routeLine2) 
{ 
    //create and return overlay view for routeLine2... 
    //set color, etc... 
    return self.routeLineView2; 
} 

return nil; 

addSubview 물건을하지 마십시오. 오버레이보기를 만들고 반환하십시오.