2012-10-11 52 views
1

我想添加一個簡單的MKPolyline連接兩個MKPinAnnotationViews。我閱讀了本教程,並觀看了蘋果的WWDC 2010視頻。 (http://spitzkoff.com/craig/?p=136)。我只是想畫出簡單的東西,所以在viewDidLoad中,我這樣做:看不到MKPolyline

MKMapPoint *pointArray = malloc(sizeof(CLLocationCoordinate2D) * 2); 
pointArray[0] = MKMapPointForCoordinate(CLLocationCoordinate2DMake(32, -115)); 
pointArray[1] = MKMapPointForCoordinate(CLLocationCoordinate2DMake(32, -130)); 

MKPolyline *line = [MKPolyline polylineWithPoints:pointArray count:2]; 
[self.mapView addOverlay:line]; 
    free(pointArray); 

然後我委託回調:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay { 
    if ([overlay isKindOfClass:[MKCircle class]]) { 
     MKCircleView *view = [[MKCircleView alloc] initWithOverlay:overlay]; 
     view.fillColor = [UIColor redColor]; 
     view.strokeColor = [[UIColor redColor] colorWithAlphaComponent:0.5]; 
     return view; 
    } 
    else { 
     MKPolylineView *view = [[MKPolylineView alloc] initWithOverlay:overlay]; 
     view.fillColor = [UIColor redColor]; 
     view.lineWidth = 20; 

    return view; 
    } 
} 

如果我做一個MKCircle一個簡單的例子,我看到這個圈子。有了這個我在viewDidLoad中添加的MKPolyline,我得到了mapView:viewForOverlay:callback,但沒有任何東西在屏幕上繪製。我錯過了什麼嗎?謝謝。

回答

0

MKPolylineView使用strokeColor繪製,而不是fillColor所以更改:

MKPolylineView *view = [[MKPolylineView alloc] initWithOverlay:overlay]; 
view.fillColor = [UIColor redColor]; 
view.lineWidth = 20; 

到:

MKPolylineView *view = [[MKPolylineView alloc] initWithOverlay:overlay]; 
view.strokeColor = [UIColor redColor]; // <-- stroke instead of fill 
view.lineWidth = 20;