MKMapView - 未调用rendererForOverlay

use*_*323 14 mkmapview ios mkpolyline

我最近开始学习objectiveC并开始在iOS6中开发应用程序.

现在,我正在尝试将其转换为iOS7并面临MKMap的问题.

在iOS6中,我使用的是viewForOverlay.

在iOS7中,我将其更改为renderForOverlay.但是,我的应用程序不是调用mapView:rendererForOverlay.以下是我的代码.感谢您的帮助.

- (void) drawPolyline:(NSArray *)locations
{
    [mapView setDelegate:self];
    ...
    ...

    self.polyline = [MKPolyline polylineWithCoordinates:locationCoordinate2DArray count:numberOfLocations];
    free(locationCoordinate2DArray);
    [mapView addOverlay:self.polyline];
    [mapView setNeedsDisplay];
}

- (MKOverlayRenderer*)mapView:(MKMapView*)mapView rendererForOverlay:(id <MKOverlay>)overlay
{
    MKPolylineRenderer* lineView = [[MKPolylineRenderer alloc] initWithPolyline:self.polyline];
    lineView.strokeColor = [UIColor blueColor];
    lineView.lineWidth = 7;
    return lineView;
}
Run Code Online (Sandbox Code Playgroud)

小智 16

我假设您MKMapViewDelegate通过@interface语句在头文件中声明了委托:

但是,您是否在viewDidLoad(或您认为合适的)方法中分配了委托?

self.mapView.delegate = self;
Run Code Online (Sandbox Code Playgroud)