Пунктирная линия на карте
Я могу создать линию между двумя точками довольно легко с помощью приведенного ниже кода (часть его в любом случае) как я могу сделать линию пунктирной вместо сплошной? Также можно ли изменить непрозрачность, чем длиннее линия?
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id < MKOverlay >)overlay
{
MKPolylineRenderer *renderer =[[MKPolylineRenderer alloc] initWithPolyline:overlay];
renderer.strokeColor = [UIColor orangeColor];
renderer.lineWidth = 3.0;
return renderer;
}
2 ответов
можно использовать lineDashPattern
свойство для создания шаблона, который вы хотите для линии.
MKPolylineRenderer
является наследником MKOverlayPathRenderer
который имеет это свойство и несколько других (см. ссылку на документацию).
например, это устанавливает шаблон на линию длиной 2 точки, за которой следует разрыв в 5 точек. Рисунок повторяется по всей длине полилинии.
renderer.lineDashPattern = @[@2, @5];
Для непрозрачности, вы можете либо применить Альфа the strokeColor
:
renderer.strokeColor = [[UIColor orangeColor] colorWithAlphaComponent:0.5];
и выберите alpha
свойства:
renderer.alpha = 0.5;
не уверен, что вы подразумеваете под "управлять" часть вопроса.
ответ в Swift
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
guard let polyline = overlay as? MKPolyline else {
fatalError("Not a MKPolyline")
}
let renderer = MKPolylineRenderer(polyline: polyline)
renderer.strokeColor = #colorLiteral(red: 0.1764705926, green: 0.4980392158, blue: 0.7568627596, alpha: 1)
renderer.lineWidth = 8
renderer.lineDashPattern = [0, 10]
return renderer
}