2014-03-13 21 views
1

後我有三個線,我畫到地圖,都以同樣的方式:如何更改MKPolyline的顯色

MKPolyline *polyline = [MKPolyline polylineWithCoordinates:coordinateArray count:2]; 
    [self.mapView addOverlay:polyline]; 
    self.routeLine = polyline; 

和:

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay { 

    if ([overlay isKindOfClass:[MKPolyline class]]) { 
     MKPolyline *polyline = (MKPolyline *)overlay; 
     MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithPolyline:polyline]; 
     renderer.fillColor = [UIColor statusGreen]; 
     renderer.strokeColor = [UIColor statusGreen]; 
     renderer.lineWidth = 5; 

     if (overlay == self.routeLine) { 
      self.routeLineRenderer = renderer; 
     } 

     return renderer; 

    } 

    return nil; 
} 

這是所有工作正常。

幾秒鐘我想改變的線路之一的顏色後:

(void) changeLineColor:(id)object { 
    NSLog(@"changing color"); 
    self.routeLineRenderer.fillColor = [UIColor statusAmber]; 
} 

該方法被調用和渲染不爲零,但線不變色。感覺我錯過了一些基本的東西,但沒有得到任何文檔。

回答

0

查看-setNeedsDisplay和祖先MKOverlayRenderer類中的相關方法,將區域標記爲髒並且需要重繪。

+0

所以'[self.routeLineRenderer setNeedsDisplay];'?不適合我嗎? – Lewis42

+0

上面,確保這個任務實際上發生了:'self.routeLineRenderer = renderer'。我懷疑'=='測試沒有通過。 – incanus