我可以使用下面的代码(无论如何都可以)轻松地在两点之间创建一条线。我怎样才能使线条点缀而不是实线?也可以在线条越长的时候改变不透明度吗?
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id < MKOverlay >)overlay
{
MKPolylineRenderer *renderer =[[MKPolylineRenderer alloc] initWithPolyline:overlay];
renderer.strokeColor = [UIColor orangeColor];
renderer.lineWidth = 3.0;
return renderer;
}
答案 0 :(得分:45)
您可以使用lineDashPattern
属性为线条创建所需的图案。
MKPolylineRenderer
是MKOverlayPathRenderer
的子类,具有该属性和其他一些属性(请参阅文档的链接)。
例如,这会将模式设置为2点长的行,然后是5点间隙。在折线的整个长度上重复该图案。
renderer.lineDashPattern = @[@2, @5];
对于不透明度,您可以将alpha应用于strokeColor
:
renderer.strokeColor = [[UIColor orangeColor] colorWithAlphaComponent:0.5];
或设置alpha
属性:
renderer.alpha = 0.5;
不确定你的意思是“线越长”是问题的一部分。
答案 1 :(得分:3)
在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
}