1

我以相同的方式在地图上绘制了三条线:

    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];
}

该方法被调用并且渲染器不是零,但线条不会改变颜色。感觉我错过了一些基本的东西,但没有得到任何文档。

4

1 回答 1

0

查看-setNeedsDisplay祖先类中的 和相关方法,MKOverlayRenderer将区域标记为脏并需要重绘。

于 2014-03-14T17:16:28.390 回答