2013-12-13 4 views
11

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

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

    return renderer; 
} 

ответ

39

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

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

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

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


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

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

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

renderer.alpha = 0.5; 

Не уверен, что вы подразумеваете под " тем больше линия является «частью вопроса».

+0

Анна, спасибо за помощь. В этом есть смысл. Что касается «длинной линии», мне было интересно, можно ли изменить значение альфа от 1 до .1 в самой строке. например, отправной точкой будет альфа-значение 1, а конечная точка может быть .1 – jdross

+0

Изменение альфы вдоль линии будет градиентом, и, к сожалению, эта способность не встроена в стандартные средства визуализации. Вам нужно будет создать настраиваемый визуализатор наложения и выполнить чертеж вручную. [Это] (http://stackoverflow.com/a/20159374/467105) и [this] (http://stackoverflow.com/a/19377748/467105) может помочь вам начать работу, если вы хотите продолжить этот путь. – Anna

+0

Хорошее объяснение @Anna –

Смежные вопросы