Пунктирная линия на карте

Я могу создать линию между двумя точками довольно легко с приведенным ниже кодом (часть из них в любом случае). Как я мог бы сделать линию пунктирной, а не сплошной? Также было бы возможно изменить непрозрачность, чем длиннее линия?

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

    return renderer;
}

Ответ 1

Вы можете использовать свойство lineDashPattern, чтобы создать шаблон, который вы хотите использовать для линии.

MKPolylineRenderer является подклассом MKOverlayPathRenderer, который обладает этим свойством и несколькими другими (см. ссылку на документацию).

Например, это устанавливает шаблон в строку длиной 2 точки, за которой следует 5-точечный зазор. Шаблон повторяется для всей длины полилинии.

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


Для непрозрачности вы можете применить альфу к strokeColor:

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

или установите свойство alpha:

renderer.alpha = 0.5;

Не уверен, что вы подразумеваете под словом "чем длиннее строка".