14

我可以使用下面的代码相当容易地在两点之间创建一条线(无论如何都是它的一部分)我怎样才能使线点而不是实线?线条越长,是否可以改变不透明度?

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

    return renderer;
}
4

2 回答 2

49

您可以使用该lineDashPattern属性为线条创建所需的图案。

MKPolylineRendererMKOverlayPathRenderer具有该属性和其他一些属性的子类(请参阅文档的链接)。

例如,这会将模式设置为 2 点长的线,后跟 5 点的间隙。该模式在折线的整个长度上重复。

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


对于不透明度,您可以将 alpha 应用于strokeColor

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

或设置alpha属性:

renderer.alpha = 0.5;

不确定问题的“线路越长”是什么意思。

于 2013-12-13T18:10:30.823 回答
6

用 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
} 

在此处输入图像描述

于 2018-04-05T11:07:22.300 回答