iosobjective-cmapkitmkpolyline

Dotted line on map view


I can create a line between two points fairly easy with the below code (part of it anyways) How could I make the line dotted instead of solid? Also would it be possible to change the opacity the longer the line is?

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id < MKOverlay >)overlay
{
    MKPolylineRenderer *renderer =[[MKPolylineRenderer alloc] initWithPolyline:overlay];
    renderer.strokeColor = [UIColor orangeColor];
    renderer.lineWidth = 3.0;

    return renderer;
}

Solution

  • You can use the lineDashPattern property to create the pattern you want for the line.

    MKPolylineRenderer is a subclass of MKOverlayPathRenderer which has that property and a few others (see the link to the documentation).

    For example, this sets the pattern to a line 2 points long followed by a 5 point gap. The pattern is repeated for the entire length of the polyline.

    renderer.lineDashPattern = @[@2, @5];
    


    For the opacity, you can either apply an alpha to the strokeColor:

    renderer.strokeColor = [[UIColor orangeColor] colorWithAlphaComponent:0.5];
    

    or set the alpha property:

    renderer.alpha = 0.5;
    

    Not sure what you mean by "the longer the line is" part of the question.